]> git.giacomolli.uk - onehouse/blobdiff - protocol/envelope_test.go
Build typed MQTT publications
[onehouse] / protocol / envelope_test.go
index dfb060035cc6c5fc690c6ff56ec73c5a8729df3a..4b55451fbffdf165bd37d5c7adb66b11b567a041 100644 (file)
@@ -10,7 +10,13 @@ import (
 
 func TestEnvelopeRoundTripPreservesMetadata(t *testing.T) {
        now := time.Date(2026, 1, 1, 0, 0, 0, 0, time.UTC)
-       metadata := Metadata{MessageID: messageID, SentAt: &now, ExpiresAt: &now, CorrelationID: commandID, CausationID: deviceID}
+       metadata := Metadata{
+               MessageID:     messageID,
+               SentAt:        &now,
+               ExpiresAt:     &now,
+               CorrelationID: commandID,
+               CausationID:   deviceID,
+       }
        data, err := EncodeEnvelope(metadata, map[string]bool{"value": true})
        require.NoError(t, err)
 
@@ -31,18 +37,52 @@ func TestEnvelopeRejectsInvalidWireData(t *testing.T) {
                name string
                data string
        }{
-               {name: "rejects unsupported schema", data: strings.Replace(valid, `"schema":1`, `"schema":2`, 1)},
-               {name: "rejects unknown fields", data: strings.Replace(valid, `"payload":{}`, `"payload":{},"extra":true`, 1)},
-               {name: "rejects missing payload", data: `{"schema":1,"message_id":"` + messageID + `"}`},
-               {name: "rejects null payload", data: strings.Replace(valid, `"payload":{}`, `"payload":null`, 1)},
-               {name: "rejects non-object payload", data: strings.Replace(valid, `"payload":{}`, `"payload":[]`, 1)},
-               {name: "rejects missing identity", data: `{"schema":1,"payload":{}}`},
-               {name: "rejects invalid correlation", data: strings.Replace(valid, `"payload":{}`, `"payload":{},"correlation_id":"bad"`, 1)},
-               {name: "rejects invalid causation", data: strings.Replace(valid, `"payload":{}`, `"payload":{},"causation_id":"bad"`, 1)},
-               {name: "rejects non-UTC time", data: strings.Replace(valid, `"payload":{}`, `"payload":{},"sent_at":"2026-01-01T01:00:00+01:00"`, 1)},
-               {name: "rejects invalid expiry", data: strings.Replace(valid, `"payload":{}`, `"payload":{},"expires_at":"bad"`, 1)},
-               {name: "rejects trailing JSON", data: valid + `{}`},
+               {
+                       name: "rejects unsupported schema",
+                       data: strings.Replace(valid, `"schema":1`, `"schema":2`, 1),
+               },
+               {
+                       name: "rejects unknown fields",
+                       data: strings.Replace(valid, `"payload":{}`, `"payload":{},"extra":true`, 1),
+               },
+               {
+                       name: "rejects missing payload",
+                       data: `{"schema":1,"message_id":"` + messageID + `"}`,
+               },
+               {
+                       name: "rejects null payload",
+                       data: strings.Replace(valid, `"payload":{}`, `"payload":null`, 1),
+               },
+               {
+                       name: "rejects non-object payload",
+                       data: strings.Replace(valid, `"payload":{}`, `"payload":[]`, 1),
+               },
+               {
+                       name: "rejects missing identity",
+                       data: `{"schema":1,"payload":{}}`,
+               },
+               {
+                       name: "rejects invalid correlation",
+                       data: strings.Replace(valid, `"payload":{}`, `"payload":{},"correlation_id":"bad"`, 1),
+               },
+               {
+                       name: "rejects invalid causation",
+                       data: strings.Replace(valid, `"payload":{}`, `"payload":{},"causation_id":"bad"`, 1),
+               },
+               {
+                       name: "rejects non-UTC time",
+                       data: strings.Replace(valid, `"payload":{}`, `"payload":{},"sent_at":"2026-01-01T01:00:00+01:00"`, 1),
+               },
+               {
+                       name: "rejects invalid expiry",
+                       data: strings.Replace(valid, `"payload":{}`, `"payload":{},"expires_at":"bad"`, 1),
+               },
+               {
+                       name: "rejects trailing JSON",
+                       data: valid + `{}`,
+               },
        }
+
        for _, tc := range testCases {
                t.Run(tc.name, func(t *testing.T) {
                        _, err := ParseEnvelope([]byte(tc.data))