auth.spec.ts 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import { describe, it, expect, beforeEach, afterEach } from 'vitest'
  2. import {
  3. getToken,
  4. setToken,
  5. removeToken,
  6. getRefreshToken,
  7. setRefreshToken,
  8. removeRefreshToken
  9. } from '@/utils/auth'
  10. describe('Auth Utils', () => {
  11. const TOKEN_KEY = 'Admin-Token'
  12. const REFRESH_TOKEN_KEY = 'Admin-Refresh-Token'
  13. const mockToken = 'mock-jwt-token-12345'
  14. const mockRefreshToken = 'mock-refresh-token-67890'
  15. beforeEach(() => {
  16. // Clear localStorage before each test
  17. localStorage.clear()
  18. })
  19. afterEach(() => {
  20. // Clean up after each test
  21. localStorage.clear()
  22. })
  23. describe('Token Management', () => {
  24. it('should set and get token', () => {
  25. setToken(mockToken)
  26. expect(getToken()).toBe(mockToken)
  27. expect(localStorage.getItem(TOKEN_KEY)).toBe(mockToken)
  28. })
  29. it('should return null when token is not set', () => {
  30. expect(getToken()).toBeNull()
  31. })
  32. it('should remove token', () => {
  33. setToken(mockToken)
  34. expect(getToken()).toBe(mockToken)
  35. removeToken()
  36. expect(getToken()).toBeNull()
  37. expect(localStorage.getItem(TOKEN_KEY)).toBeNull()
  38. })
  39. it('should overwrite existing token', () => {
  40. setToken(mockToken)
  41. const newToken = 'new-token-54321'
  42. setToken(newToken)
  43. expect(getToken()).toBe(newToken)
  44. })
  45. })
  46. describe('Refresh Token Management', () => {
  47. it('should set and get refresh token', () => {
  48. setRefreshToken(mockRefreshToken)
  49. expect(getRefreshToken()).toBe(mockRefreshToken)
  50. expect(localStorage.getItem(REFRESH_TOKEN_KEY)).toBe(mockRefreshToken)
  51. })
  52. it('should return null when refresh token is not set', () => {
  53. expect(getRefreshToken()).toBeNull()
  54. })
  55. it('should remove refresh token', () => {
  56. setRefreshToken(mockRefreshToken)
  57. expect(getRefreshToken()).toBe(mockRefreshToken)
  58. removeRefreshToken()
  59. expect(getRefreshToken()).toBeNull()
  60. expect(localStorage.getItem(REFRESH_TOKEN_KEY)).toBeNull()
  61. })
  62. it('should overwrite existing refresh token', () => {
  63. setRefreshToken(mockRefreshToken)
  64. const newRefreshToken = 'new-refresh-token-11111'
  65. setRefreshToken(newRefreshToken)
  66. expect(getRefreshToken()).toBe(newRefreshToken)
  67. })
  68. })
  69. describe('Token Isolation', () => {
  70. it('should keep tokens independent', () => {
  71. setToken(mockToken)
  72. setRefreshToken(mockRefreshToken)
  73. expect(getToken()).toBe(mockToken)
  74. expect(getRefreshToken()).toBe(mockRefreshToken)
  75. removeToken()
  76. expect(getToken()).toBeNull()
  77. expect(getRefreshToken()).toBe(mockRefreshToken) // Should still exist
  78. })
  79. it('should remove refresh token without affecting access token', () => {
  80. setToken(mockToken)
  81. setRefreshToken(mockRefreshToken)
  82. removeRefreshToken()
  83. expect(getRefreshToken()).toBeNull()
  84. expect(getToken()).toBe(mockToken) // Should still exist
  85. })
  86. })
  87. })