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

155 lines
3.4 KiB
JavaScript

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