import { describe, expect, it } from 'vitest'; import { hasDeploymentCapability, resolveDeploymentRole } from '@/lib/config/deployment-role'; describe('deployment role', () => { it('fails closed to learner in production when the role is missing or invalid', () => { expect(resolveDeploymentRole(undefined, 'production')).toBe('learner'); expect(resolveDeploymentRole('unexpected', 'production')).toBe('learner'); }); it('keeps the all-in-one role for local development and tests', () => { expect(resolveDeploymentRole(undefined, 'development')).toBe('all'); expect(resolveDeploymentRole(undefined, 'test')).toBe('all'); }); it('grants course management only to ops-capable deployments', () => { expect(hasDeploymentCapability('ops', 'manage_courses')).toBe(true); expect(hasDeploymentCapability('all', 'manage_courses')).toBe(true); expect(hasDeploymentCapability('server', 'manage_courses')).toBe(false); expect(hasDeploymentCapability('learner', 'manage_courses')).toBe(false); }); it('exposes settings management only to operator-capable deployments', () => { expect(hasDeploymentCapability('ops', 'manage_settings')).toBe(true); expect(hasDeploymentCapability('all', 'manage_settings')).toBe(true); expect(hasDeploymentCapability('server', 'manage_settings')).toBe(false); expect(hasDeploymentCapability('learner', 'manage_settings')).toBe(false); }); });