返回 DeepSeek-Reasonix
write_access_test.go
根目录 / internal / bot / write_access_test.go
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
36 lines GO