package dbreads import ( "bytes" "strings" "testing" "time" ) func TestIDsAreDbrAnd26Base32(t *testing.T) { t.Parallel() id, err := NewID(bytes.NewReader(make([]byte, 16))) if err != nil || id != "dbr_aaaaaaaaaaaaaaaaaaaaaaaaaa" || !ValidID(id) { t.Fatalf("NewID = %q, %v", id, err) } minted, err := MintID() if err != nil || !ValidID(minted) { t.Fatalf("MintID = %q, %v", minted, err) } for _, bad := range []string{"", "run_aaaaaaaaaaaaaaaaaaaaaaaaaa", "dbr_AAAAAAAAAAAAAAAAAAAAAAAAAA", "dbr_aaaa", "queue", "dbr_aaaaaaaaaaaaaaaaaaaaaaaaa/"} { if ValidID(bad) { t.Errorf("ValidID(%q) = true", bad) } } } func TestKeysLiveUnderOnePrefix(t *testing.T) { t.Parallel() id := "dbr_aaaaaaaaaaaaaaaaaaaaaaaaaa" for _, k := range []string{RequestKey(id), PickedKey(id), ChunkKey(id, 1), ResultKey(id), CancelKey(id), QueueKey("uk", time.Date(2026, 10, 22, 9, 0, 5, 0, time.UTC), id)} { if !strings.HasPrefix(k, "db-reads/") { t.Errorf("%s is outside db-reads/", k) } } if got := ChunkKey(id, 12); got != "db-reads/"+id+"/out/00000012" { t.Fatalf("ChunkKey = %s", got) } if seq, ok := ParseChunkKey(ChunkKey(id, 12), OutPrefix(id)); !ok || seq != 12 { t.Fatalf("ParseChunkKey = %d %v", seq, ok) } for _, bad := range []string{OutPrefix(id) + "0000001", OutPrefix(id) + "-0000001", OutPrefix(id) + "00000000", OutPrefix(id) + "0000001x"} { if _, ok := ParseChunkKey(bad, OutPrefix(id)); ok { t.Errorf("ParseChunkKey(%q) accepted", bad) } } } func TestQueueKeyRoundTrips(t *testing.T) { t.Parallel() id := "dbr_bbbbbbbbbbbbbbbbbbbbbbbbbb" issued := time.Date(2026, 10, 22, 10, 59, 50, 0, time.UTC) key := QueueKey("uk", issued, id) if key != "db-reads/queue/uk/2026102210/1792666790-"+id { t.Fatalf("QueueKey = %s", key) } e, ok := ParseQueueKey(key) if !ok || e.Region != "uk" || e.Hour != "2026102210" || !e.Issued.Equal(issued) || e.ID != id { t.Fatalf("ParseQueueKey = %+v %v", e, ok) } for _, bad := range []string{ "db-reads/queue/uk/2026102210/x-" + id, "db-reads/queue/uk/20261022/1792666790-" + id, "db-reads/queue/../2026102210/1792666790-" + id, "db-reads/queue/uk/2026102210/01792666790-" + id, "db-reads/queue/uk/2026102210/1792666790-run_bbbbbbbbbbbbbbbbbbbbbbbbbb", } { if _, ok := ParseQueueKey(bad); ok { t.Errorf("ParseQueueKey(%q) accepted", bad) } } } func TestInWindowIs60sPlus60sOfSkew(t *testing.T) { t.Parallel() now := time.Date(2026, 10, 22, 9, 0, 0, 0, time.UTC) for _, c := range []struct { issued time.Time want bool }{ {now, true}, {now.Add(-120 * time.Second), true}, {now.Add(-121 * time.Second), false}, {now.Add(60 * time.Second), true}, {now.Add(61 * time.Second), false}, } { if got := InWindow(c.issued, now); got != c.want { t.Errorf("InWindow(%s) = %v", c.issued.Sub(now), got) } } }