package model import ( "testing" "github.com/QuantumNous/new-api/common" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestTokenAutoGroupsRoundTripThroughRedisHashCache(t *testing.T) { useUserCacheMiniRedis(t) token := Token{ Id: 42, UserId: 7, Key: "token-auto-groups-cache-key", Name: "auto-cache", Group: "auto", AutoGroups: `["vip","default"]`, } require.NoError(t, cacheSetToken(token)) cached, err := cacheGetTokenByKey(token.Key) require.NoError(t, err) assert.Equal(t, token.AutoGroups, cached.AutoGroups) groups, err := cached.GetAutoGroups() require.NoError(t, err) assert.Equal(t, []string{"vip", "default"}, groups) } func TestTokenUpdateSynchronouslyNarrowsPreheatedAutoGroupsCache(t *testing.T) { truncateTables(t) useUserCacheMiniRedis(t) token := Token{ UserId: 7, Key: "token-auto-groups-update-cache-key", Name: "auto-cache-update", Status: common.TokenStatusEnabled, ExpiredTime: -1, UnlimitedQuota: true, Group: "auto", CrossGroupRetry: true, AutoGroups: `["default","vip"]`, } require.NoError(t, token.Insert()) require.NoError(t, cacheSetToken(token)) preheated, err := cacheGetTokenByKey(token.Key) require.NoError(t, err) assert.JSONEq(t, `["default","vip"]`, preheated.AutoGroups) require.NoError(t, token.SetAutoGroups([]string{"vip"})) require.NoError(t, token.Update()) immediate, err := cacheGetTokenByKey(token.Key) require.NoError(t, err) assert.JSONEq(t, `["vip"]`, immediate.AutoGroups) }