auth.spec.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'
  2. import { getToken, setToken, removeToken } from '@/utils/auth'
  3. describe('Auth Utils', () => {
  4. const mockToken = 'mock-jwt-token-12345'
  5. beforeEach(() => {
  6. // Clear cookies before each test
  7. document.cookie.split(';').forEach((c) => {
  8. document.cookie = c.replace(/^ +/, '').replace(/=.*/, `=;expires=${new Date().toUTCString()};path=/`)
  9. })
  10. })
  11. afterEach(() => {
  12. // Clean up after each test
  13. document.cookie.split(';').forEach((c) => {
  14. document.cookie = c.replace(/^ +/, '').replace(/=.*/, `=;expires=${new Date().toUTCString()};path=/`)
  15. })
  16. })
  17. describe('Token Management (Cookie-based)', () => {
  18. it('should set and get token', () => {
  19. setToken(mockToken)
  20. expect(getToken()).toBe(mockToken)
  21. })
  22. it('should set token with custom expiresIn', () => {
  23. const customExpiry = 7200 // 2 hours
  24. setToken(mockToken, customExpiry)
  25. expect(getToken()).toBe(mockToken)
  26. })
  27. it('should return null when token is not set', () => {
  28. expect(getToken()).toBeNull()
  29. })
  30. it('should remove token', () => {
  31. setToken(mockToken)
  32. expect(getToken()).toBe(mockToken)
  33. removeToken()
  34. expect(getToken()).toBeNull()
  35. })
  36. it('should overwrite existing token', () => {
  37. setToken(mockToken)
  38. const newToken = 'new-token-54321'
  39. setToken(newToken)
  40. expect(getToken()).toBe(newToken)
  41. })
  42. it('should handle special characters in token', () => {
  43. const specialToken = 'token+with/special=chars'
  44. setToken(specialToken)
  45. expect(getToken()).toBe(specialToken)
  46. })
  47. })
  48. })