Files
go-sip/internal/contract/current_test.go
T

42 lines
1.2 KiB
Go

package contract
import (
"os"
"path/filepath"
"strings"
"testing"
)
func TestValidateCurrent(t *testing.T) {
for _, tc := range []struct {
name string
file string
valid bool
}{
{"config-read", "config-read-task-asr.json", true},
{"config-read", "config-read-task-full.json", true},
{"config-read", "config-read-sip.json", true},
{"config-read", "config-read-providers.json", true},
{"config-read", "config-read-quota.json", true},
{"task-discovery", "task-discovery-end.json", true},
{"mq", "mq-execute.json", true},
{"config-read", "invalid/config-read-string-tenant.json", false},
{"mq", "invalid/mq-legacy-schema-version.json", false},
} {
t.Run(tc.file, func(t *testing.T) {
raw, err := os.ReadFile(filepath.Join("..", "..", "contracts", "local", "examples", tc.file))
if err != nil {
t.Fatal(err)
}
if err := ValidateCurrent(tc.name, raw); (err == nil) != tc.valid {
t.Fatalf("valid=%v, err=%v", tc.valid, err)
}
})
}
for _, name := range []string{"", "config-read-v0.3", "../upstream/v1/mq"} {
if err := ValidateCurrent(name, []byte(`{}`)); err == nil || !strings.Contains(err.Error(), "invalid") {
t.Fatalf("accepted unknown contract %q: %v", name, err)
}
}
}