Spaces:
Sleeping
Sleeping
File size: 3,649 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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | /**
* Tests for route configuration utilities
*/
import {
isPublicRoute,
isMaintainerRoute,
isContributorRoute,
requiresAuth,
getRequiredRole,
} from '@/lib/routeConfig';
describe('Route Configuration', () => {
describe('isPublicRoute', () => {
it('should return true for public routes', () => {
expect(isPublicRoute('/api/auth/github')).toBe(true);
expect(isPublicRoute('/api/auth/github/callback')).toBe(true);
expect(isPublicRoute('/api/health')).toBe(true);
});
it('should return false for protected routes', () => {
expect(isPublicRoute('/api/auth/me')).toBe(false);
expect(isPublicRoute('/api/maintainer/dashboard')).toBe(false);
expect(isPublicRoute('/api/contributor/issues')).toBe(false);
});
});
describe('isMaintainerRoute', () => {
it('should return true for maintainer routes', () => {
expect(isMaintainerRoute('/api/maintainer')).toBe(true);
expect(isMaintainerRoute('/api/maintainer/dashboard')).toBe(true);
expect(isMaintainerRoute('/api/repositories')).toBe(true);
expect(isMaintainerRoute('/api/sync')).toBe(true);
});
it('should return false for non-maintainer routes', () => {
expect(isMaintainerRoute('/api/contributor')).toBe(false);
expect(isMaintainerRoute('/api/auth/me')).toBe(false);
});
});
describe('isContributorRoute', () => {
it('should return true for contributor routes', () => {
expect(isContributorRoute('/api/contributor')).toBe(true);
expect(isContributorRoute('/api/contributor/issues')).toBe(true);
});
it('should return false for non-contributor routes', () => {
expect(isContributorRoute('/api/maintainer')).toBe(false);
expect(isContributorRoute('/api/auth/me')).toBe(false);
});
});
describe('requiresAuth', () => {
it('should return false for public routes', () => {
expect(requiresAuth('/api/auth/github')).toBe(false);
expect(requiresAuth('/api/health')).toBe(false);
});
it('should return true for protected API routes', () => {
expect(requiresAuth('/api/auth/me')).toBe(true);
expect(requiresAuth('/api/maintainer/dashboard')).toBe(true);
expect(requiresAuth('/api/contributor/issues')).toBe(true);
expect(requiresAuth('/api/chat')).toBe(true);
});
it('should return false for non-API routes', () => {
expect(requiresAuth('/')).toBe(false);
expect(requiresAuth('/dashboard')).toBe(false);
});
});
describe('getRequiredRole', () => {
it('should return MAINTAINER for maintainer routes', () => {
expect(getRequiredRole('/api/maintainer')).toBe('MAINTAINER');
expect(getRequiredRole('/api/maintainer/dashboard')).toBe('MAINTAINER');
expect(getRequiredRole('/api/repositories')).toBe('MAINTAINER');
});
it('should return CONTRIBUTOR for contributor routes', () => {
expect(getRequiredRole('/api/contributor')).toBe('CONTRIBUTOR');
expect(getRequiredRole('/api/contributor/issues')).toBe('CONTRIBUTOR');
});
it('should return null for routes accessible by any authenticated user', () => {
expect(getRequiredRole('/api/auth/me')).toBeNull();
expect(getRequiredRole('/api/chat')).toBeNull();
expect(getRequiredRole('/api/profile')).toBeNull();
});
});
});
|