You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

43 lines
1.6 KiB

  1. package model
  2. import (
  3. "net/http/httptest"
  4. "testing"
  5. "github.com/QuantumNous/new-api/common"
  6. "github.com/QuantumNous/new-api/constant"
  7. "github.com/gin-gonic/gin"
  8. "github.com/stretchr/testify/require"
  9. )
  10. func TestUserBaseGetSettingHandlesValidAndInvalidJSON(t *testing.T) {
  11. user := UserBase{Setting: `{"language":"en","billing_preference":"subscription"}`}
  12. setting := user.GetSetting()
  13. require.Equal(t, "en", setting.Language)
  14. require.Equal(t, "subscription", setting.BillingPreference)
  15. invalid := UserBase{Setting: "{"}
  16. require.Equal(t, "", invalid.GetSetting().Language)
  17. }
  18. func TestUserBaseWriteContextPopulatesRelayFields(t *testing.T) {
  19. context, _ := gin.CreateTestContext(httptest.NewRecorder())
  20. user := UserBase{
  21. Source: "oauth", Group: "vip", Quota: 123, Status: common.UserStatusEnabled,
  22. Email: "user@example.com", Username: "user", Setting: `{"language":"en"}`,
  23. }
  24. user.WriteContext(context)
  25. require.Equal(t, "vip", common.GetContextKeyString(context, constant.ContextKeyUserGroup))
  26. require.Equal(t, 123, common.GetContextKeyInt(context, constant.ContextKeyUserQuota))
  27. require.Equal(t, common.UserStatusEnabled, common.GetContextKeyInt(context, constant.ContextKeyUserStatus))
  28. require.Equal(t, "user@example.com", common.GetContextKeyString(context, constant.ContextKeyUserEmail))
  29. require.Equal(t, "user", common.GetContextKeyString(context, constant.ContextKeyUserName))
  30. require.Equal(t, "oauth", common.GetContextKeyString(context, constant.ContextKeyUserSource))
  31. }
  32. func TestGetUserCacheKeyIsNamespacedByUserID(t *testing.T) {
  33. require.Equal(t, "user:42", getUserCacheKey(42))
  34. }