50 lines
1.7 KiB
Go
50 lines
1.7 KiB
Go
package contracts_test
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"git.ipao.vip/rogee/go-sip/contracts"
|
|
)
|
|
|
|
func TestPinnedUpstreamBundleRemainsReadable(t *testing.T) {
|
|
if body, err := contracts.Read("mq.schema.json"); err != nil || len(body) == 0 {
|
|
t.Fatalf("pinned upstream schema missing: bytes=%d err=%v", len(body), err)
|
|
}
|
|
var schema any
|
|
if err := contracts.ReadJSON("mq.schema.json", &schema); err != nil || schema == nil {
|
|
t.Fatalf("pinned upstream schema is invalid: %v", err)
|
|
}
|
|
if _, err := contracts.Read("missing-contract.json"); err == nil {
|
|
t.Fatal("missing upstream source was accepted")
|
|
}
|
|
}
|
|
|
|
func TestRuntimeBundleExcludesHistoricalLocalContracts(t *testing.T) {
|
|
for _, name := range []string{
|
|
"local/v0.1/call-result-v0.1-proposal.schema.json",
|
|
"local/v0.2/config-read-v0.2.schema.json",
|
|
"local/v0.3/config-read-v0.3.schema.json",
|
|
"local/v0.4/call-execute-v0.4-proposal.schema.json",
|
|
} {
|
|
if _, err := contracts.Files.ReadFile(name); err == nil {
|
|
t.Fatalf("historical contract %s is still embedded in the active runtime", name)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestCurrentContractRead(t *testing.T) {
|
|
for _, name := range []string{"config-read.schema.json", "task-discovery.schema.json", "mq.schema.json", "mq-topology.json", "manifest.json"} {
|
|
data, err := contracts.ReadCurrent(name)
|
|
if err != nil || len(data) == 0 {
|
|
t.Fatalf("read %s: %v", name, err)
|
|
}
|
|
}
|
|
for _, name := range []string{"", "v0.4/task-discovery-v0.4-proposal.schema.json", "../upstream/v1/mq.schema.json", "examples/mq-execute.json", "arbitrary.json"} {
|
|
_, err := contracts.ReadCurrent(name)
|
|
if err == nil || !strings.Contains(err.Error(), "invalid") {
|
|
t.Fatalf("unexpected read of %q: %v", name, err)
|
|
}
|
|
}
|
|
}
|