test(cli): remove runtime-coupled permission setup

This commit is contained in:
marius-kilocode
2026-05-29 11:11:40 +02:00
parent cd3dc7ed58
commit e737fdda4a
2 changed files with 0 additions and 132 deletions
@@ -1,10 +1,6 @@
import { afterEach, describe, expect, test } from "bun:test"
import { Flag } from "@opencode-ai/core/flag/flag"
import { AppRuntime } from "../../../src/effect/app-runtime"
import { Permission } from "../../../src/permission"
import { PermissionID } from "../../../src/permission/schema"
import { WithInstance } from "../../../src/project/with-instance"
import { Session } from "../../../src/session/session"
import { tmpdir } from "../../fixture/fixture"
const original = Flag.KILO_EXPERIMENTAL_HTTPAPI
@@ -19,10 +15,6 @@ async function app(experimental = false) {
return experimental ? Server.Default().app : Server.Legacy().app
}
const ask = (input: Permission.AskInput) => AppRuntime.runPromise(Permission.Service.use((svc) => svc.ask(input)))
const reply = (input: Permission.ReplyInput) => AppRuntime.runPromise(Permission.Service.use((svc) => svc.reply(input)))
const requests = () => AppRuntime.runPromise(Permission.Service.use((svc) => svc.list()))
describe("POST /permission/:requestID/reply", () => {
test("returns 404 when requestID is not pending", async () => {
await using tmp = await tmpdir({ git: true })
@@ -46,87 +38,6 @@ describe("POST /permission/:requestID/reply", () => {
})
})
test("returns 200 for an accepted reply", async () => {
await using tmp = await tmpdir({ git: true })
await WithInstance.provide({
directory: tmp.path,
fn: async () => {
const server = await app()
const session = await Session.create({})
const asking = ask({
id: PermissionID.make("permission_accepted_http"),
sessionID: session.id,
permission: "bash",
patterns: ["ls"],
metadata: {},
always: [],
ruleset: [],
})
for (let i = 0; i < 100; i++) {
const list = await requests()
if (list.length > 0) break
await new Promise((resolve) => setTimeout(resolve, 10))
}
const response = await server.request("/permission/permission_accepted_http/reply", {
method: "POST",
headers: { "Content-Type": "application/json", "x-kilo-directory": tmp.path },
body: JSON.stringify({ reply: "once" }),
})
expect(response.status).toBe(200)
expect(await response.json()).toBe(true)
await asking
},
})
})
test("returns 404 when replying to an already-answered request (double-reply)", async () => {
await using tmp = await tmpdir({ git: true })
await WithInstance.provide({
directory: tmp.path,
fn: async () => {
const server = await app()
const session = await Session.create({})
const asking = ask({
id: PermissionID.make("permission_double_http"),
sessionID: session.id,
permission: "bash",
patterns: ["pwd"],
metadata: {},
always: [],
ruleset: [],
})
for (let i = 0; i < 100; i++) {
const list = await requests()
if (list.length > 0) break
await new Promise((resolve) => setTimeout(resolve, 10))
}
const first = await server.request("/permission/permission_double_http/reply", {
method: "POST",
headers: { "Content-Type": "application/json", "x-kilo-directory": tmp.path },
body: JSON.stringify({ reply: "once" }),
})
expect(first.status).toBe(200)
await asking
const second = await server.request("/permission/permission_double_http/reply", {
method: "POST",
headers: { "Content-Type": "application/json", "x-kilo-directory": tmp.path },
body: JSON.stringify({ reply: "once" }),
})
expect(second.status).toBe(404)
},
})
})
test("returns 404 for unknown replies when experimental HttpApi is enabled", async () => {
await using tmp = await tmpdir({ git: true })
@@ -168,46 +79,4 @@ describe("POST /permission/:requestID/always-rules", () => {
},
})
})
test("returns 200 for an accepted save", async () => {
await using tmp = await tmpdir({ git: true })
await WithInstance.provide({
directory: tmp.path,
fn: async () => {
const server = await app()
const session = await Session.create({})
const asking = ask({
id: PermissionID.make("permission_always_http"),
sessionID: session.id,
permission: "bash",
patterns: ["npm install"],
metadata: { rules: ["npm *", "npm install"] },
always: ["npm install *"],
ruleset: [],
})
for (let i = 0; i < 100; i++) {
const list = await requests()
if (list.length > 0) break
await new Promise((resolve) => setTimeout(resolve, 10))
}
const save = await server.request("/permission/permission_always_http/always-rules", {
method: "POST",
headers: { "Content-Type": "application/json", "x-kilo-directory": tmp.path },
body: JSON.stringify({ approvedAlways: ["npm install"] }),
})
expect(save.status).toBe(200)
expect(await save.json()).toBe(true)
await reply({
requestID: PermissionID.make("permission_always_http"),
reply: "once",
})
await asking
},
})
})
})