61 lines
2.4 KiB
Go
61 lines
2.4 KiB
Go
// Code generated by seatgen from the seat definitions; DO NOT EDIT.
|
|
|
|
package meshnodeenroller
|
|
|
|
import (
|
|
"encoding/json"
|
|
"reflect"
|
|
"regexp"
|
|
"testing"
|
|
)
|
|
|
|
// TestFixtures reads every fixture of seats/mesh-node-enroller/fixtures: each decodes into its type, a field the type does not
|
|
// know is dropped (ADR 0608 §6), and it reads back as its wire says; each subject named is the contract's.
|
|
func TestFixtures(t *testing.T) {
|
|
cases := []struct {
|
|
name, subject, given, wire string
|
|
decode func([]byte) (any, error)
|
|
subjectIs *regexp.Regexp
|
|
}{
|
|
{name: "node-enrolled carries the enrolment", subject: "mesh.seat.mesh-node-enroller.event.node-enrolled", given: "{\"address\":\"10.0.0.9\",\"node\":\"newbox\",\"stage\":\"live\"}", wire: "{\"address\":\"10.0.0.9\",\"node\":\"newbox\",\"stage\":\"live\"}",
|
|
decode: func(b []byte) (any, error) { var v NodeEnrolledEvent; err := json.Unmarshal(b, &v); return v, err }, subjectIs: regexp.MustCompile("^mesh\\.seat\\.mesh-node-enroller\\.event\\.node-enrolled$")},
|
|
{name: "an open enrolment", subject: "", given: "{\"address\":\"10.0.0.9\",\"node\":\"newbox\",\"stage\":\"live\",\"v\":1}", wire: "{\"address\":\"10.0.0.9\",\"node\":\"newbox\",\"stage\":\"live\",\"v\":1}",
|
|
decode: func(b []byte) (any, error) {
|
|
var v EnrolmentsByNodeNodeValue
|
|
err := json.Unmarshal(b, &v)
|
|
return v, err
|
|
}, subjectIs: nil},
|
|
{name: "a reserved address", subject: "", given: "{\"node\":\"newbox\",\"v\":1}", wire: "{\"node\":\"newbox\",\"v\":1}",
|
|
decode: func(b []byte) (any, error) {
|
|
var v EnrolmentsByAddressAddressValue
|
|
err := json.Unmarshal(b, &v)
|
|
return v, err
|
|
}, subjectIs: nil},
|
|
}
|
|
for _, c := range cases {
|
|
v, err := c.decode([]byte(c.given))
|
|
if err != nil {
|
|
t.Errorf("%s: does not decode: %v", c.name, err)
|
|
continue
|
|
}
|
|
back, err := json.Marshal(v)
|
|
if err != nil {
|
|
t.Errorf("%s: does not encode: %v", c.name, err)
|
|
continue
|
|
}
|
|
var got, want any
|
|
if err := json.Unmarshal(back, &got); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := json.Unmarshal([]byte(c.wire), &want); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !reflect.DeepEqual(got, want) {
|
|
t.Errorf("%s: reads back as %s, want %s", c.name, back, c.wire)
|
|
}
|
|
if c.subjectIs != nil && !c.subjectIs.MatchString(c.subject) {
|
|
t.Errorf("%s: subject %q is not the contract's %s", c.name, c.subject, c.subjectIs)
|
|
}
|
|
}
|
|
}
|