import { generateCSRFToken, validateCSRFToken, getCSRFTokenFromStorage, setCSRFTokenToStorage, } from './csrf'; describe('csrf', () => { describe('generateCSRFToken', () => { it('should generate a token of correct length', () => { const token = generateCSRFToken(); expect(token).toHaveLength(64); }); it('should generate unique tokens', () => { const token1 = generateCSRFToken(); const token2 = generateCSRFToken(); expect(token1).not.toBe(token2); }); it('should only contain hexadecimal characters', () => { const token = generateCSRFToken(); expect(token).toMatch(/^[0-9a-f]{64}$/); }); }); describe('validateCSRFToken', () => { it('should return true for matching tokens', () => { const token = generateCSRFToken(); expect(validateCSRFToken(token, token)).toBe(true); }); it('should return false for mismatched tokens', () => { const token1 = generateCSRFToken(); const token2 = generateCSRFToken(); expect(validateCSRFToken(token1, token2)).toBe(false); }); it('should return false for empty tokens', () => { expect(validateCSRFToken('', '')).toBe(false); expect(validateCSRFToken('token', '')).toBe(false); expect(validateCSRFToken('', 'token')).toBe(false); }); }); describe('getCSRFTokenFromStorage', () => { it('should return token from sessionStorage', () => { sessionStorage.setItem('csrf_token', 'test-token'); const token = getCSRFTokenFromStorage(); expect(token).toBe('test-token'); }); it('should return null when token not found', () => { sessionStorage.removeItem('csrf_token'); const token = getCSRFTokenFromStorage(); expect(token).toBeNull(); }); }); describe('setCSRFTokenToStorage', () => { it('should set token in sessionStorage', () => { setCSRFTokenToStorage('test-token'); expect(sessionStorage.getItem('csrf_token')).toBe('test-token'); }); }); });