



















@@ -0,0 +1,62 @@
1+// @vitest-environment jsdom
2+import { describe, expect, it } from "vitest";
3+import { extractQuickSettingsSecurity } from "./app-render.ts";
4+import type { AppViewState } from "./app-view-state.ts";
5+6+function makeState(config: Record<string, unknown>): AppViewState {
7+return { configForm: config } as unknown as AppViewState;
8+}
9+10+describe("extractQuickSettingsSecurity", () => {
11+it("reads execPolicy from the canonical tools.exec.security path", () => {
12+const result = extractQuickSettingsSecurity(
13+makeState({ tools: { exec: { security: "full" } } }),
14+);
15+16+expect(result.execPolicy).toBe("full");
17+});
18+19+it("reads execPolicy from tools.exec.security when set to deny", () => {
20+const result = extractQuickSettingsSecurity(
21+makeState({ tools: { exec: { security: "deny" } } }),
22+);
23+24+expect(result.execPolicy).toBe("deny");
25+});
26+27+it("falls back to allowlist when tools.exec.security is missing", () => {
28+expect(extractQuickSettingsSecurity(makeState({})).execPolicy).toBe("allowlist");
29+expect(extractQuickSettingsSecurity(makeState({ tools: { exec: {} } })).execPolicy).toBe(
30+"allowlist",
31+);
32+});
33+34+it("ignores agents.defaults.exec.security because it is not a schema path", () => {
35+const result = extractQuickSettingsSecurity(
36+makeState({
37+tools: { exec: { security: "full" } },
38+agents: { defaults: { exec: { security: "deny" } } },
39+}),
40+);
41+42+expect(result.execPolicy).toBe("full");
43+});
44+45+it("does not treat agents.defaults.exec.security as a fallback", () => {
46+const result = extractQuickSettingsSecurity(
47+makeState({ agents: { defaults: { exec: { security: "full" } } } }),
48+);
49+50+expect(result.execPolicy).toBe("allowlist");
51+});
52+53+it("trims whitespace and ignores empty strings", () => {
54+expect(
55+extractQuickSettingsSecurity(makeState({ tools: { exec: { security: " full " } } }))
56+.execPolicy,
57+).toBe("full");
58+expect(
59+extractQuickSettingsSecurity(makeState({ tools: { exec: { security: " " } } })).execPolicy,
60+).toBe("allowlist");
61+});
62+});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。