Spaces:
Sleeping
Sleeping
| /** | |
| * Tests for authentication utilities | |
| */ | |
| import { createJwtToken, verifyJwtToken } from '@/lib/auth'; | |
| describe('Auth Utilities', () => { | |
| describe('createJwtToken', () => { | |
| it('should create a valid JWT token', () => { | |
| const token = createJwtToken('user-123', 'MAINTAINER'); | |
| expect(token).toBeDefined(); | |
| expect(typeof token).toBe('string'); | |
| expect(token.split('.')).toHaveLength(3); | |
| }); | |
| it('should create token without role', () => { | |
| const token = createJwtToken('user-456', null); | |
| expect(token).toBeDefined(); | |
| expect(typeof token).toBe('string'); | |
| }); | |
| it('should include user_id in token payload', () => { | |
| const userId = 'test-user-id'; | |
| const token = createJwtToken(userId, 'CONTRIBUTOR'); | |
| const payload = verifyJwtToken(token); | |
| expect(payload.user_id).toBe(userId); | |
| }); | |
| it('should include role in token payload', () => { | |
| const role = 'MAINTAINER'; | |
| const token = createJwtToken('user-123', role); | |
| const payload = verifyJwtToken(token); | |
| expect(payload.role).toBe(role); | |
| }); | |
| }); | |
| describe('verifyJwtToken', () => { | |
| it('should verify a valid token', () => { | |
| const token = createJwtToken('user-123', 'MAINTAINER'); | |
| const payload = verifyJwtToken(token); | |
| expect(payload.user_id).toBe('user-123'); | |
| expect(payload.role).toBe('MAINTAINER'); | |
| }); | |
| it('should throw error for invalid token', () => { | |
| expect(() => { | |
| verifyJwtToken('invalid.token.here'); | |
| }).toThrow('Invalid or expired token'); | |
| }); | |
| it('should throw error for malformed token', () => { | |
| expect(() => { | |
| verifyJwtToken('not-a-jwt'); | |
| }).toThrow('Invalid or expired token'); | |
| }); | |
| it('should throw error for empty token', () => { | |
| expect(() => { | |
| verifyJwtToken(''); | |
| }).toThrow('Invalid or expired token'); | |
| }); | |
| }); | |
| }); | |