@alexify/kerberos
Version:
Fast and low overhead authorization framework for JavaScript runtime
32 lines (24 loc) • 1.77 kB
JavaScript
const { describe, it } = require('node:test');
const { strict: assert } = require('node:assert');
const { commonRolesPolicy, principalsPolicy, resourcesPolicy } = require('./mocks/index.js');
const { DerivedRoles } = require('../src/index.js');
describe('DerivedRoles', () => {
it('should parse schema', () => {
const derivedRoles = new DerivedRoles(commonRolesPolicy);
assert.strictEqual(derivedRoles.name, 'common_roles');
assert.strictEqual(derivedRoles.roles.size, 4);
assert.strictEqual(derivedRoles.schema.variables, undefined);
assert.strictEqual(derivedRoles.schema.constants, undefined);
});
it('should get roles', () => {
const R = resourcesPolicy.expense1;
const derivedRoles = new DerivedRoles(commonRolesPolicy);
assert.deepEqual([...derivedRoles.get({ P: principalsPolicy.sally, principal: principalsPolicy.sally, R, resource: R })], ['OWNER']);
assert.deepEqual([...derivedRoles.get({ P: principalsPolicy.ian, principal: principalsPolicy.ian, R, resource: R })], []);
assert.deepEqual([...derivedRoles.get({ P: principalsPolicy.frank, principal: principalsPolicy.frank, R, resource: R })], ['FINANCE']);
assert.deepEqual([...derivedRoles.get({ P: principalsPolicy.derek, principal: principalsPolicy.derek, R, resource: R })], ['FINANCE', 'FINANCE_MANAGER', 'REGION_MANAGER']);
assert.deepEqual([...derivedRoles.get({ P: principalsPolicy.simon, principal: principalsPolicy.simon, R, resource: R })], []);
assert.deepEqual([...derivedRoles.get({ P: principalsPolicy.mark, principal: principalsPolicy.mark, R, resource: R })], ['REGION_MANAGER']);
assert.deepEqual([...derivedRoles.get({ P: principalsPolicy.sydney, principal: principalsPolicy.sydney, R, resource: R })], []);
});
});