mirror of
https://github.com/hashicorp/vault.git
synced 2025-09-20 21:31:09 +02:00
105 lines
4.2 KiB
JavaScript
105 lines
4.2 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: BUSL-1.1
|
|
*/
|
|
|
|
import { fillIn, click, currentRouteName, currentURL, visit } from '@ember/test-helpers';
|
|
import { module, test } from 'qunit';
|
|
import { setupApplicationTest } from 'ember-qunit';
|
|
import page from 'vault/tests/pages/access/identity/index';
|
|
import authPage from 'vault/tests/pages/auth';
|
|
import { runCmd } from 'vault/tests/helpers/commands';
|
|
import { GENERAL } from 'vault/tests/helpers/general-selectors';
|
|
import { v4 as uuidv4 } from 'uuid';
|
|
|
|
const SELECTORS = {
|
|
listItem: (name) => `[data-test-identity-row="${name}"]`,
|
|
menu: `[data-test-popup-menu-trigger]`,
|
|
menuItem: (element) => `[data-test-popup-menu="${element}"]`,
|
|
submit: '[data-test-identity-submit]',
|
|
confirm: '[data-test-confirm-button]',
|
|
};
|
|
module('Acceptance | /access/identity/entities', function (hooks) {
|
|
setupApplicationTest(hooks);
|
|
|
|
hooks.beforeEach(function () {
|
|
return authPage.login();
|
|
});
|
|
|
|
test('it renders the entities page', async function (assert) {
|
|
await page.visit({ item_type: 'entities' });
|
|
assert.strictEqual(
|
|
currentRouteName(),
|
|
'vault.cluster.access.identity.index',
|
|
'navigates to the correct route'
|
|
);
|
|
});
|
|
|
|
test('it renders the groups page', async function (assert) {
|
|
await page.visit({ item_type: 'groups' });
|
|
assert.strictEqual(
|
|
currentRouteName(),
|
|
'vault.cluster.access.identity.index',
|
|
'navigates to the correct route'
|
|
);
|
|
});
|
|
|
|
test('it renders popup menu for entities', async function (assert) {
|
|
const name = `entity-${uuidv4()}`;
|
|
await runCmd(`vault write identity/entity name="${name}" policies="default"`);
|
|
await visit('/vault/access/identity/entities');
|
|
assert.strictEqual(currentURL(), '/vault/access/identity/entities', 'navigates to entities tab');
|
|
|
|
await click(`${SELECTORS.listItem(name)} ${SELECTORS.menu}`);
|
|
assert
|
|
.dom('.hds-dropdown ul')
|
|
.hasText('Details Create alias Edit Disable Delete', 'all actions render for entities');
|
|
await click(`${SELECTORS.listItem(name)} ${SELECTORS.menuItem('delete')}`);
|
|
await click(SELECTORS.confirm);
|
|
});
|
|
|
|
test('it renders popup menu for external groups', async function (assert) {
|
|
const name = `external-${uuidv4()}`;
|
|
await runCmd(`vault write identity/group name="${name}" policies="default" type="external"`);
|
|
await visit('/vault/access/identity/groups');
|
|
assert.strictEqual(currentURL(), '/vault/access/identity/groups', 'navigates to the groups tab');
|
|
|
|
await click(`${SELECTORS.listItem(name)} ${SELECTORS.menu}`);
|
|
assert
|
|
.dom('.hds-dropdown ul')
|
|
.hasText('Details Create alias Edit Delete', 'all actions render for external groups');
|
|
await click(`${SELECTORS.listItem(name)} ${SELECTORS.menuItem('delete')}`);
|
|
await click(SELECTORS.confirm);
|
|
});
|
|
|
|
test('it renders popup menu for external groups with alias', async function (assert) {
|
|
const name = `external-hasalias-${uuidv4()}`;
|
|
await runCmd(`vault write identity/group name="${name}" policies="default" type="external"`);
|
|
await visit('/vault/access/identity/groups');
|
|
await click(`${SELECTORS.listItem(name)} ${SELECTORS.menu}`);
|
|
await click(SELECTORS.menuItem('create alias'));
|
|
await fillIn(GENERAL.inputByAttr('name'), 'alias-test');
|
|
await click(SELECTORS.submit);
|
|
|
|
await visit('/vault/access/identity/groups');
|
|
await click(`${SELECTORS.listItem(name)} ${SELECTORS.menu}`);
|
|
assert
|
|
.dom('.hds-dropdown ul')
|
|
.hasText('Details Edit Delete', 'no "Create alias" option for external groups with an alias');
|
|
await click(`${SELECTORS.listItem(name)} ${SELECTORS.menuItem('delete')}`);
|
|
await click(SELECTORS.confirm);
|
|
});
|
|
|
|
test('it renders popup menu for internal groups', async function (assert) {
|
|
const name = `internal-${uuidv4()}`;
|
|
await runCmd(`vault write identity/group name="${name}" policies="default" type="internal"`);
|
|
await visit('/vault/access/identity/groups');
|
|
await click(`${SELECTORS.listItem(name)} ${SELECTORS.menu}`);
|
|
assert
|
|
.dom('.hds-dropdown ul')
|
|
.hasText('Details Edit Delete', 'no "Create alias" option for internal groups');
|
|
await click(`${SELECTORS.listItem(name)} ${SELECTORS.menuItem('delete')}`);
|
|
await click(SELECTORS.confirm);
|
|
});
|
|
});
|