2024-04-10 22:01:35 +00:00

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