29 lines
1.4 KiB
TypeScript
29 lines
1.4 KiB
TypeScript
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);
|
|
});
|
|
});
|