Files
story/internal/pagination/cursor_test.go
T

37 lines
958 B
Go

package pagination
import (
"errors"
"testing"
)
func TestCursorRoundTripAndTamperProtection(t *testing.T) {
codec, err := NewCodec([]byte("01234567890123456789012345678901"))
if err != nil {
t.Fatal(err)
}
encoded, err := codec.Encode("2026-08-23T12:00:00Z", "item-1")
if err != nil {
t.Fatal(err)
}
decoded, err := codec.Decode(encoded)
if err != nil || decoded.ID != "item-1" {
t.Fatalf("decoded = %#v, err = %v", decoded, err)
}
tampered := encoded[:len(encoded)-1] + "A"
if _, err := codec.Decode(tampered); !errors.Is(err, ErrInvalidCursor) {
t.Fatalf("tampered cursor error = %v", err)
}
}
func TestParseLimit(t *testing.T) {
if value, err := ParseLimit(""); err != nil || value != DefaultLimit {
t.Fatalf("default limit = %d, err = %v", value, err)
}
for _, invalid := range []string{"0", "101", "abc", "-1"} {
if _, err := ParseLimit(invalid); err == nil {
t.Fatalf("expected %q to be rejected", invalid)
}
}
}