package model import ( "net/http/httptest" "testing" "github.com/QuantumNous/new-api/common" "github.com/QuantumNous/new-api/constant" "github.com/gin-gonic/gin" "github.com/stretchr/testify/require" ) func TestUserBaseGetSettingHandlesValidAndInvalidJSON(t *testing.T) { user := UserBase{Setting: `{"language":"en","billing_preference":"subscription"}`} setting := user.GetSetting() require.Equal(t, "en", setting.Language) require.Equal(t, "subscription", setting.BillingPreference) invalid := UserBase{Setting: "{"} require.Equal(t, "", invalid.GetSetting().Language) } func TestUserBaseWriteContextPopulatesRelayFields(t *testing.T) { context, _ := gin.CreateTestContext(httptest.NewRecorder()) user := UserBase{ Source: "oauth", Group: "vip", Quota: 123, Status: common.UserStatusEnabled, Email: "user@example.com", Username: "user", Setting: `{"language":"en"}`, } user.WriteContext(context) require.Equal(t, "vip", common.GetContextKeyString(context, constant.ContextKeyUserGroup)) require.Equal(t, 123, common.GetContextKeyInt(context, constant.ContextKeyUserQuota)) require.Equal(t, common.UserStatusEnabled, common.GetContextKeyInt(context, constant.ContextKeyUserStatus)) require.Equal(t, "user@example.com", common.GetContextKeyString(context, constant.ContextKeyUserEmail)) require.Equal(t, "user", common.GetContextKeyString(context, constant.ContextKeyUserName)) require.Equal(t, "oauth", common.GetContextKeyString(context, constant.ContextKeyUserSource)) } func TestGetUserCacheKeyIsNamespacedByUserID(t *testing.T) { require.Equal(t, "user:42", getUserCacheKey(42)) }