consul/ui/packages/consul-ui/tests/unit/adapters/permission-test.js

156 lines
3.4 KiB
JavaScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';
const assertAuthorize = function (assertion, params = {}, token, $, adapter) {
const rpc = adapter.rpc;
const env = adapter.env;
const settings = adapter.settings;
adapter.env = {
var: (str) => $[str],
};
adapter.settings = {
findBySlug: (_) => token,
};
adapter.rpc = function (request, respond) {
request(
{
requestForAuthorize: (request, params) => {
assertion(request, params);
},
},
() => {},
params,
params
);
};
adapter.authorize({}, { modelName: 'permission' }, 1, {});
adapter.rpc = rpc;
adapter.env = env;
adapter.settings = settings;
};
module('Unit | Adapter | permission', function (hooks) {
setupTest(hooks);
test('it exists', function (assert) {
let adapter = this.owner.lookup('adapter:permission');
assert.ok(adapter);
});
test(`authorize adds the tokens default namespace if one isn't specified`, function (assert) {
const adapter = this.owner.lookup('adapter:permission');
const expected = 'test';
const token = {
Namespace: expected,
};
const env = {
CONSUL_NSPACES_ENABLED: true,
};
const cases = [
undefined,
{
ns: undefined,
},
{
ns: '',
},
];
assert.expect(cases.length);
cases.forEach((params) => {
assertAuthorize(
(request, params) => {
assert.equal(params.ns, expected);
},
params,
token,
env,
adapter
);
});
});
test(`authorize doesn't add the tokens default namespace if one is specified`, function (assert) {
assert.expect(1);
const adapter = this.owner.lookup('adapter:permission');
const notExpected = 'test';
const expected = 'default';
const token = {
Namespace: notExpected,
};
const env = {
CONSUL_NSPACES_ENABLED: true,
};
assertAuthorize(
(request, params) => {
assert.equal(params.ns, expected);
},
{
ns: expected,
},
token,
env,
adapter
);
});
test(`authorize adds the tokens default partition if one isn't specified`, function (assert) {
const adapter = this.owner.lookup('adapter:permission');
const expected = 'test';
const token = {
Partition: expected,
};
const env = {
CONSUL_PARTITIONS_ENABLED: true,
};
const cases = [
undefined,
{
partition: undefined,
},
{
partition: '',
},
];
assert.expect(cases.length);
cases.forEach((params) => {
assertAuthorize(
(request, params) => {
assert.equal(params.partition, expected);
},
params,
token,
env,
adapter
);
});
});
test(`authorize doesn't add the tokens default partition if one is specified`, function (assert) {
assert.expect(1);
const adapter = this.owner.lookup('adapter:permission');
const notExpected = 'test';
const expected = 'default';
const token = {
Partition: notExpected,
};
const env = {
CONSUL_PARTITIONS_ENABLED: true,
};
assertAuthorize(
(request, params) => {
assert.equal(params.partition, expected);
},
{
partition: expected,
},
token,
env,
adapter
);
});
});