feat: 🎸 implement add- and remove-principals abilities

This commit is contained in:
Randall Morey committed 2021-09-30 16:04:02 -04:00
1 parent 3022ca5a53
commit 8da8fddf29
6 files changed
+82 -17

No files matched your search

+14
View File
@@ -12,4 +12,18 @@ export default class RoleAbility extends ModelAbility {
get canSetGrants() {
return this.hasAuthorizedAction('set-grants');
}
/**
* @type {boolean}
*/
get canAddPrincipals() {
return this.hasAuthorizedAction('add-principals');
}
/**
* @type {boolean}
*/
get canRemovePrincipals() {
return this.hasAuthorizedAction('remove-principals');
}
}
+2
View File
@@ -10,6 +10,8 @@ export default factory.extend({
'update',
'delete',
'set-grants',
'add-principals',
'remove-principals',
],
// eslint-disable-next-line ember/avoid-leaking-state-in-ember-objects
grant_strings: () => [
@@ -14,4 +14,26 @@ module('Unit | Abilities | Account', function (hooks) {
model.authorized_actions = [];
assert.notOk(service.can('setGrants role', model));
});
test('it reflects when a given account may add principals based on authorized_actions', function (assert) {
assert.expect(2);
const service = this.owner.lookup('service:can');
const model = {
authorized_actions: ['add-principals'],
};
assert.ok(service.can('addPrincipals role', model));
model.authorized_actions = [];
assert.notOk(service.can('addPrincipals role', model));
});
test('it reflects when a given account may remove principals based on authorized_actions', function (assert) {
assert.expect(2);
const service = this.owner.lookup('service:can');
const model = {
authorized_actions: ['remove-principals'],
};
assert.ok(service.can('removePrincipals role', model));
model.authorized_actions = [];
assert.notOk(service.can('removePrincipals role', model));
});
});