X-Git-Url: https://git.giacomolli.uk/onehouse/blobdiff_plain/a5486293282c47e6bca115c05ddde6e39ba4930c..1f9ad21ee18e1952cdcf3cec07314309e5c7d3d8:/driver/publisher_test.go?ds=inline diff --git a/driver/publisher_test.go b/driver/publisher_test.go index d1135b5..642f6ab 100644 --- a/driver/publisher_test.go +++ b/driver/publisher_test.go @@ -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 {