Files
isphere-ai-bridge/internal/tools/send_message_gate_test.go
2026-07-10 20:35:46 +08:00

34 lines
1.6 KiB
Go

package tools
import "testing"
func TestLoadSendMessageGatePolicy(t *testing.T) {
cases := []struct {
name string
env map[string]string
evidence bool
connector bool
wantAllowed bool
wantReason string
}{
{name: "default disabled", env: map[string]string{}, evidence: false, connector: false, wantAllowed: false, wantReason: "send_disabled_by_default"},
{name: "env set but evidence missing", env: map[string]string{"ISPHERE_SEND_PRODUCTION_ENABLED": "1"}, evidence: false, connector: true, wantAllowed: false, wantReason: "send_evidence_missing"},
{name: "evidence pass but connector missing", env: map[string]string{"ISPHERE_SEND_PRODUCTION_ENABLED": "1"}, evidence: true, connector: false, wantAllowed: false, wantReason: "send_connector_missing"},
{name: "all pass", env: map[string]string{"ISPHERE_SEND_PRODUCTION_ENABLED": "1"}, evidence: true, connector: true, wantAllowed: true, wantReason: "send_gate_passed"},
}
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
got := LoadSendMessageGatePolicy(tc.env, tc.evidence, tc.connector)
if got.ProductionAllowed != tc.wantAllowed || got.ReasonCode != tc.wantReason {
t.Fatalf("LoadSendMessageGatePolicy() = %+v, want allowed=%v reason=%q", got, tc.wantAllowed, tc.wantReason)
}
if got.ReasonMessage == "" {
t.Fatalf("ReasonMessage is empty for %+v", got)
}
if got.EvidenceGatePass != tc.evidence || got.ConnectorConfigured != tc.connector {
t.Fatalf("evidence/connector fields = %+v, want evidence=%v connector=%v", got, tc.evidence, tc.connector)
}
})
}
}