mirror of
https://github.com/MeshCore-Beacon/beacon-server.git
synced 2026-10-22 10:32:27 +00:00
Port the qualified server preview at84ac3c8781onto org devc7209b7043. Preserve upstream changes and branch policies; keep the independent private Collector service separate. Preview-Version: 2.2.0-n30nex.1 Preview-Revision:84ac3c8781
46 lines
1.9 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|