mirror of
https://github.com/optim-enterprises-bv/vault.git
synced 2025-10-29 17:52:32 +00:00
* update hds to latest version * yield dropdown Interactive text instead of use @text arg, results after running codemod * remaining dropdown changes * address sidebar nav IconButton deprecation, fix secret tests * revert * explicitly select popupmenu * more test changes * fix pki toggle button * remove tracked prop in oidc client controller * aaand more test updates * change to tilde * tilde yarn lock changes * small cleanup items
99 lines
3.3 KiB
JavaScript
99 lines
3.3 KiB
JavaScript
/**
|
||
* Copyright (c) HashiCorp, Inc.
|
||
* SPDX-License-Identifier: BUSL-1.1
|
||
*/
|
||
|
||
import { module, test } from 'qunit';
|
||
import { setupRenderingTest } from 'ember-qunit';
|
||
import { setupEngine } from 'ember-engines/test-support';
|
||
import { setupMirage } from 'ember-cli-mirage/test-support';
|
||
import { render, click } from '@ember/test-helpers';
|
||
import { hbs } from 'ember-cli-htmlbars';
|
||
import { kvMetadataPath } from 'vault/utils/kv-path';
|
||
import { allowAllCapabilitiesStub } from 'vault/tests/helpers/stubs';
|
||
import { PAGE } from 'vault/tests/helpers/kv/kv-selectors';
|
||
import { setRunOptions } from 'ember-a11y-testing/test-support';
|
||
|
||
const CREATE_RECORDS = (number, store, server) => {
|
||
const mirageList = server.createList('kv-metadatum', number, 'withCustomPath');
|
||
mirageList.forEach((record) => {
|
||
record.data.path = record.path;
|
||
record.id = kvMetadataPath(record.data.backend, record.data.path);
|
||
store.pushPayload('kv/metadata', {
|
||
modelName: 'kv/metadata',
|
||
...record,
|
||
});
|
||
});
|
||
};
|
||
|
||
const META = {
|
||
currentPage: 1,
|
||
lastPage: 2,
|
||
nextPage: 2,
|
||
prevPage: 1,
|
||
total: 16,
|
||
filteredTotal: 16,
|
||
pageSize: 15,
|
||
};
|
||
|
||
module('Integration | Component | kv | Page::List', function (hooks) {
|
||
setupRenderingTest(hooks);
|
||
setupEngine(hooks, 'kv');
|
||
setupMirage(hooks);
|
||
|
||
hooks.beforeEach(async function () {
|
||
this.server.post('/sys/capabilities-self', allowAllCapabilitiesStub());
|
||
this.store = this.owner.lookup('service:store');
|
||
setRunOptions({
|
||
rules: {
|
||
// TODO: ConfirmAction renders modal within list when @isInDropdown
|
||
list: { enabled: false },
|
||
},
|
||
});
|
||
});
|
||
|
||
test('it renders Pagination and allows you to delete a kv/metadata record', async function (assert) {
|
||
assert.expect(20);
|
||
CREATE_RECORDS(15, this.store, this.server);
|
||
this.model = await this.store.peekAll('kv/metadata');
|
||
this.model.meta = META;
|
||
this.backend = 'kv-engine';
|
||
this.breadcrumbs = [
|
||
{ label: 'Secrets', route: 'secrets', linkExternal: true },
|
||
{ label: this.backend, route: 'list' },
|
||
];
|
||
this.failedDirectoryQuery = false;
|
||
await render(
|
||
hbs`<Page::List
|
||
@secrets={{this.model}}
|
||
@backend={{this.backend}}
|
||
@failedDirectoryQuery={{this.failedDirectoryQuery}}
|
||
@breadcrumbs={{this.breadcrumbs}}
|
||
@meta={{this.model.meta}}
|
||
@currentRouteParams={{array this.backend}}
|
||
/>`,
|
||
{
|
||
owner: this.engine,
|
||
}
|
||
);
|
||
|
||
assert.dom(PAGE.list.pagination).exists('shows hds pagination component');
|
||
assert.dom(PAGE.list.paginationInfo).hasText('1–15 of 16', 'shows correct page of pages');
|
||
assert.dom(PAGE.title).includesText(this.backend, 'shows backend as title');
|
||
|
||
this.model.forEach((record) => {
|
||
assert.dom(PAGE.list.item(record.path)).exists('lists all records from 0-14 on the first page');
|
||
});
|
||
|
||
this.server.delete(kvMetadataPath('kv-engine', 'my-secret-0'), () => {
|
||
assert.ok(true, 'request made to correct endpoint on delete metadata.');
|
||
});
|
||
|
||
const popupSelector = `${PAGE.list.item('my-secret-0')} ${PAGE.popup}`;
|
||
await click(popupSelector);
|
||
await click('[data-test-popup-metadata-delete]');
|
||
await click('[data-test-confirm-button]');
|
||
assert.dom(PAGE.list.item('my-secret-0')).doesNotExist('deleted the first record from the list');
|
||
});
|
||
});
|