mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-20 22:49:18 +00:00
refactor: extract cuesheet permissions
This commit is contained in:
committed by
Carlos Valente
parent
5be504ce8f
commit
df588b8845
@@ -0,0 +1,94 @@
|
||||
import { OntimeView, URLPreset } from 'ontime-types';
|
||||
|
||||
import { AppMode } from '../../../ontimeConfig';
|
||||
import { getCuesheetColumnAccessPolicy, getCuesheetPermissionsPolicy } from '../cuesheet.policies';
|
||||
|
||||
describe('getCuesheetPermissionsPolicy()', () => {
|
||||
test('returns full permissions when there is no preset', () => {
|
||||
expect(getCuesheetPermissionsPolicy(undefined, true)).toEqual({
|
||||
canChangeMode: true,
|
||||
canCreateEntries: true,
|
||||
canEditEntries: true,
|
||||
canFlag: true,
|
||||
canShare: true,
|
||||
});
|
||||
});
|
||||
|
||||
test('returns run-only permissions when write is disabled', () => {
|
||||
const preset: URLPreset = {
|
||||
enabled: true,
|
||||
alias: 'cuesheet-read-only',
|
||||
target: OntimeView.Cuesheet,
|
||||
search: '',
|
||||
options: {
|
||||
read: 'full',
|
||||
write: '-',
|
||||
},
|
||||
};
|
||||
|
||||
expect(getCuesheetPermissionsPolicy(preset, true)).toEqual({
|
||||
canChangeMode: false,
|
||||
canCreateEntries: false,
|
||||
canEditEntries: false,
|
||||
canFlag: false,
|
||||
canShare: false,
|
||||
});
|
||||
});
|
||||
|
||||
test('allows flag changes when write includes flag only', () => {
|
||||
const preset: URLPreset = {
|
||||
enabled: true,
|
||||
alias: 'cuesheet-flag',
|
||||
target: OntimeView.Cuesheet,
|
||||
search: '',
|
||||
options: {
|
||||
read: 'full',
|
||||
write: 'flag',
|
||||
},
|
||||
};
|
||||
|
||||
expect(getCuesheetPermissionsPolicy(preset, true)).toEqual({
|
||||
canChangeMode: true,
|
||||
canCreateEntries: false,
|
||||
canEditEntries: false,
|
||||
canFlag: true,
|
||||
canShare: false,
|
||||
});
|
||||
});
|
||||
|
||||
test('defaults to full read and write when cuesheet options are absent', () => {
|
||||
const preset: URLPreset = {
|
||||
enabled: true,
|
||||
alias: 'cuesheet-default',
|
||||
target: OntimeView.Cuesheet,
|
||||
search: '',
|
||||
};
|
||||
|
||||
const policy = getCuesheetColumnAccessPolicy(preset, AppMode.Edit);
|
||||
|
||||
expect(policy.canRead('title')).toBe(true);
|
||||
expect(policy.canWrite('title')).toBe(true);
|
||||
});
|
||||
|
||||
test('column access honors granular permissions and mode', () => {
|
||||
const preset: URLPreset = {
|
||||
enabled: true,
|
||||
alias: 'cuesheet-granular',
|
||||
target: OntimeView.Cuesheet,
|
||||
search: '',
|
||||
options: {
|
||||
read: 'cue,title',
|
||||
write: 'title',
|
||||
},
|
||||
};
|
||||
|
||||
const editPolicy = getCuesheetColumnAccessPolicy(preset, AppMode.Edit);
|
||||
const runPolicy = getCuesheetColumnAccessPolicy(preset, AppMode.Run);
|
||||
|
||||
expect(editPolicy.canRead('cue')).toBe(true);
|
||||
expect(editPolicy.canRead('duration')).toBe(false);
|
||||
expect(editPolicy.canWrite('title')).toBe(true);
|
||||
expect(editPolicy.canWrite('cue')).toBe(false);
|
||||
expect(runPolicy.canWrite('title')).toBe(false);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user