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) } }) } }