cache_test.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package user
  2. import (
  3. "context"
  4. "testing"
  5. "time"
  6. "github.com/0xJacky/Nginx-UI/internal/cache"
  7. "github.com/0xJacky/Nginx-UI/model"
  8. "github.com/stretchr/testify/assert"
  9. )
  10. func TestTokenCacheOperations(t *testing.T) {
  11. // Initialize cache for testing
  12. cache.Init(context.Background())
  13. // Create test token data
  14. testToken := &model.AuthToken{
  15. UserID: 12345,
  16. Token: "test-jwt-token-123",
  17. ShortToken: "short-token-456",
  18. ExpiredAt: time.Now().Add(time.Hour).Unix(),
  19. }
  20. // Test caching token
  21. CacheToken(testToken)
  22. // Test retrieving token data
  23. tokenData, found := GetCachedTokenData(testToken.Token)
  24. assert.True(t, found, "Token should be found in cache")
  25. assert.Equal(t, testToken.UserID, tokenData.UserID)
  26. assert.Equal(t, testToken.Token, tokenData.Token)
  27. assert.Equal(t, testToken.ShortToken, tokenData.ShortToken)
  28. assert.Equal(t, testToken.ExpiredAt, tokenData.ExpiredAt)
  29. // Test retrieving by short token
  30. shortTokenData, found := GetCachedShortTokenData(testToken.ShortToken)
  31. assert.True(t, found, "Short token should be found in cache")
  32. assert.Equal(t, testToken.UserID, shortTokenData.UserID)
  33. // Test cache invalidation
  34. InvalidateTokenCache(testToken.Token)
  35. _, found = GetCachedTokenData(testToken.Token)
  36. assert.False(t, found, "Token should not be found after invalidation")
  37. _, found = GetCachedShortTokenData(testToken.ShortToken)
  38. assert.False(t, found, "Short token should not be found after invalidation")
  39. }
  40. func TestUserCacheOperations(t *testing.T) {
  41. // Initialize cache for testing
  42. cache.Init(context.Background())
  43. // Create test user
  44. testUser := &model.User{
  45. Name: "testuser",
  46. Status: true,
  47. Language: "en",
  48. }
  49. testUser.ID = 12345
  50. // Test caching user
  51. CacheUser(testUser)
  52. // Test retrieving user
  53. cachedUser, found := GetCachedUser(testUser.ID)
  54. assert.True(t, found, "User should be found in cache")
  55. assert.Equal(t, testUser.Name, cachedUser.Name)
  56. assert.Equal(t, testUser.ID, cachedUser.ID)
  57. assert.Equal(t, testUser.Status, cachedUser.Status)
  58. // Test cache invalidation
  59. InvalidateUserCache(testUser.ID)
  60. _, found = GetCachedUser(testUser.ID)
  61. assert.False(t, found, "User should not be found after invalidation")
  62. }
  63. func TestExpiredTokenHandling(t *testing.T) {
  64. // Initialize cache for testing
  65. cache.Init(context.Background())
  66. // Create expired token
  67. expiredToken := &model.AuthToken{
  68. UserID: 12345,
  69. Token: "expired-token-123",
  70. ShortToken: "expired-short-456",
  71. ExpiredAt: time.Now().Add(-time.Hour).Unix(), // Expired 1 hour ago
  72. }
  73. // Cache the expired token
  74. CacheToken(expiredToken)
  75. // Try to retrieve expired token - should return false and clean cache
  76. _, found := GetCachedTokenData(expiredToken.Token)
  77. assert.False(t, found, "Expired token should not be returned")
  78. // Try to retrieve by expired short token - should return false and clean cache
  79. _, found = GetCachedShortTokenData(expiredToken.ShortToken)
  80. assert.False(t, found, "Expired short token should not be returned")
  81. }