40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import { describe, expect, it } from "bun:test";
|
|
|
|
import {
|
|
canAutoApprovePermission,
|
|
resolvePermissionApproval,
|
|
} from "../../src/routes/chatPermissionPolicy.js";
|
|
|
|
describe("permission approval policy", () => {
|
|
it.each([
|
|
"show_chart",
|
|
"web_search",
|
|
])("allows low-risk permission %s", (permission) => {
|
|
expect(canAutoApprovePermission(permission)).toBe(true);
|
|
});
|
|
|
|
it.each([
|
|
"bash",
|
|
"edit",
|
|
"external_directory",
|
|
"store_render_ref",
|
|
"tjwater_server_query",
|
|
"tjwater_tjwater_server_query",
|
|
])(
|
|
"requires confirmation for permission %s",
|
|
(permission) => {
|
|
expect(canAutoApprovePermission(permission)).toBe(false);
|
|
},
|
|
);
|
|
|
|
it("resolves request, auto, and always modes", () => {
|
|
expect(resolvePermissionApproval("request", "show_chart").autoApprove).toBe(false);
|
|
expect(resolvePermissionApproval("auto", "show_chart").autoApprove).toBe(true);
|
|
expect(resolvePermissionApproval("auto", "bash").autoApprove).toBe(false);
|
|
expect(resolvePermissionApproval("always", "bash")).toMatchObject({
|
|
autoApprove: true,
|
|
title: "已按始终允许模式放行",
|
|
});
|
|
});
|
|
});
|