Files
go-sip/contracts/current_read_test.go
T

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