// Code generated by seatgen from the seat definitions; DO NOT EDIT. package meshconfig import ( "encoding/json" "reflect" "regexp" "testing" ) // TestFixtures reads every fixture of seats/mesh-config/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: "config-changed, unchanged", subject: "mesh.mod.mesh-config.event.config-changed", given: "{\"key\":\"x\"}", wire: "{\"key\":\"x\"}", decode: func(b []byte) (any, error) { var v map[string]any; err := json.Unmarshal(b, &v); return v, err }, subjectIs: regexp.MustCompile("^mesh\\.mod\\.[a-z0-9-]+\\.event\\.config-changed$")}, {name: "renamed", subject: "mesh.mod.mesh-config.event.renamed", given: "{\"at\":\"2026-11-04T12:00:00Z\",\"from\":\"old-key\",\"module\":\"messenger\",\"to\":\"new-key\"}", wire: "{\"at\":\"2026-11-04T12:00:00Z\",\"from\":\"old-key\",\"module\":\"messenger\",\"to\":\"new-key\"}", decode: func(b []byte) (any, error) { var v RenamedHolderEvent; err := json.Unmarshal(b, &v); return v, err }, subjectIs: regexp.MustCompile("^mesh\\.mod\\.[a-z0-9-]+\\.event\\.renamed$")}, {name: "retiring", subject: "mesh.mod.mesh-config.event.retiring", given: "{\"ask\":\"a1\",\"key\":\"old-key\",\"kind\":\"value\",\"module\":\"messenger\",\"since\":\"2026-11-04T12:00:00Z\"}", wire: "{\"ask\":\"a1\",\"key\":\"old-key\",\"kind\":\"value\",\"module\":\"messenger\",\"since\":\"2026-11-04T12:00:00Z\"}", decode: func(b []byte) (any, error) { var v RetiringHolderEvent; err := json.Unmarshal(b, &v); return v, err }, subjectIs: regexp.MustCompile("^mesh\\.mod\\.[a-z0-9-]+\\.event\\.retiring$")}, {name: "retired", subject: "mesh.mod.mesh-config.event.retired", given: "{\"ask\":\"a1\",\"module\":\"messenger\",\"name\":\"old-key\",\"node\":\"ace\"}", wire: "{\"ask\":\"a1\",\"module\":\"messenger\",\"name\":\"old-key\",\"node\":\"ace\"}", decode: func(b []byte) (any, error) { var v RetiredHolderEvent; err := json.Unmarshal(b, &v); return v, err }, subjectIs: regexp.MustCompile("^mesh\\.mod\\.[a-z0-9-]+\\.event\\.retired$")}, {name: "renames answers the open windows", subject: "", given: "{\"renames\":[{\"at\":\"2026-11-04T12:00:00Z\",\"from\":\"old-key\",\"module\":\"messenger\",\"open\":[\"g14\"],\"to\":\"new-key\"}]}", wire: "{\"renames\":[{\"at\":\"2026-11-04T12:00:00Z\",\"from\":\"old-key\",\"module\":\"messenger\",\"open\":[\"g14\"],\"to\":\"new-key\"}]}", decode: func(b []byte) (any, error) { var v RenamesAnswer; 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) } } }