



























11/** Tests Gateway exec approval to ACP permission relay helpers. */
22import { describe, expect, it } from "vitest";
33import {
4-buildAcpPermissionOptions,
54buildAcpPermissionRequest,
6-normalizeGatewayExecApprovalDecisions,
75parseGatewayExecApprovalEventData,
86parseGatewayExecApprovalRequestEventPayload,
97resolveGatewayDecisionFromPermissionOutcome,
108} from "./permission-relay.js";
11912-describe("ACP permission relay helpers", () => {
13-it("maps Gateway exec approval decisions to ACP permission options", () => {
14-expect(buildAcpPermissionOptions(["allow-once", "allow-always", "deny"])).toEqual([
15-{
16-optionId: "allow-once",
17-name: "Allow once",
18-kind: "allow_once",
19-},
20-{
21-optionId: "allow-always",
22-name: "Allow always",
23-kind: "allow_always",
24-},
25-{
26-optionId: "deny",
27-name: "Deny",
28-kind: "reject_once",
29-},
30-]);
31-});
10+function buildOptionsForAllowedDecisions(allowedDecisions: unknown) {
11+return buildAcpPermissionRequest({
12+sessionId: "session-1",
13+event: {
14+approvalId: "approval-1",
15+command: "echo ok",
16+},
17+details: { allowedDecisions },
18+}).options;
19+}
322021+describe("ACP permission relay helpers", () => {
3322it("filters unknown decisions and falls back to allow-once plus deny", () => {
34-expect(normalizeGatewayExecApprovalDecisions(["allow-once", "bogus", "deny"])).toEqual([
35-"allow-once",
36- "deny",
37-]);
38-expect(normalizeGatewayExecApprovalDecisions(["bogus"])).toEqual(["allow-once", "deny"]);
39-expect(normalizeGatewayExecApprovalDecisions(undefined)).toEqual(["allow-once", "deny"]);
23+const optionIds = (allowedDecisions: unknown) =>
24+buildOptionsForAllowedDecisions(allowedDecisions).map((option) => option.optionId);
25+26+expect(optionIds(["allow-once", "bogus", "deny"])).toEqual(["allow-once", "deny"]);
27+expect(optionIds(["bogus"])).toEqual(["allow-once", "deny"]);
28+expect(optionIds(undefined)).toEqual(["allow-once", "deny"]);
4029});
41304231it("builds a request_permission payload from Gateway approval data", () => {
@@ -132,7 +121,7 @@ describe("ACP permission relay helpers", () => {
132121});
133122134123it("maps selected ACP outcomes back to Gateway decisions", () => {
135-const options = buildAcpPermissionOptions(["allow-once", "allow-always", "deny"]);
124+const options = buildOptionsForAllowedDecisions(["allow-once", "allow-always", "deny"]);
136125137126expect(
138127resolveGatewayDecisionFromPermissionOutcome(
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。