mirror of
https://github.com/optim-enterprises-bv/vault.git
synced 2025-11-01 02:57:59 +00:00
UI: Fix oidc auth method missing default_role field (#28539)
* add auth-config/oidc to openapi model helper * alphabetize * update maskedinput selector to be standard data-test-input * add test * add changelog * fix maskedinput test and kv selector * final textarea selector!
This commit is contained in:
@@ -6,13 +6,16 @@
|
||||
import { module, test } from 'qunit';
|
||||
import { setupRenderingTest } from 'ember-qunit';
|
||||
import { render, focus, triggerKeyEvent, typeIn, fillIn, click } from '@ember/test-helpers';
|
||||
import { create } from 'ember-cli-page-object';
|
||||
import hbs from 'htmlbars-inline-precompile';
|
||||
import sinon from 'sinon';
|
||||
import maskedInput from 'vault/tests/pages/components/masked-input';
|
||||
|
||||
const component = create(maskedInput);
|
||||
|
||||
const SELECTORS = {
|
||||
copyBtn: '[data-test-copy-button]',
|
||||
downloadBtn: '[data-test-download-button]',
|
||||
toggle: '[data-test-button="toggle-masked"]',
|
||||
downloadIcon: '[data-test-download-icon]',
|
||||
stringify: '[data-test-stringify-toggle]',
|
||||
};
|
||||
module('Integration | Component | masked input', function (hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
|
||||
@@ -26,14 +29,14 @@ module('Integration | Component | masked input', function (hooks) {
|
||||
test('it renders', async function (assert) {
|
||||
await render(hbs`<MaskedInput />`);
|
||||
assert.dom('[data-test-masked-input]').exists('shows masked input');
|
||||
assert.ok(component.textareaIsPresent);
|
||||
assert.dom('[data-test-textarea]').hasClass('masked-font', 'it renders an input with obscure font');
|
||||
assert.notOk(component.copyButtonIsPresent, 'does not render copy button by default');
|
||||
assert.notOk(component.downloadButtonIsPresent, 'does not render download button by default');
|
||||
assert.dom('textarea').exists();
|
||||
assert.dom('textarea').hasClass('masked-font', 'it renders an input with obscure font');
|
||||
assert.dom(SELECTORS.copyBtn).doesNotExist('does not render copy button by default');
|
||||
assert.dom('[data-test-download-button]').doesNotExist('does not render download button by default');
|
||||
|
||||
await component.toggleMasked();
|
||||
await click(SELECTORS.toggle);
|
||||
assert.dom('.masked-value').doesNotHaveClass('masked-font', 'it unmasks when show button is clicked');
|
||||
await component.toggleMasked();
|
||||
await click(SELECTORS.toggle);
|
||||
assert.dom('.masked-value').hasClass('masked-font', 'it remasks text when button is clicked');
|
||||
});
|
||||
|
||||
@@ -42,21 +45,21 @@ module('Integration | Component | masked input', function (hooks) {
|
||||
await render(hbs`<MaskedInput @displayOnly={{true}} @value={{this.value}} />`);
|
||||
|
||||
assert.dom('.masked-value').hasClass('masked-font', 'value has obscured font');
|
||||
assert.notOk(component.textareaIsPresent, 'it does not render a textarea when displayOnly is true');
|
||||
assert.dom('textarea').doesNotExist('it does not render a textarea when displayOnly is true');
|
||||
});
|
||||
|
||||
test('it renders a copy button when allowCopy is true', async function (assert) {
|
||||
this.set('value', { some: 'object' });
|
||||
await render(hbs`<MaskedInput @allowCopy={{true}} @value={{this.value}} />`);
|
||||
assert.ok(component.copyButtonIsPresent);
|
||||
assert.dom(SELECTORS.copyBtn).exists();
|
||||
});
|
||||
|
||||
test('it renders a download button when allowDownload is true', async function (assert) {
|
||||
await render(hbs`<MaskedInput @allowDownload={{true}} /> `);
|
||||
assert.ok(component.downloadIconIsPresent);
|
||||
assert.dom(SELECTORS.downloadIcon).exists();
|
||||
|
||||
await click('[data-test-download-icon]');
|
||||
assert.ok(component.downloadButtonIsPresent, 'clicking download icon opens modal with download button');
|
||||
await click(SELECTORS.downloadIcon);
|
||||
assert.dom(SELECTORS.downloadBtn).exists('clicking download icon opens modal with download button');
|
||||
});
|
||||
|
||||
test('it shortens all outputs when displayOnly and masked', async function (assert) {
|
||||
@@ -65,7 +68,7 @@ module('Integration | Component | masked input', function (hooks) {
|
||||
const maskedValue = document.querySelector('.masked-value').innerText;
|
||||
assert.strictEqual(maskedValue.length, 11);
|
||||
|
||||
await component.toggleMasked();
|
||||
await click(SELECTORS.toggle);
|
||||
const unMaskedValue = document.querySelector('.masked-value').innerText;
|
||||
assert.strictEqual(unMaskedValue.length, this.value.length);
|
||||
});
|
||||
@@ -83,7 +86,7 @@ module('Integration | Component | masked input', function (hooks) {
|
||||
this.set('value', 'before');
|
||||
this.set('onChange', changeSpy);
|
||||
await render(hbs`<MaskedInput @value={{this.value}} @onChange={{this.onChange}} />`);
|
||||
await fillIn('[data-test-textarea]', 'after');
|
||||
await fillIn('textarea', 'after');
|
||||
assert.true(changeSpy.calledWith('after'));
|
||||
});
|
||||
|
||||
@@ -92,7 +95,7 @@ module('Integration | Component | masked input', function (hooks) {
|
||||
this.set('value', '');
|
||||
this.set('onKeyUp', keyupSpy);
|
||||
await render(hbs`<MaskedInput @name="foo" @value={{this.value}} @onKeyUp={{this.onKeyUp}} />`);
|
||||
await typeIn('[data-test-textarea]', 'baz');
|
||||
await typeIn('textarea', 'baz');
|
||||
assert.true(keyupSpy.calledThrice, 'calls for each letter of typing');
|
||||
assert.true(keyupSpy.firstCall.calledWithExactly('foo', 'b'));
|
||||
assert.true(keyupSpy.secondCall.calledWithExactly('foo', 'ba'));
|
||||
@@ -102,8 +105,8 @@ module('Integration | Component | masked input', function (hooks) {
|
||||
test('it does not remove value on tab', async function (assert) {
|
||||
this.set('value', 'hello');
|
||||
await render(hbs`<MaskedInput @value={{this.value}} />`);
|
||||
await triggerKeyEvent('[data-test-textarea]', 'keydown', 9);
|
||||
await component.toggleMasked();
|
||||
await triggerKeyEvent('textarea', 'keydown', 9);
|
||||
await click(SELECTORS.toggle);
|
||||
const unMaskedValue = document.querySelector('.masked-value').value;
|
||||
assert.strictEqual(unMaskedValue, this.value);
|
||||
});
|
||||
@@ -119,11 +122,11 @@ module('Integration | Component | masked input', function (hooks) {
|
||||
/>
|
||||
`);
|
||||
assert.dom('[data-test-masked-input]').exists('shows masked input');
|
||||
assert.ok(component.copyButtonIsPresent);
|
||||
assert.ok(component.downloadIconIsPresent);
|
||||
assert.dom('[data-test-button="toggle-masked"]').exists('shows toggle mask button');
|
||||
assert.dom(SELECTORS.copyBtn).exists();
|
||||
assert.dom(SELECTORS.downloadIcon).exists();
|
||||
assert.dom(SELECTORS.toggle).exists('shows toggle mask button');
|
||||
|
||||
await component.toggleMasked();
|
||||
await click(SELECTORS.toggle);
|
||||
assert.dom('.masked-value').doesNotHaveClass('masked-font', 'it unmasks when show button is clicked');
|
||||
assert
|
||||
.dom('[data-test-icon="minus"]')
|
||||
@@ -154,12 +157,12 @@ module('Integration | Component | masked input', function (hooks) {
|
||||
/>
|
||||
`);
|
||||
|
||||
await click('[data-test-download-icon]');
|
||||
assert.dom('[data-test-stringify-toggle]').isNotChecked('Stringify toggle off as default');
|
||||
await click('[data-test-download-button]');
|
||||
await click(SELECTORS.downloadIcon);
|
||||
assert.dom(SELECTORS.stringify).isNotChecked('Stringify toggle off as default');
|
||||
await click(SELECTORS.downloadBtn);
|
||||
|
||||
await click('[data-test-download-icon]');
|
||||
await click('[data-test-stringify-toggle]');
|
||||
await click('[data-test-download-button]');
|
||||
await click(SELECTORS.downloadIcon);
|
||||
await click(SELECTORS.stringify);
|
||||
await click(SELECTORS.downloadBtn);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user