| 1 | package bot |
| 2 | |
| 3 | import ( |
| 4 | "io" |
| 5 | "log/slog" |
| 6 | "testing" |
| 7 | |
| 8 | "reasonix/internal/event" |
| 9 | "reasonix/internal/sandbox" |
| 10 | ) |
| 11 | |
| 12 | func (c *blockingApprovalController) ResolveApproval(id string, allow bool, scope sandbox.ApprovalScope) error { |
| 13 | c.Approve(id, allow, scope != sandbox.ApprovalScopeOnce, scope == sandbox.ApprovalScopeProject) |
| 14 | return nil |
| 15 | } |
| 16 | |
| 17 | func TestGatewayNormalizesWriteAccessShortcuts(t *testing.T) { |
| 18 | logger := slog.New(slog.NewTextHandler(io.Discard, nil)) |
| 19 | gw := NewGateway(GatewayConfig{}, nil, logger) |
| 20 | key := "session-key" |
| 21 | gw.controllers[key] = &sessionState{ |
| 22 | pendingApprovals: map[string]event.Approval{ |
| 23 | "7": {ID: "7", Tool: "bash", Kind: event.ApprovalKindWriteAccess}, |
| 24 | }, |
| 25 | lastApprovalID: "7", |
| 26 | } |
| 27 | got, ok := gw.normalizeApprovalShortcut(key, "2") |
| 28 | if !ok || got != "/approve-session 7" { |
| 29 | t.Fatalf("write-access 2 = %q,%v; want /approve-session 7", got, ok) |
| 30 | } |
| 31 | got, ok = gw.normalizeApprovalShortcut(key, "3") |
| 32 | if !ok || got != "/deny 7" { |
| 33 | t.Fatalf("write-access 3 = %q,%v; want /deny 7", got, ok) |
| 34 | } |
| 35 | } |
| 36 |