mirror of
https://github.com/hashicorp/vault.git
synced 2025-08-22 23:21:08 +02:00
70 lines
2.4 KiB
JavaScript
70 lines
2.4 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: BUSL-1.1
|
|
*/
|
|
|
|
import { hasCapability } from 'core/helpers/has-capability';
|
|
import { module, test } from 'qunit';
|
|
|
|
module('Unit | Helpers | has-capability', function (hooks) {
|
|
hooks.beforeEach(function () {
|
|
this.id = 'foobar';
|
|
this.capabilities = {
|
|
[`test/path/${this.id}`]: {
|
|
canList: false,
|
|
canRead: true,
|
|
canUpdate: true,
|
|
canCreate: false,
|
|
canDelete: false,
|
|
},
|
|
};
|
|
});
|
|
|
|
test('it should return true if capabilities are not found in path', async function (assert) {
|
|
assert.true(hasCapability(), 'returns true when capabilities are not provided');
|
|
assert.true(hasCapability(this.capabilities), 'returns true when types are not provided');
|
|
assert.true(hasCapability(this.capabilities, ['read']), 'returns true when id is not provided');
|
|
assert.true(
|
|
hasCapability(this.capabilities, ['read'], 'notAnId'),
|
|
'returns true when id is not found in map'
|
|
);
|
|
assert.true(
|
|
hasCapability(this.capabilities, ['doEverything'], this.path),
|
|
'returns true when type is not found in map'
|
|
);
|
|
});
|
|
|
|
test('it should return correct value when evaluating single type', async function (assert) {
|
|
assert.true(
|
|
hasCapability(this.capabilities, ['read'], this.id),
|
|
'returns correct true value for single type'
|
|
);
|
|
assert.false(
|
|
hasCapability(this.capabilities, ['list'], this.id),
|
|
'returns correct false value for single type'
|
|
);
|
|
});
|
|
|
|
test('it should return correct value when evaluating multiple types when all is false', async function (assert) {
|
|
assert.true(
|
|
hasCapability(this.capabilities, ['list', 'read'], this.id),
|
|
'returns correct true value for multiple types when at least one is true'
|
|
);
|
|
assert.false(
|
|
hasCapability(this.capabilities, ['create', 'delete'], this.id),
|
|
'returns correct false value for multiple types when all are false'
|
|
);
|
|
});
|
|
|
|
test('it should return correct value when evaluating multiple types when all is true', async function (assert) {
|
|
assert.true(
|
|
hasCapability(this.capabilities, ['update', 'read'], this.id, true),
|
|
'returns correct true value for multiple types when all are true'
|
|
);
|
|
assert.false(
|
|
hasCapability(this.capabilities, ['update', 'read', 'list'], this.id, true),
|
|
'returns correct false value for multiple types when at least one is false'
|
|
);
|
|
});
|
|
});
|