diff --git a/ui/admin/app/components/auth-methods/auth-method/accounts/account/actions/index.hbs b/ui/admin/app/components/auth-methods/auth-method/accounts/account/actions/index.hbs index abfdaa9b2..ec74baae3 100644 --- a/ui/admin/app/components/auth-methods/auth-method/accounts/account/actions/index.hbs +++ b/ui/admin/app/components/auth-methods/auth-method/accounts/account/actions/index.hbs @@ -4,7 +4,7 @@ }} {{#if (can 'delete account' @model)}} - + {{/if}} - + {{#if @model.isPrimary}} item !== 'read'); await visit(urls.accounts); - assert.dom(ACCOUNT_SELECTOR).doesNotExist(); + + assert.dom(commonSelectors.TABLE_FIRST_ROW_RESOURCE_LINK).doesNotExist(); }); test('user can navigate to account and incorrect url autocorrects', async function (assert) { diff --git a/ui/admin/tests/acceptance/accounts/selectors.js b/ui/admin/tests/acceptance/accounts/selectors.js index 952933231..81ee2d29a 100644 --- a/ui/admin/tests/acceptance/accounts/selectors.js +++ b/ui/admin/tests/acceptance/accounts/selectors.js @@ -7,11 +7,13 @@ export const APP_HEADER_DROPDOWN = '.rose-header-utilities details:first-child summary'; export const MANAGE_DROPDOWN_AUTH_METHOD = - '[data-test-manage-auth-methods-dropdown] button'; + '[data-test-manage-auth-method] button'; export const MANAGE_DROPDOWN_ACCOUNT = - '[data-test-manage-account-auth-methods] button'; + '[data-test-manage-account-auth-method] button'; export const MANAGE_DROPDOWN_DELETE_ACCOUNT = - '[data-test-manage-account-auth-methods] ul li button'; + '[data-test-manage-account-auth-method] ul li button'; +export const MANAGE_DROPDOWN_CREATE_ACCOUNT = + '[data-test-manage-auth-method] ul li:nth-child(2) a'; export const FIELD_CURRENT_PASSWORD = '[name=currentPassword]'; export const FIELD_CURRENT_PASSWORD_VALUE = 'current password'; diff --git a/ui/admin/tests/acceptance/accounts/set-password-test.js b/ui/admin/tests/acceptance/accounts/set-password-test.js index 9f529bab4..86d4932e4 100644 --- a/ui/admin/tests/acceptance/accounts/set-password-test.js +++ b/ui/admin/tests/acceptance/accounts/set-password-test.js @@ -4,7 +4,7 @@ */ import { module, test } from 'qunit'; -import { visit, currentURL, click, find, fillIn } from '@ember/test-helpers'; +import { visit, currentURL, click, fillIn } from '@ember/test-helpers'; import { setupApplicationTest } from 'ember-qunit'; import setupMirage from 'ember-cli-mirage/test-support/setup-mirage'; import a11yAudit from 'ember-a11y-testing/test-support/audit'; @@ -15,6 +15,8 @@ import { //currentSession, //invalidateSession, } from 'ember-simple-auth/test-support'; +import * as selectors from './selectors'; +import * as commonSelectors from 'admin/tests/helpers/selectors'; module('Acceptance | accounts | set password', function (hooks) { setupApplicationTest(hooks); @@ -25,13 +27,13 @@ module('Acceptance | accounts | set password', function (hooks) { global: null, org: null, }, - authMethods: null, + authMethod: null, account: null, }; const urls = { orgScope: null, - authMethods: null, - accounts: null, + authMethod: null, + account: null, setPassword: null, }; @@ -51,24 +53,22 @@ module('Acceptance | accounts | set password', function (hooks) { }); // Generate route URLs for resources urls.orgScope = `/scopes/${instances.scopes.org.id}`; - urls.authMethods = `${urls.orgScope}/auth-methods`; - urls.authMethod = `${urls.authMethods}/${instances.authMethod.id}`; - urls.accounts = `${urls.authMethod}/accounts`; - urls.account = `${urls.accounts}/${instances.account.id}`; + urls.authMethod = `${urls.orgScope}/auth-methods/${instances.authMethod.id}`; + urls.account = `${urls.authMethod}/accounts/${instances.account.id}`; urls.setPassword = `${urls.account}/set-password`; }); test('visiting account set password', async function (assert) { await visit(urls.setPassword); + await a11yAudit(); assert.strictEqual(currentURL(), urls.setPassword); }); test('can navigate to route with proper authorization', async function (assert) { await visit(urls.account); - assert.ok( - find(`.rose-layout-page-navigation [href="${urls.setPassword}"]`), - ); + + assert.dom(commonSelectors.HREF(urls.setPassword)).isVisible(); }); test('cannot navigate to route without proper authorization', async function (assert) { @@ -76,10 +76,10 @@ module('Acceptance | accounts | set password', function (hooks) { (item) => item !== 'set-password', ); instances.account.update({ authorized_actions }); + await visit(urls.account); - assert.notOk( - find(`.rose-layout-page-navigation [href="${urls.setPassword}"]`), - ); + + assert.dom(commonSelectors.HREF(urls.setPassword)).doesNotExist(); }); test('can set a new password for account', async function (assert) { @@ -97,20 +97,21 @@ module('Acceptance | accounts | set password', function (hooks) { return { id }; }, ); + await visit(urls.setPassword); - await fillIn('[name="password"]', 'update password'); - await click('form [type="submit"]:not(:disabled)'); + + await fillIn(selectors.FIELD_PASSWORD, 'update password'); + await click(commonSelectors.SAVE_BTN); await a11yAudit(); }); - // NOTE: since set password is a tabbed route with easy navigation away - // from the form, and the form does not directly operate on a model instance, - // a "cancel" flow doesn't make much sense. Disabling for now. - test.skip('can cancel setting new password', async function (assert) { + test('can cancel setting new password by navigating away', async function (assert) { await visit(urls.setPassword); - await fillIn('[name="password"]', 'update password'); - await click('form button:not([type="submit"])'); - assert.notOk(find('[name="password"]').textContent.trim()); + + await fillIn(selectors.FIELD_PASSWORD, selectors.FIELD_PASSWORD_VALUE); + await click(commonSelectors.HREF(urls.account)); + + assert.strictEqual(currentURL(), urls.account); }); test('errors are displayed when setting password fails', async function (assert) { @@ -125,10 +126,12 @@ module('Acceptance | accounts | set password', function (hooks) { }, ); }); + await visit(urls.setPassword); - await fillIn('[name="password"]', 'update password'); - await click('form [type="submit"]'); + await fillIn(selectors.FIELD_PASSWORD, selectors.FIELD_PASSWORD_VALUE); + await click(commonSelectors.SAVE_BTN); + + assert.dom(commonSelectors.ALERT_TOAST).isVisible(); await a11yAudit(); - assert.ok(find('[role="alert"]')); }); }); diff --git a/ui/admin/tests/acceptance/auth-methods/create-test.js b/ui/admin/tests/acceptance/auth-methods/create-test.js index 23a3faf45..20686e066 100644 --- a/ui/admin/tests/acceptance/auth-methods/create-test.js +++ b/ui/admin/tests/acceptance/auth-methods/create-test.js @@ -48,9 +48,9 @@ module('Acceptance | auth-methods | create', function (hooks) { const TOGGLE_SELECTOR = '[name="prompts"]'; const MANAGE_DROPDOWN_SELECTOR = - '[data-test-manage-auth-methods-dropdown] div:first-child button'; + '[data-test-manage-auth-method] div:first-child button'; const MAKE_PRIMARY_SELECTOR = - '[data-test-manage-auth-methods-dropdown] ul li:first-child button'; + '[data-test-manage-auth-method] ul li:first-child button'; let getAuthMethodsCount; let featuresService; diff --git a/ui/admin/tests/acceptance/auth-methods/delete-test.js b/ui/admin/tests/acceptance/auth-methods/delete-test.js index 5b9cd6fb4..cafbcc977 100644 --- a/ui/admin/tests/acceptance/auth-methods/delete-test.js +++ b/ui/admin/tests/acceptance/auth-methods/delete-test.js @@ -31,9 +31,9 @@ module('Acceptance | auth-methods | delete', function (hooks) { const ERROR_MSG_SELECTOR = '.rose-notification-body'; const MANAGE_DROPDOWN_SELECTOR = - '[data-test-manage-auth-methods-dropdown] div:first-child button'; + '[data-test-manage-auth-method] div:first-child button'; const DELETE_ACTION_SELECTOR = - '[data-test-manage-auth-methods-dropdown] ul li:last-child button'; + '[data-test-manage-auth-method] ul li:last-child button'; const instances = { scopes: { diff --git a/ui/admin/tests/acceptance/managed-groups/create-test.js b/ui/admin/tests/acceptance/managed-groups/create-test.js index b9fe4ed63..e14bb8980 100644 --- a/ui/admin/tests/acceptance/managed-groups/create-test.js +++ b/ui/admin/tests/acceptance/managed-groups/create-test.js @@ -30,8 +30,7 @@ module('Acceptance | managed-groups | create', function (hooks) { const DESC_INPUT_SELECTOR = '[name="description"]'; const ERROR_MSG_SELECTOR = '.rose-notification-body'; const FIELD_ERROR_TEXT_SELECTOR = '.hds-form-error__message'; - const MANAGE_DROPDOWN_SELECTOR = - '[data-test-manage-auth-methods-dropdown] div button'; + const MANAGE_DROPDOWN_SELECTOR = '[data-test-manage-auth-method] div button'; const instances = { scopes: { diff --git a/ui/admin/tests/acceptance/managed-groups/list-test.js b/ui/admin/tests/acceptance/managed-groups/list-test.js index b25356ea6..9c1139ecb 100644 --- a/ui/admin/tests/acceptance/managed-groups/list-test.js +++ b/ui/admin/tests/acceptance/managed-groups/list-test.js @@ -20,8 +20,7 @@ module('Acceptance | managed-groups | list', function (hooks) { setupIndexedDb(hooks); let featuresService; - const MANAGE_DROPDOWN_SELECTOR = - '[data-test-manage-auth-methods-dropdown] div button'; + const MANAGE_DROPDOWN_SELECTOR = '[data-test-manage-auth-method] div button'; const instances = { scopes: {