refactor: 💡 remove route-action usage for roles (#2292)
* refactor: 💡 remove route-action usage for roles ✅ Closes: https://hashicorp.atlassian.net/browse/ICU-12608
This commit is contained in:
1 parent
534c4419e7
commit
b9b4e33f5a
23 files changed
+466
-182
No files matched your search
@@ -5,13 +5,53 @@
|
||||
|
||||
import { module, test } from 'qunit';
|
||||
import { setupTest } from 'ember-qunit';
|
||||
import { waitUntil } from '@ember/test-helpers';
|
||||
import { waitUntil, visit } from '@ember/test-helpers';
|
||||
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
|
||||
import { setupIndexedDb } from 'api/test-support/helpers/indexed-db';
|
||||
import { authenticateSession } from 'ember-simple-auth/test-support';
|
||||
|
||||
module('Unit | Controller | scopes/scope/roles/index', function (hooks) {
|
||||
setupTest(hooks);
|
||||
setupMirage(hooks);
|
||||
setupIndexedDb(hooks);
|
||||
|
||||
let store;
|
||||
let controller;
|
||||
let getRoleCount;
|
||||
|
||||
const instances = {
|
||||
scopes: {
|
||||
global: null,
|
||||
},
|
||||
role: null,
|
||||
user: null,
|
||||
};
|
||||
|
||||
const urls = {
|
||||
globalScope: null,
|
||||
roles: null,
|
||||
};
|
||||
|
||||
hooks.beforeEach(async function () {
|
||||
authenticateSession({});
|
||||
store = this.owner.lookup('service:store');
|
||||
controller = this.owner.lookup('controller:scopes/scope/roles/index');
|
||||
|
||||
instances.scopes.global = this.server.create('scope', { id: 'global' });
|
||||
instances.role = this.server.create('role', {
|
||||
scopeId: 'global',
|
||||
});
|
||||
instances.user = this.server.create('user', {
|
||||
scopeId: 'global',
|
||||
});
|
||||
|
||||
urls.globalScope = `/scopes/global`;
|
||||
urls.roles = `${urls.globalScope}/roles`;
|
||||
|
||||
getRoleCount = () => this.server.schema.roles.all().models.length;
|
||||
});
|
||||
|
||||
test('it exists', function (assert) {
|
||||
let controller = this.owner.lookup('controller:scopes/scope/roles/index');
|
||||
assert.ok(controller);
|
||||
});
|
||||
|
||||
@@ -24,4 +64,48 @@ module('Unit | Controller | scopes/scope/roles/index', function (hooks) {
|
||||
assert.strictEqual(controller.page, 1);
|
||||
assert.strictEqual(controller.search, searchValue);
|
||||
});
|
||||
|
||||
test('cancel action rolls-back changes on the specified model', async function (assert) {
|
||||
await visit(urls.roles);
|
||||
const role = await store.findRecord('role', instances.role.id);
|
||||
role.name = 'test';
|
||||
|
||||
assert.strictEqual(role.name, 'test');
|
||||
|
||||
await controller.cancel(role);
|
||||
|
||||
assert.notEqual(role.name, 'test');
|
||||
});
|
||||
|
||||
test('save action saves changes on the specified model', async function (assert) {
|
||||
await visit(urls.roles);
|
||||
const role = await store.findRecord('role', instances.role.id);
|
||||
role.name = 'test';
|
||||
|
||||
await controller.save(role);
|
||||
|
||||
assert.strictEqual(role.name, 'test');
|
||||
});
|
||||
|
||||
test('delete action destroys specified model', async function (assert) {
|
||||
const role = await store.findRecord('role', instances.role.id);
|
||||
const roleCount = getRoleCount();
|
||||
|
||||
await controller.delete(role);
|
||||
|
||||
assert.strictEqual(getRoleCount(), roleCount - 1);
|
||||
});
|
||||
|
||||
test('removePrincipal action removes a principal from specified model', async function (assert) {
|
||||
const role = await store.findRecord('role', instances.role.id);
|
||||
await role.addPrincipals([instances.user.id]);
|
||||
|
||||
assert.deepEqual(role.principals, [
|
||||
{ id: instances.user.id, scope_id: instances.user.scopeId, type: 'user' },
|
||||
]);
|
||||
|
||||
await controller.removePrincipal(role, instances.user);
|
||||
|
||||
assert.deepEqual(role.principals, []);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,11 @@
|
||||
import { module, test } from 'qunit';
|
||||
import { setupTest } from 'ember-qunit';
|
||||
|
||||
module('Unit | Controller | scopes/scope/roles/new', function (hooks) {
|
||||
setupTest(hooks);
|
||||
|
||||
test('it exists', function (assert) {
|
||||
let controller = this.owner.lookup('controller:scopes/scope/roles/new');
|
||||
assert.ok(controller);
|
||||
});
|
||||
});
|
||||
@@ -5,17 +5,70 @@
|
||||
|
||||
import { module, test } from 'qunit';
|
||||
import { setupTest } from 'ember-qunit';
|
||||
import { visit } from '@ember/test-helpers';
|
||||
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
|
||||
import { authenticateSession } from 'ember-simple-auth/test-support';
|
||||
|
||||
module(
|
||||
'Unit | Controller | scopes/scope/roles/role/add-principals',
|
||||
function (hooks) {
|
||||
setupTest(hooks);
|
||||
setupMirage(hooks);
|
||||
|
||||
test('it exists', function (assert) {
|
||||
let controller = this.owner.lookup(
|
||||
let store;
|
||||
let controller;
|
||||
|
||||
const instances = {
|
||||
scopes: {
|
||||
global: null,
|
||||
},
|
||||
role: null,
|
||||
user: null,
|
||||
};
|
||||
|
||||
const urls = {
|
||||
globalScope: null,
|
||||
addPrincipals: null,
|
||||
};
|
||||
|
||||
hooks.beforeEach(async function () {
|
||||
authenticateSession({});
|
||||
store = this.owner.lookup('service:store');
|
||||
controller = this.owner.lookup(
|
||||
'controller:scopes/scope/roles/role/add-principals',
|
||||
);
|
||||
|
||||
instances.scopes.global = this.server.create('scope', { id: 'global' });
|
||||
instances.role = this.server.create('role', {
|
||||
scopeId: 'global',
|
||||
});
|
||||
instances.user = this.server.create('user', {
|
||||
scopeId: 'global',
|
||||
});
|
||||
|
||||
urls.globalScope = `/scopes/global`;
|
||||
urls.addPrincipals = `${urls.globalScope}/roles/${instances.role.id}/add-principals`;
|
||||
});
|
||||
|
||||
test('it exists', function (assert) {
|
||||
assert.ok(controller);
|
||||
});
|
||||
|
||||
test('addPrincipals action adds principals to specified model', async function (assert) {
|
||||
await visit(urls.addPrincipals);
|
||||
const role = await store.findRecord('role', instances.role.id);
|
||||
|
||||
assert.deepEqual(role.principals, []);
|
||||
|
||||
await controller.addPrincipals(role, [instances.user.id]);
|
||||
|
||||
assert.deepEqual(role.principals, [
|
||||
{
|
||||
id: instances.user.id,
|
||||
scope_id: instances.user.scopeId,
|
||||
type: 'user',
|
||||
},
|
||||
]);
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -0,0 +1,88 @@
|
||||
import { module, test } from 'qunit';
|
||||
import { setupTest } from 'ember-qunit';
|
||||
import { visit } from '@ember/test-helpers';
|
||||
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
|
||||
import { authenticateSession } from 'ember-simple-auth/test-support';
|
||||
|
||||
module('Unit | Controller | scopes/scope/roles/role/grants', function (hooks) {
|
||||
setupTest(hooks);
|
||||
setupMirage(hooks);
|
||||
|
||||
let store;
|
||||
let controller;
|
||||
|
||||
const instances = {
|
||||
scopes: {
|
||||
global: null,
|
||||
},
|
||||
role: null,
|
||||
};
|
||||
|
||||
const urls = {
|
||||
globalScope: null,
|
||||
grants: null,
|
||||
};
|
||||
|
||||
hooks.beforeEach(async function () {
|
||||
authenticateSession({});
|
||||
store = this.owner.lookup('service:store');
|
||||
controller = this.owner.lookup('controller:scopes/scope/roles/role/grants');
|
||||
|
||||
instances.scopes.global = this.server.create('scope', { id: 'global' });
|
||||
instances.role = this.server.create('role', {
|
||||
scopeId: 'global',
|
||||
});
|
||||
|
||||
urls.globalScope = `/scopes/global`;
|
||||
urls.grants = `${urls.globalScope}/roles/${instances.role.id}/grants`;
|
||||
});
|
||||
|
||||
test('it exists', function (assert) {
|
||||
assert.ok(controller);
|
||||
});
|
||||
|
||||
test('cancel action rolls-back changes on the specified model', async function (assert) {
|
||||
await visit(urls.grants);
|
||||
const role = await store.findRecord('role', instances.role.id);
|
||||
const grantStrings = role.grant_strings;
|
||||
role.grant_strings = ['ids=*;type=*;actions=read'];
|
||||
|
||||
assert.deepEqual(role.grant_strings, ['ids=*;type=*;actions=read']);
|
||||
|
||||
await controller.cancel(role);
|
||||
|
||||
assert.deepEqual(role.grant_strings, grantStrings);
|
||||
});
|
||||
|
||||
test('save action saves grantStrings to specified model', async function (assert) {
|
||||
await visit(urls.grants);
|
||||
const role = await store.findRecord('role', instances.role.id);
|
||||
const grantStrings = role.grant_strings;
|
||||
const newGrantStrings = [...grantStrings, 'ids=*;type=*;actions=read'];
|
||||
|
||||
await controller.save(role, newGrantStrings);
|
||||
|
||||
assert.deepEqual(role.grant_strings, newGrantStrings);
|
||||
});
|
||||
|
||||
test('removeGrant action removes a grant string from a role', async function (assert) {
|
||||
await visit(urls.grants);
|
||||
const role = await store.findRecord('role', instances.role.id);
|
||||
const grantStrings = role.grant_strings;
|
||||
|
||||
await controller.removeGrant(role, grantStrings[0]);
|
||||
|
||||
assert.deepEqual(role.grant_strings, grantStrings.slice(1));
|
||||
});
|
||||
|
||||
test('addGrant action adds a grant string from a role', async function (assert) {
|
||||
await visit(urls.grants);
|
||||
const role = await store.findRecord('role', instances.role.id);
|
||||
const grantStrings = role.grant_strings;
|
||||
const grantString = 'ids=*;type=*;actions=read';
|
||||
|
||||
await controller.addGrant(role, grantString);
|
||||
|
||||
assert.deepEqual(role.grant_strings, [grantString, ...grantStrings]);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,13 @@
|
||||
import { module, test } from 'qunit';
|
||||
import { setupTest } from 'ember-qunit';
|
||||
|
||||
module('Unit | Controller | scopes/scope/roles/role/index', function (hooks) {
|
||||
setupTest(hooks);
|
||||
|
||||
test('it exists', function (assert) {
|
||||
let controller = this.owner.lookup(
|
||||
'controller:scopes/scope/roles/role/index',
|
||||
);
|
||||
assert.ok(controller);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,16 @@
|
||||
import { module, test } from 'qunit';
|
||||
import { setupTest } from 'ember-qunit';
|
||||
|
||||
module(
|
||||
'Unit | Controller | scopes/scope/roles/role/principals',
|
||||
function (hooks) {
|
||||
setupTest(hooks);
|
||||
|
||||
test('it exists', function (assert) {
|
||||
let controller = this.owner.lookup(
|
||||
'controller:scopes/scope/roles/role/principals',
|
||||
);
|
||||
assert.ok(controller);
|
||||
});
|
||||
},
|
||||
);
|
||||
Reference in new issue
Block a user