047e6d45fa
* unified-storage: use name instead of offset in kvstore continue token --------- Co-authored-by: Georges Chaudy <chaudyg@gmail.com>
58 lines
1.7 KiB
Go
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)
|
|
})
|
|
}
|