MCPcopy
hub / github.com/larksuite/cli / TestScanForSafety_ModeBlock_WithAlert

Function TestScanForSafety_ModeBlock_WithAlert

internal/output/emit_test.go:61–92  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

59}
60
61func TestScanForSafety_ModeBlock_WithAlert(t *testing.T) {
62 t.Setenv("LARKSUITE_CLI_CONTENT_SAFETY_MODE", "block")
63 alert := &extcs.Alert{Provider: "mock", MatchedRules: []string{"r1"}}
64 mp := &mockProvider{name: "mock", alert: alert}
65 extcs.Register(mp)
66 defer extcs.Register(nil)
67
68 var buf bytes.Buffer
69 result := ScanForSafety("lark-cli im +test", map[string]any{}, &buf)
70 if !result.Blocked {
71 t.Error("block mode with alert should set Blocked=true")
72 }
73 if result.BlockErr == nil {
74 t.Error("block mode with alert should have BlockErr")
75 }
76 var safetyErr *errs.ContentSafetyError
77 if !errors.As(result.BlockErr, &safetyErr) {
78 t.Fatalf("BlockErr should be *ContentSafetyError, got %T", result.BlockErr)
79 }
80 if safetyErr.Category != errs.CategoryPolicy || safetyErr.Subtype != errs.SubtypeContentSafety {
81 t.Errorf("problem = %s/%s, want %s/%s", safetyErr.Category, safetyErr.Subtype, errs.CategoryPolicy, errs.SubtypeContentSafety)
82 }
83 if got := ExitCodeOf(result.BlockErr); got != ExitContentSafety {
84 t.Errorf("exit code = %d, want %d", got, ExitContentSafety)
85 }
86 if len(safetyErr.Rules) != 1 || safetyErr.Rules[0] != "r1" {
87 t.Errorf("rules = %v, want [r1]", safetyErr.Rules)
88 }
89 if !errors.Is(result.BlockErr, errBlocked) {
90 t.Error("BlockErr should preserve errBlocked cause")
91 }
92}
93
94func TestScanForSafety_NoProvider(t *testing.T) {
95 t.Setenv("LARKSUITE_CLI_CONTENT_SAFETY_MODE", "warn")

Callers

nothing calls this directly

Calls 6

ScanForSafetyFunction · 0.85
ExitCodeOfFunction · 0.85
AsMethod · 0.80
IsMethod · 0.80
RegisterMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected