7 "github.com/stretchr/testify/require"
10 func TestHubSnapshotPreservesDiagnosticsAndExpiry(t *testing.T) {
11 now := time.Date(2026, 1, 1, 0, 0, 0, 0, time.UTC)
12 lifetime, err := HubStatusLifetime(time.Minute)
13 require.NoError(t, err)
14 require.Equal(t, 170*time.Second, lifetime)
16 deadline := now.Add(lifetime)
19 payload := HubStatusPayload{
21 Address: "example.com",
27 PairedDevices: &count,
33 Deadline: now.Add(time.Minute),
36 Diagnostics: &HubDiagnostics{
39 TemperatureCelsius: &temperature,
42 publication, err := BuildHubStatus(deviceID, Metadata{
46 require.NoError(t, err)
48 parsed, err := ParseHubStatus(publication.Topic, publication.Data, false)
49 require.NoError(t, err)
50 require.Equal(t, payload, parsed.Payload)
51 require.Equal(t, &deadline, publication.ExpiresAt)
53 payload.Status = "unavailable"
54 _, err = BuildHubStatus(deviceID, Metadata{
58 require.NoError(t, err)
60 nonUTC := now.In(time.FixedZone("test", 3600))
61 payload.UpdatedAt = &nonUTC
62 _, err = BuildHubStatus(deviceID, Metadata{
68 for _, interval := range []time.Duration{0, -1, 1<<63 - 1} {
69 _, err = HubStatusLifetime(interval)