bmc_hub/tests/test_menu_access.cjs

28 lines
1.4 KiB
JavaScript
Raw Permalink Normal View History

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