Files
openmaic/OpenMAIC/tests/config/deployment-role.test.ts
2026-08-16 14:58:47 +08:00

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);
});
});