55 lines
1.5 KiB
Go
55 lines
1.5 KiB
Go
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")
|
|
}
|
|
}
|