opentriage-api / src /__tests__ /lib /routeConfig.test.ts
KrishnaCosmic's picture
finalising
fa14516
/**
* 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();
});
});
});