package configread import ( "encoding/json" "os" "testing" "git.ipao.vip/rogee/go-sip/internal/contract" ) func TestSIPOptionalRevisionAndCaseInsensitiveSelectors(t *testing.T) { raw, err := os.ReadFile("../../contracts/schema/examples/config-read-sip.json") if err != nil { t.Fatal(err) } var sip map[string]any if err := json.Unmarshal(raw, &sip); err != nil { t.Fatal(err) } delete(sip, "revision") for _, x := range sip["trunks"].([]any) { tr := x.(map[string]any) tr["transport"] = "UdP" tr["auth_mode"] = "IP" } body, _ := json.Marshal(sip) if err := contract.ValidateCurrent("config-read", body); err != nil { t.Fatalf("optional revision/case-insensitive SIP rejected: %v", err) } } func TestTaskDiscoveryIgnoresOnlyNamedLegacyMetadata(t *testing.T) { raw, err := os.ReadFile("../../contracts/schema/examples/task-discovery-page.json") if err != nil { t.Fatal(err) } var page map[string]any if err := json.Unmarshal(raw, &page); err != nil { t.Fatal(err) } page["schema_version"] = map[string]any{"ignored": true} for _, x := range page["tasks"].([]any) { x.(map[string]any)["control_seq"] = nil } body, _ := json.Marshal(page) if err := contract.ValidateCurrent("task-discovery", body); err != nil { t.Fatalf("named metadata must be ignored: %v", err) } page["unexpected_business_field"] = true body, _ = json.Marshal(page) if err := contract.ValidateCurrent("task-discovery", body); err == nil { t.Fatal("unrelated unknown fields must still be rejected") } }