mirror of
https://github.com/hashicorp/vault.git
synced 2025-08-17 03:57:01 +02:00
102 lines
3.8 KiB
JavaScript
102 lines
3.8 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 'htmlbars-inline-precompile';
|
||
import sinon from 'sinon';
|
||
|
||
module('Integration | Component | ldap | Page::Library::CheckOut', function (hooks) {
|
||
setupRenderingTest(hooks);
|
||
setupEngine(hooks, 'ldap');
|
||
setupMirage(hooks);
|
||
|
||
hooks.beforeEach(function () {
|
||
this.creds = {
|
||
account: 'foo.bar',
|
||
password: 'password',
|
||
lease_id: 'ldap/library/test/check-out/123',
|
||
lease_duration: 86400,
|
||
renewable: true,
|
||
};
|
||
this.breadcrumbs = [
|
||
{ label: 'ldap-test', route: 'overview' },
|
||
{ label: 'libraries', route: 'libraries' },
|
||
{ label: 'test-library', route: 'libraries.library' },
|
||
{ label: 'check-out' },
|
||
];
|
||
|
||
this.renderComponent = () => {
|
||
return render(
|
||
hbs`<Page::Library::CheckOut @credentials={{this.creds}} @breadcrumbs={{this.breadcrumbs}} />`,
|
||
{ owner: this.engine }
|
||
);
|
||
};
|
||
});
|
||
|
||
test('it should render page title and breadcrumbs', async function (assert) {
|
||
await this.renderComponent();
|
||
|
||
assert.dom('[data-test-header-title]').hasText('Check-out', 'Page title renders');
|
||
assert
|
||
.dom('[data-test-breadcrumbs] li:nth-child(1)')
|
||
.containsText('ldap-test', 'Overview breadcrumb renders');
|
||
assert
|
||
.dom('[data-test-breadcrumbs] li:nth-child(2) a')
|
||
.containsText('libraries', 'Libraries breadcrumb renders');
|
||
assert
|
||
.dom('[data-test-breadcrumbs] li:nth-child(3)')
|
||
.containsText('test-library', 'Library breadcrumb renders');
|
||
assert
|
||
.dom('[data-test-breadcrumbs] li:nth-child(4)')
|
||
.containsText('check-out', 'Check-out breadcrumb renders');
|
||
});
|
||
|
||
test('it should render check out information and credentials', async function (assert) {
|
||
const transitionStub = sinon.stub(this.owner.lookup('service:router'), 'transitionTo');
|
||
|
||
await this.renderComponent();
|
||
|
||
assert
|
||
.dom('[data-test-alert-description]')
|
||
.hasText(
|
||
'You won’t be able to access these credentials later, so please copy them now.',
|
||
'Warning alert renders'
|
||
);
|
||
assert.dom('[data-test-row-value="Account name"]').hasText('foo.bar', 'Account name renders');
|
||
await click('[data-test-button="toggle-masked"]');
|
||
assert.dom('[data-test-value-div="Password"] .masked-value').hasText('password', 'Password renders');
|
||
assert
|
||
.dom('[data-test-row-value="Lease ID"]')
|
||
.hasText('ldap/library/test/check-out/123', 'Lease ID renders');
|
||
assert
|
||
.dom('[data-test-value-div="Lease renewable"] svg')
|
||
.hasClass('flight-icon-check-circle', 'Lease renewable true icon renders');
|
||
assert
|
||
.dom('[data-test-value-div="Lease renewable"] svg')
|
||
.hasClass('has-text-success', 'Lease renewable true icon color renders');
|
||
assert.dom('[data-test-value-div="Lease renewable"] span').hasText('True', 'Lease renewable renders');
|
||
|
||
this.creds.renewable = false;
|
||
await this.renderComponent();
|
||
assert
|
||
.dom('[data-test-value-div="Lease renewable"] svg')
|
||
.hasClass('flight-icon-x-circle', 'Lease renewable false icon renders');
|
||
assert
|
||
.dom('[data-test-value-div="Lease renewable"] svg')
|
||
.hasClass('has-text-danger', 'Lease renewable false icon color renders');
|
||
assert.dom('[data-test-value-div="Lease renewable"] span').hasText('False', 'Lease renewable renders');
|
||
|
||
await click('[data-test-done]');
|
||
const didTransition = transitionStub.calledWith(
|
||
'vault.cluster.secrets.backend.ldap.libraries.library.details.accounts'
|
||
);
|
||
assert.true(didTransition, 'Transitions to accounts route on done');
|
||
});
|
||
});
|