Files
grafana/pkg/storage/unified/resource/continue_test.go
T
Will Assis 047e6d45fa unified-storage: use name instead of offset in kvstore continue token (#113560)
* unified-storage: use name instead of offset in kvstore continue token

---------

Co-authored-by: Georges Chaudy <chaudyg@gmail.com>
2025-12-02 10:35:03 -05:00

58 lines
1.7 KiB
Go

package resource
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestContinueToken(t *testing.T) {
t.Run("round-trip with namespace (cross-namespace query)", func(t *testing.T) {
original := ContinueToken{
Namespace: "my-namespace",
Name: "my-resource",
ResourceVersion: 200,
}
decoded, err := GetContinueToken(original.String())
require.NoError(t, err)
assert.Equal(t, original.Namespace, decoded.Namespace)
assert.Equal(t, original.Name, decoded.Name)
assert.Equal(t, original.ResourceVersion, decoded.ResourceVersion)
})
t.Run("round-trip without namespace (single-namespace query)", func(t *testing.T) {
original := ContinueToken{
Name: "test-resource",
ResourceVersion: 100,
}
decoded, err := GetContinueToken(original.String())
require.NoError(t, err)
assert.Equal(t, "", decoded.Namespace)
assert.Equal(t, original.Name, decoded.Name)
assert.Equal(t, original.ResourceVersion, decoded.ResourceVersion)
})
t.Run("history token (no name, uses ResourceVersion for pagination)", func(t *testing.T) {
original := ContinueToken{
ResourceVersion: 500,
SortAscending: true,
}
decoded, err := GetContinueToken(original.String())
require.NoError(t, err)
assert.Equal(t, "", decoded.Name)
assert.Equal(t, int64(500), decoded.ResourceVersion)
assert.True(t, decoded.SortAscending)
})
t.Run("rejects invalid base64", func(t *testing.T) {
_, err := GetContinueToken("not-valid-base64!")
assert.Error(t, err)
})
t.Run("rejects invalid json", func(t *testing.T) {
_, err := GetContinueToken("bm90LWpzb24=") // "not-json" in base64
assert.Error(t, err)
})
}