Files
beacon-server/internal/api/route_evidence_test.go
n30nex a9b8c60a97 feat: stage current preview on dev for dev1 evaluation
Port the qualified server preview at 84ac3c8781 onto
org dev c7209b7043. Preserve upstream changes and
branch policies; keep the independent private Collector service separate.

Preview-Version: 2.2.0-n30nex.1
Preview-Revision: 84ac3c8781
2026-10-04 16:31:48 -04:00

46 lines
1.9 KiB
Go

// Copyright 2026 Beacon Contributors
// SPDX-License-Identifier: AGPL-3.0-or-later
package api
import (
"strings"
"testing"
"time"
)
func TestRouteEvidenceCursor(t *testing.T) {
c := RouteEvidenceCursor{IATA: "YOW", PathKey: "f097439148601d9f3291c474f82fa64c", Since: time.UnixMilli(1000).UTC(), Until: time.UnixMilli(3000).UTC(), HeardAt: time.UnixMicro(2000123).UTC(), ID: 9223372036854775806}
got, err := ParseRouteEvidenceCursor(c.String())
if err != nil || *got != c {
t.Fatalf("cursor round-trip: %+v %v", got, err)
}
if got.HeardAt.Nanosecond() != 123000 {
t.Fatal("lost microsecond precision")
}
for _, bad := range []string{"", strings.Repeat("x", 300), "v2:YOW:x:1:2:3:4", strings.Replace(c.String(), "YOW", "TOOLONG", 1), strings.Replace(c.String(), c.PathKey, "bad", 1), strings.Replace(c.String(), "2000123", "4000000", 1), strings.TrimSuffix(c.String(), "9223372036854775806") + "0"} {
if _, err := ParseRouteEvidenceCursor(bad); err == nil {
t.Errorf("accepted %q", bad)
}
}
}
func TestRouteEvidencePinnedCursor(t *testing.T) {
c := RouteEvidenceCursor{IATA: "YOW", PathKey: strings.Repeat("a", 32), Since: time.UnixMilli(1000).UTC(), Until: time.UnixMilli(3000).UTC(), HeardAt: time.UnixMicro(2000123).UTC(), ID: 9, HashSize: 3, PathBytes: strings.Repeat("aabbcc", 63)}
got, err := ParseRouteEvidenceCursor(c.String())
if err != nil || *got != c || !strings.HasPrefix(c.String(), "v2:") {
t.Fatalf("pinned cursor round-trip: %+v %v", got, err)
}
for _, bad := range []string{
strings.Replace(c.String(), ":3:", ":4:", 1),
strings.Replace(c.String(), ":3:", ":03:", 1),
c.String() + "00",
strings.TrimSuffix(c.String(), c.PathBytes) + "aabbcc",
strings.ToUpper(c.String()),
strings.TrimSuffix(c.String(), c.PathBytes) + "zzzzzzzzzzzz",
} {
if _, err := ParseRouteEvidenceCursor(bad); err == nil {
t.Errorf("accepted invalid pinned cursor %q", bad)
}
}
}