28 lines
1.4 KiB
JavaScript
28 lines
1.4 KiB
JavaScript
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const {allowed, apply} = require('../static/js/menu-access.js');
|
|
|
|
test('group permissions show only accessible workflow sections', () => {
|
|
const reader = {permissions: ['workflows.view']};
|
|
assert.equal(allowed(reader, 'workflows.view'), true);
|
|
assert.equal(allowed(reader, 'workflows.view,workflows.manage'), false);
|
|
assert.equal(allowed(reader, 'system.admin'), false);
|
|
assert.equal(allowed(reader, 'workflows.view|system.admin'), true);
|
|
assert.equal(allowed({permissions: ['system.admin']}, 'workflows.view|system.admin'), true);
|
|
assert.equal(allowed({is_superadmin: true}, 'workflows.manage'), true);
|
|
assert.equal(allowed(null, 'workflows.view'), false);
|
|
});
|
|
|
|
test('permission updates do not overwrite personal menu preferences', () => {
|
|
const node = {dataset: {menuPermission: 'workflows.view'}, hidden: true,
|
|
attributes: new Set(['data-access-denied']),
|
|
toggleAttribute(name, enabled) { enabled ? this.attributes.add(name) : this.attributes.delete(name); }};
|
|
const document = {querySelectorAll: () => [node]};
|
|
apply({permissions: ['workflows.view']}, document);
|
|
assert.equal(node.attributes.has('data-access-denied'), false);
|
|
assert.equal(node.hidden, true);
|
|
apply({permissions: []}, document);
|
|
assert.equal(node.attributes.has('data-access-denied'), true);
|
|
assert.equal(node.hidden, true);
|
|
});
|