import { describe, it, expect, beforeEach, afterEach } from 'vitest' import { getToken, setToken, removeToken, getRefreshToken, setRefreshToken, removeRefreshToken } from '@/utils/auth' describe('Auth Utils', () => { const TOKEN_KEY = 'Admin-Token' const REFRESH_TOKEN_KEY = 'Admin-Refresh-Token' const mockToken = 'mock-jwt-token-12345' const mockRefreshToken = 'mock-refresh-token-67890' beforeEach(() => { // Clear localStorage before each test localStorage.clear() }) afterEach(() => { // Clean up after each test localStorage.clear() }) describe('Token Management', () => { it('should set and get token', () => { setToken(mockToken) expect(getToken()).toBe(mockToken) expect(localStorage.getItem(TOKEN_KEY)).toBe(mockToken) }) it('should return null when token is not set', () => { expect(getToken()).toBeNull() }) it('should remove token', () => { setToken(mockToken) expect(getToken()).toBe(mockToken) removeToken() expect(getToken()).toBeNull() expect(localStorage.getItem(TOKEN_KEY)).toBeNull() }) it('should overwrite existing token', () => { setToken(mockToken) const newToken = 'new-token-54321' setToken(newToken) expect(getToken()).toBe(newToken) }) }) describe('Refresh Token Management', () => { it('should set and get refresh token', () => { setRefreshToken(mockRefreshToken) expect(getRefreshToken()).toBe(mockRefreshToken) expect(localStorage.getItem(REFRESH_TOKEN_KEY)).toBe(mockRefreshToken) }) it('should return null when refresh token is not set', () => { expect(getRefreshToken()).toBeNull() }) it('should remove refresh token', () => { setRefreshToken(mockRefreshToken) expect(getRefreshToken()).toBe(mockRefreshToken) removeRefreshToken() expect(getRefreshToken()).toBeNull() expect(localStorage.getItem(REFRESH_TOKEN_KEY)).toBeNull() }) it('should overwrite existing refresh token', () => { setRefreshToken(mockRefreshToken) const newRefreshToken = 'new-refresh-token-11111' setRefreshToken(newRefreshToken) expect(getRefreshToken()).toBe(newRefreshToken) }) }) describe('Token Isolation', () => { it('should keep tokens independent', () => { setToken(mockToken) setRefreshToken(mockRefreshToken) expect(getToken()).toBe(mockToken) expect(getRefreshToken()).toBe(mockRefreshToken) removeToken() expect(getToken()).toBeNull() expect(getRefreshToken()).toBe(mockRefreshToken) // Should still exist }) it('should remove refresh token without affecting access token', () => { setToken(mockToken) setRefreshToken(mockRefreshToken) removeRefreshToken() expect(getRefreshToken()).toBeNull() expect(getToken()).toBe(mockToken) // Should still exist }) }) })