]> git.giacomolli.uk - onehouse/blobdiff - driver/publisher_test.go
Exchange bounded Alamo gateway requests
[onehouse] / driver / publisher_test.go
index d1135b5ac25b92d4ad51c89d8b8391647dd4fc41..642f6ab8e526bdc20a2c8f14dc8045fc7a26c8f7 100644 (file)
@@ -342,6 +342,35 @@ func TestPublisherPreservesDirectMeasurementEvidenceAtRepeatDeadline(t *testing.
        }
 }
 
+func TestPublisherRunsAsDriverAndRefreshesOnReconnect(t *testing.T) {
+       synctest.Test(t, func(t *testing.T) {
+               ctx, cancel := context.WithCancel(t.Context())
+               defer cancel()
+
+               transport := &recordingTransport{}
+               publisher := NewPublisher(transport)
+               require.NoError(t, publisher.Reported(ctx, testDeviceID, "relay", protocol.Metadata{}, protocol.ValuePayload{Value: json.RawMessage("true")}))
+
+               connected := make(chan struct{}, 1)
+               finished := make(chan error, 1)
+               go func() {
+                       finished <- Run(ctx, []Driver{publisher}, connected)
+               }()
+
+               synctest.Wait()
+
+               connected <- struct{}{}
+
+               synctest.Wait()
+
+               packets := transport.messages()
+               require.Len(t, packets, 2)
+               require.NotEqual(t, packets[0].Data, packets[1].Data)
+               cancel()
+               require.NoError(t, <-finished)
+       })
+}
+
 type waitingTransport struct{}
 
 func (p *waitingTransport) Publish(ctx context.Context, _ protocol.Publication) error {