Spaces:
Sleeping
Sleeping
File size: 2,171 Bytes
fa14516 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | /**
* 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');
});
});
});
|