package main import ( "testing" "voicesnap/internal/textoutput" ) func TestTextOutputUpdatePayloadExposesFallbackStateWithoutSensitiveText(t *testing.T) { payload := textOutputUpdatePayload(textoutput.Result{ OK: false, Text: "Private voice terminal.", Method: "ax_value_replacement", Target: `app=Terminal title="Secret Document.txt" role=AXTextArea`, NeedsPermission: true, FallbackAvailable: true, }) if payload["ok"] != false { t.Fatalf("ok = %v, want false", payload["ok"]) } if payload["needsPermission"] != true { t.Fatalf("needsPermission = %v, want true", payload["needsPermission"]) } if payload["fallbackAvailable"] != true { t.Fatalf("fallbackAvailable = %v, want true", payload["fallbackAvailable"]) } if payload["hasText"] != true { t.Fatalf("hasText = %v, want true", payload["hasText"]) } for _, key := range []string{"text", "transcript", "target", "method", "message"} { if _, ok := payload[key]; ok { t.Fatalf("payload should not expose %q", key) } } }