From dc7ebec668f71958e7e7f4d5f70d8e46b510c7a3 Mon Sep 17 00:00:00 2001 From: Carlos Alcaide Date: Tue, 27 Jul 2021 14:15:59 -0700 Subject: [PATCH 1/3] =?UTF-8?q?test:=20=F0=9F=92=8D=20Add=20creation=20err?= =?UTF-8?q?or=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add credential library creation error tests --- .../credential-library-test.js | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/ui/admin/tests/acceptance/credential-library/credential-library-test.js b/ui/admin/tests/acceptance/credential-library/credential-library-test.js index a23fac3f2..77dbc0912 100644 --- a/ui/admin/tests/acceptance/credential-library/credential-library-test.js +++ b/ui/admin/tests/acceptance/credential-library/credential-library-test.js @@ -137,6 +137,112 @@ module('Acceptance | credential-library', function (hooks) { ); }); + test.skip('can save changes to existing credential library', async function (assert) { + assert.expect(3); + assert.notEqual(instances.credentialLibrary.name, 'random string'); + await visit(urls.credentialLibrary); + await click('form [type="button"]', 'Activate edit mode'); + await fillIn('[name="name"]', 'random string'); + await click('.rose-form-actions [type="submit"]'); + assert.equal(currentURL(), urls.credentialLibrary); + assert.equal( + this.server.schema.credentialLibraries.all().models[0].name, + 'random string' + ); + }); + + test('can cancel changes to existing credential library', async function (assert) { + assert.expect(2); + await visit(urls.credentialLibrary); + await click('form [type="button"]', 'Activate edit mode'); + await fillIn('[name="name"]', 'random string'); + await click('.rose-form-actions [type="button"]'); + assert.notEqual(instances.credentialStore.name, 'random string'); + assert.equal(find('[name="name"]').value, instances.credentialLibrary.name); + }); + + test('saving an existing credential library with invalid fields displays error messages', async function (assert) { + assert.expect(2); + this.server.patch('/credential-libraries/:id', () => { + return new Response( + 400, + {}, + { + status: 400, + code: 'invalid_argument', + message: 'The request was invalid.', + details: { + request_fields: [ + { + name: 'name', + description: 'Name is required', + }, + ], + }, + } + ); + }); + await visit(urls.credentialLibrary); + await click('form [type="button"]', 'Activate edit mode'); + await fillIn('[name="name"]', 'random string'); + await click('[type="submit"]'); + assert.ok( + find('[role="alert"]').textContent.trim(), + 'The request was invalid.' + ); + assert.ok( + find('.rose-form-error-message').textContent.trim(), + 'Name is required.' + ); + }); + + test('can discard unsaved credential library changes via dialog', async function (assert) { + assert.expect(5); + const confirmService = this.owner.lookup('service:confirm'); + confirmService.enabled = true; + assert.notEqual(instances.credentialLibrary.name, 'random string'); + + await visit(urls.credentialLibrary); + await click('form [type="button"]', 'Activate edit mode'); + await fillIn('[name="name"]', 'random string'); + assert.equal(currentURL(), urls.credentialLibrary); + + try { + await visit(urls.credentialLibraries); + } catch (e) { + assert.ok(find('.rose-dialog')); + await click('.rose-dialog-footer button:first-child', 'Click Discard'); + assert.equal(currentURL(), urls.credentialLibraries); + assert.notEqual( + this.server.schema.credentialLibraries.all().models[0].name, + 'random string' + ); + } + }); + + test('can cancel discard unsaved credential library via dialog', async function (assert) { + assert.expect(5); + const confirmService = this.owner.lookup('service:confirm'); + confirmService.enabled = true; + assert.notEqual(instances.credentialLibrary.name, 'random string'); + await visit(urls.credentialLibrary); + await click('form [type="button"]', 'Activate edit mode'); + await fillIn('[name="name"]', 'random string'); + assert.equal(currentURL(), urls.credentialLibrary); + + try { + await visit(urls.credentialLibraries); + } catch (e) { + assert.ok(find('.rose-dialog')); + await click('.rose-dialog-footer button:last-child'); + assert.equal(currentURL(), urls.credentialLibrary); + assert.notEqual( + this.server.schema.credentialLibraries.all().models[0].name, + 'random string' + ); + } + }); + test('can delete credential library', async function (assert) { assert.expect(1); const count = getCredentialLibraryCount(); From 8cceb4090fcc6ba59da7021fe146aeb68a80c818 Mon Sep 17 00:00:00 2001 From: Carlos Alcaide Date: Tue, 27 Jul 2021 14:27:13 -0700 Subject: [PATCH 2/3] =?UTF-8?q?refactor:=20=F0=9F=92=A1=20Change=20save=20?= =?UTF-8?q?crdential=20library=20behaviour?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change save credential library behaviour to not redirect after saving a change --- .../credential-stores/credential-store/credential-libraries.js | 3 ++- .../acceptance/credential-library/credential-library-test.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries.js b/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries.js index d9602dba4..84684ecfd 100644 --- a/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries.js +++ b/ui/admin/app/routes/scopes/scope/credential-stores/credential-store/credential-libraries.js @@ -47,7 +47,8 @@ export default class ScopesScopeCredentialStoresCredentialStoreCredentialLibrari async save(credentialLibrary) { await credentialLibrary.save(); await this.transitionTo( - 'scopes.scope.credential-stores.credential-store.credential-libraries' + 'scopes.scope.credential-stores.credential-store.credential-libraries.credential-library', + credentialLibrary ); this.refresh(); } diff --git a/ui/admin/tests/acceptance/credential-library/credential-library-test.js b/ui/admin/tests/acceptance/credential-library/credential-library-test.js index 77dbc0912..245fc7157 100644 --- a/ui/admin/tests/acceptance/credential-library/credential-library-test.js +++ b/ui/admin/tests/acceptance/credential-library/credential-library-test.js @@ -137,7 +137,7 @@ module('Acceptance | credential-library', function (hooks) { ); }); - test.skip('can save changes to existing credential library', async function (assert) { + test('can save changes to existing credential library', async function (assert) { assert.expect(3); assert.notEqual(instances.credentialLibrary.name, 'random string'); await visit(urls.credentialLibrary); From 4240bbee56041c9c712f02f08594a7b2d3c368ed Mon Sep 17 00:00:00 2001 From: Carlos Alcaide Date: Wed, 28 Jul 2021 10:51:57 -0700 Subject: [PATCH 3/3] =?UTF-8?q?test:=20=F0=9F=92=8D=20Change=20assertion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change assertion to avoid false positive --- .../acceptance/credential-library/credential-library-test.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ui/admin/tests/acceptance/credential-library/credential-library-test.js b/ui/admin/tests/acceptance/credential-library/credential-library-test.js index ce2265856..c2b71f8f1 100644 --- a/ui/admin/tests/acceptance/credential-library/credential-library-test.js +++ b/ui/admin/tests/acceptance/credential-library/credential-library-test.js @@ -157,7 +157,10 @@ module('Acceptance | credential-library', function (hooks) { await click('form [type="button"]', 'Activate edit mode'); await fillIn('[name="name"]', 'random string'); await click('.rose-form-actions [type="button"]'); - assert.notEqual(instances.credentialStore.name, 'random string'); + assert.notEqual( + this.server.schema.credentialLibraries.all().models[0].name, + 'random string' + ); assert.equal(find('[name="name"]').value, instances.credentialLibrary.name); });