diff --git a/ui/admin/app/components/form/field/secret-input/index.hbs b/ui/admin/app/components/form/field/secret-input/index.hbs index 3b45d9e12..c3c1ab1a0 100644 --- a/ui/admin/app/components/form/field/secret-input/index.hbs +++ b/ui/admin/app/components/form/field/secret-input/index.hbs @@ -3,7 +3,7 @@ SPDX-License-Identifier: MPL-2.0 }} -
+
{{#if (or this.isDisabled this.isActionable)}} {{/if}} @@ -15,7 +15,6 @@ name={{@name}} disabled={{or @isDisabled (not this.isEditing)}} @hasVisibilityToggle={{false}} - ...attributes as |F| > {{yield F}} diff --git a/ui/admin/app/components/form/storage-bucket/aws/index.hbs b/ui/admin/app/components/form/storage-bucket/aws/index.hbs index 7397d762b..f7c1cf71d 100644 --- a/ui/admin/app/components/form/storage-bucket/aws/index.hbs +++ b/ui/admin/app/components/form/storage-bucket/aws/index.hbs @@ -302,6 +302,7 @@ @isDisabled={{form.disabled}} @showEditButton={{true}} @cancel={{fn @rollbackSecretAttrs 'access_key_id'}} + data-test-access-key-id {{on 'input' (set-from-event @model 'access_key_id')}} as |F| > @@ -322,6 +323,7 @@ @isDisabled={{form.disabled}} @showEditButton={{true}} @cancel={{fn @rollbackSecretAttrs 'secret_access_key'}} + data-test-secret-access-key {{on 'input' (set-from-event @model 'secret_access_key')}} as |F| > diff --git a/ui/admin/app/components/form/storage-bucket/minio/index.hbs b/ui/admin/app/components/form/storage-bucket/minio/index.hbs index 9a3196a69..ad494f593 100644 --- a/ui/admin/app/components/form/storage-bucket/minio/index.hbs +++ b/ui/admin/app/components/form/storage-bucket/minio/index.hbs @@ -276,6 +276,7 @@ @isDisabled={{form.disabled}} @showEditButton={{true}} @cancel={{fn @rollbackSecretAttrs 'access_key_id'}} + data-test-access-key-id {{on 'input' (set-from-event @model 'access_key_id')}} as |F| > @@ -296,6 +297,7 @@ @isDisabled={{form.disabled}} @showEditButton={{true}} @cancel={{fn @rollbackSecretAttrs 'secret_access_key'}} + data-test-secret-access-key {{on 'input' (set-from-event @model 'secret_access_key')}} as |F| > diff --git a/ui/admin/tests/acceptance/storage-buckets/create-test.js b/ui/admin/tests/acceptance/storage-buckets/create-test.js index 3c03607d3..d9ea5995d 100644 --- a/ui/admin/tests/acceptance/storage-buckets/create-test.js +++ b/ui/admin/tests/acceptance/storage-buckets/create-test.js @@ -10,6 +10,7 @@ import setupMirage from 'ember-cli-mirage/test-support/setup-mirage'; import a11yAudit from 'ember-a11y-testing/test-support/audit'; import { Response } from 'miragejs'; import { authenticateSession } from 'ember-simple-auth/test-support'; +import * as selectors from './selectors'; module('Acceptance | storage-buckets | create', function (hooks) { setupApplicationTest(hooks); @@ -18,25 +19,6 @@ module('Acceptance | storage-buckets | create', function (hooks) { let features; let getStorageBucketCount; - const SAVE_BTN_SELECTOR = '[type="submit"]'; - const CANCEL_BTN_SELECTOR = '.rose-form-actions [type="button"]'; - const NAME_FIELD_SELECTOR = '[name="name"]'; - const ALERT_TEXT_SELECTOR = '[role="alert"] div'; - const FIELD_ERROR_TEXT_SELECTOR = '.hds-form-error__message'; - const NAME_FIELD_TEXT = 'random string'; - const BUCKET_NAME_FIELD_SELECTOR = '[name="bucket_name"]'; - const BUCKET_PREFIX_FIELD_SELECTOR = '[name="bucket_prefix"]'; - const STATIC_CREDENTIAL_SELECTOR = '[value="static"]'; - const DYNAMIC_CREDENTIAL_SELECTOR = '[value="dynamic"]'; - const ROLE_ARN_SELECTOR = '[name="role_arn"]'; - const ACCESS_KEY_SELECTOR = '[name="access_key_id"]'; - const SECRET_KEY_SELECTOR = '[name="secret_access_key"]'; - const SCOPE_SELECTOR = '[name=scope]'; - const CREDENTIAL_TYPE_GROUP_SELECTOR = '[name=credential_type]'; - const MINIO_PLUGIN_TYPE_SELECTOR = '[value=minio]'; - const ENDPOINT_URL_SELECTOR = '[name=endpoint_url]'; - const ENDPOINT_URL_TEXT = 'http://www.hashicorp.com'; - const instances = { scopes: { global: null, @@ -72,20 +54,20 @@ module('Acceptance | storage-buckets | create', function (hooks) { await visit(urls.storageBuckets); await click(`[href="${urls.newStorageBucket}"]`); - await fillIn(NAME_FIELD_SELECTOR, NAME_FIELD_TEXT); - await select(SCOPE_SELECTOR, 'global'); + await fillIn(selectors.FIELD_NAME, selectors.FIELD_NAME_VALUE); + await select(selectors.FIELD_SCOPE, 'global'); - assert.dom(BUCKET_NAME_FIELD_SELECTOR).isNotDisabled(); - assert.dom(BUCKET_PREFIX_FIELD_SELECTOR).isNotDisabled(); - assert.dom(BUCKET_NAME_FIELD_SELECTOR).doesNotHaveAttribute('readOnly'); - assert.dom(BUCKET_PREFIX_FIELD_SELECTOR).doesNotHaveAttribute('readOnly'); + assert.dom(selectors.FIELD_BUCKET_NAME).isNotDisabled(); + assert.dom(selectors.FIELD_BUCKET_PREFIX).isNotDisabled(); + assert.dom(selectors.FIELD_BUCKET_NAME).doesNotHaveAttribute('readOnly'); + assert.dom(selectors.FIELD_BUCKET_PREFIX).doesNotHaveAttribute('readOnly'); - await click(SAVE_BTN_SELECTOR); + await click(selectors.SAVE_BTN); const storageBucket = this.server.schema.storageBuckets.findBy({ - name: NAME_FIELD_TEXT, + name: selectors.FIELD_NAME_VALUE, }); - assert.strictEqual(storageBucket.name, NAME_FIELD_TEXT); + assert.strictEqual(storageBucket.name, selectors.FIELD_NAME_VALUE); assert.strictEqual(storageBucket.scopeId, 'global'); assert.strictEqual(getStorageBucketCount(), storageBucketCount + 1); }); @@ -95,21 +77,21 @@ module('Acceptance | storage-buckets | create', function (hooks) { await visit(urls.storageBuckets); await click(`[href="${urls.newStorageBucket}"]`); - await fillIn(NAME_FIELD_SELECTOR, NAME_FIELD_TEXT); - await select(SCOPE_SELECTOR, instances.scopes.org.id); + await fillIn(selectors.FIELD_NAME, selectors.FIELD_NAME_VALUE); + await select(selectors.FIELD_SCOPE, instances.scopes.org.id); - assert.dom(BUCKET_NAME_FIELD_SELECTOR).isNotDisabled(); - assert.dom(BUCKET_PREFIX_FIELD_SELECTOR).isNotDisabled(); - assert.dom(BUCKET_NAME_FIELD_SELECTOR).doesNotHaveAttribute('readOnly'); - assert.dom(BUCKET_PREFIX_FIELD_SELECTOR).doesNotHaveAttribute('readOnly'); + assert.dom(selectors.FIELD_BUCKET_NAME).isNotDisabled(); + assert.dom(selectors.FIELD_BUCKET_PREFIX).isNotDisabled(); + assert.dom(selectors.FIELD_BUCKET_NAME).doesNotHaveAttribute('readOnly'); + assert.dom(selectors.FIELD_BUCKET_PREFIX).doesNotHaveAttribute('readOnly'); - await click(SAVE_BTN_SELECTOR); + await click(selectors.SAVE_BTN); const storageBucket = this.server.schema.storageBuckets.findBy({ - name: NAME_FIELD_TEXT, + name: selectors.FIELD_NAME_VALUE, }); - assert.dom(ALERT_TEXT_SELECTOR).hasText('Saved successfully.'); - assert.strictEqual(storageBucket.name, NAME_FIELD_TEXT); + assert.dom(selectors.TOAST).hasText(selectors.TOAST_SUCCESSFULL_VALUE); + assert.strictEqual(storageBucket.name, selectors.FIELD_NAME_VALUE); assert.strictEqual(storageBucket.scopeId, instances.scopes.org.id); assert.strictEqual(getStorageBucketCount(), storageBucketCount + 1); }); @@ -122,24 +104,30 @@ module('Acceptance | storage-buckets | create', function (hooks) { await click(`[href="${urls.newStorageBucket}"]`); // Fill the form - await fillIn(NAME_FIELD_SELECTOR, NAME_FIELD_TEXT); - await click(MINIO_PLUGIN_TYPE_SELECTOR); - await select(SCOPE_SELECTOR, instances.scopes.org.id); - await fillIn(ENDPOINT_URL_SELECTOR, ENDPOINT_URL_TEXT); - await fillIn(BUCKET_NAME_FIELD_SELECTOR, 'Test SB'); - await fillIn(ACCESS_KEY_SELECTOR, 'access_key_id'); - await fillIn(SECRET_KEY_SELECTOR, 'secret_access_key'); - await click(SAVE_BTN_SELECTOR); + await fillIn(selectors.FIELD_NAME, selectors.FIELD_NAME_VALUE); + await click(selectors.FIELD_PLUGIN_TYPE_MINIO); + await select(selectors.FIELD_SCOPE, instances.scopes.org.id); + await fillIn( + selectors.FIELD_ENDPOINT_URL, + selectors.FIELD_ENDPOINT_URL_VALUE, + ); + await fillIn( + selectors.FIELD_BUCKET_NAME, + selectors.FIELD_BUCKET_NAME_VALUE, + ); + await fillIn(selectors.FIELD_ACCESS_KEY, selectors.FIELD_ACCESS_KEY_VALUE); + await fillIn(selectors.FIELD_SECRET_KEY, selectors.FIELD_SECRET_KEY_VALUE); + await click(selectors.SAVE_BTN); // Assertions const storageBucket = this.server.schema.storageBuckets.findBy({ - name: NAME_FIELD_TEXT, + name: selectors.FIELD_NAME_VALUE, }); - assert.dom(ALERT_TEXT_SELECTOR).hasText('Saved successfully.'); - assert.strictEqual(storageBucket.name, NAME_FIELD_TEXT); + assert.dom(selectors.TOAST).hasText(selectors.TOAST_SUCCESSFULL_VALUE); + assert.strictEqual(storageBucket.name, selectors.FIELD_NAME_VALUE); assert.strictEqual( storageBucket.attributes.endpoint_url, - ENDPOINT_URL_TEXT, + selectors.FIELD_ENDPOINT_URL_VALUE, ); assert.strictEqual(storageBucket.attributes.role_arn, null); assert.strictEqual(storageBucket.plugin.name, 'minio'); @@ -152,22 +140,22 @@ module('Acceptance | storage-buckets | create', function (hooks) { await visit(urls.storageBuckets); await click(`[href="${urls.newStorageBucket}"]`); - await fillIn(NAME_FIELD_SELECTOR, NAME_FIELD_TEXT); + await fillIn(selectors.FIELD_NAME, selectors.FIELD_NAME_VALUE); // There are 2 credential types assert - .dom(`${CREDENTIAL_TYPE_GROUP_SELECTOR} .hds-form-radio-card`) + .dom(`${selectors.GROUP_CREDENTIAL_TYPE} .hds-form-radio-card`) .exists({ count: 2 }); - await click(DYNAMIC_CREDENTIAL_SELECTOR); - await fillIn(ROLE_ARN_SELECTOR, 'test-arn-id'); + await click(selectors.FIELD_DYNAMIC_CREDENTIAL); + await fillIn(selectors.FIELD_ROLE_ARN, selectors.FIELD_ROLE_ARN_VALUE); - await click(SAVE_BTN_SELECTOR); + await click(selectors.SAVE_BTN); const storageBucket = this.server.schema.storageBuckets.findBy({ - name: NAME_FIELD_TEXT, + name: selectors.FIELD_NAME_VALUE, }); - assert.strictEqual(storageBucket.name, NAME_FIELD_TEXT); + assert.strictEqual(storageBucket.name, selectors.FIELD_NAME_VALUE); //for dynamic credentials, there should be no secret field assert.notOk(storageBucket.secret); assert.strictEqual(getStorageBucketCount(), storageBucketCount + 1); @@ -178,22 +166,22 @@ module('Acceptance | storage-buckets | create', function (hooks) { await visit(urls.storageBuckets); await click(`[href="${urls.newStorageBucket}"]`); - await fillIn(NAME_FIELD_SELECTOR, NAME_FIELD_TEXT); + await fillIn(selectors.FIELD_NAME, selectors.FIELD_NAME_VALUE); assert - .dom(`${CREDENTIAL_TYPE_GROUP_SELECTOR} .hds-form-radio-card`) + .dom(`${selectors.GROUP_CREDENTIAL_TYPE} .hds-form-radio-card`) .exists({ count: 2 }); - await click(STATIC_CREDENTIAL_SELECTOR); - await fillIn(ACCESS_KEY_SELECTOR, 'access_key_id'); - await fillIn(SECRET_KEY_SELECTOR, 'secret_access_key'); + await click(selectors.FIELD_STATIC_CREDENTIAL); + await fillIn(selectors.FIELD_ACCESS_KEY, selectors.FIELD_ACCESS_KEY_VALUE); + await fillIn(selectors.FIELD_SECRET_KEY, selectors.FIELD_SECRET_KEY_VALUE); - await click(SAVE_BTN_SELECTOR); + await click(selectors.SAVE_BTN); const storageBucket = this.server.schema.storageBuckets.findBy({ - name: NAME_FIELD_TEXT, + name: selectors.FIELD_NAME_VALUE, }); - assert.strictEqual(storageBucket.name, NAME_FIELD_TEXT); + assert.strictEqual(storageBucket.name, selectors.FIELD_NAME_VALUE); //for static credentials, role_arn should be null assert.strictEqual(storageBucket.attributes.role_arn, null); assert.strictEqual(getStorageBucketCount(), storageBucketCount + 1); @@ -207,25 +195,31 @@ module('Acceptance | storage-buckets | create', function (hooks) { await click(`[href="${urls.newStorageBucket}"]`); // Fill the form - await fillIn(NAME_FIELD_SELECTOR, NAME_FIELD_TEXT); - await click(MINIO_PLUGIN_TYPE_SELECTOR); - await fillIn(ENDPOINT_URL_SELECTOR, ENDPOINT_URL_TEXT); - await fillIn(BUCKET_NAME_FIELD_SELECTOR, 'Test SB'); - await fillIn(ACCESS_KEY_SELECTOR, 'access_key_id'); - await fillIn(SECRET_KEY_SELECTOR, 'secret_access_key'); + await fillIn(selectors.FIELD_NAME, selectors.FIELD_NAME_VALUE); + await click(selectors.FIELD_PLUGIN_TYPE_MINIO); + await fillIn( + selectors.FIELD_ENDPOINT_URL, + selectors.FIELD_ENDPOINT_URL_VALUE, + ); + await fillIn( + selectors.FIELD_BUCKET_NAME, + selectors.FIELD_BUCKET_NAME_VALUE, + ); + await fillIn(selectors.FIELD_ACCESS_KEY, selectors.FIELD_ACCESS_KEY_VALUE); + await fillIn(selectors.FIELD_SECRET_KEY, selectors.FIELD_SECRET_KEY_VALUE); - await click(SAVE_BTN_SELECTOR); + await click(selectors.SAVE_BTN); // Retrieve recently created SB const storageBucket = await this.server.schema.storageBuckets.findBy({ - name: NAME_FIELD_TEXT, + name: selectors.FIELD_NAME_VALUE, }); // Assertions - assert.strictEqual(storageBucket.name, NAME_FIELD_TEXT); + assert.strictEqual(storageBucket.name, selectors.FIELD_NAME_VALUE); assert.strictEqual( storageBucket.attributes.endpoint_url, - ENDPOINT_URL_TEXT, + selectors.FIELD_ENDPOINT_URL_VALUE, ); assert.strictEqual(storageBucket.attributes.role_arn, null); assert.strictEqual(storageBucket.plugin.name, 'minio'); @@ -238,8 +232,9 @@ module('Acceptance | storage-buckets | create', function (hooks) { await visit(urls.storageBuckets); await click(`[href="${urls.newStorageBucket}"]`); - await fillIn(NAME_FIELD_SELECTOR, NAME_FIELD_TEXT); - await click(CANCEL_BTN_SELECTOR); + await fillIn(selectors.FIELD_NAME, selectors.FIELD_NAME_VALUE); + + await click(selectors.CANCEL_BTN); assert.strictEqual(currentURL(), urls.storageBuckets); assert.strictEqual(getStorageBucketCount(), storageBucketCount); @@ -257,8 +252,8 @@ module('Acceptance | storage-buckets | create', function (hooks) { details: { request_fields: [ { - name: 'name', - description: 'Name is required.', + name: 'bucket_name', + description: 'This is a required field.', }, ], }, @@ -268,11 +263,13 @@ module('Acceptance | storage-buckets | create', function (hooks) { await visit(urls.storageBuckets); await click(`[href="${urls.newStorageBucket}"]`); - await click(SAVE_BTN_SELECTOR); + await click(selectors.SAVE_BTN); await a11yAudit(); - assert.dom(ALERT_TEXT_SELECTOR).hasText('The request was invalid.'); - assert.dom(FIELD_ERROR_TEXT_SELECTOR).hasText('Name is required.'); + assert.dom(selectors.TOAST).hasText('The request was invalid.'); + assert + .dom(selectors.FIELD_BUCKET_NAME_ERROR) + .hasText('This is a required field.'); }); test('users cannot directly navigate to new storage bucket route without proper authorization', async function (assert) { diff --git a/ui/admin/tests/acceptance/storage-buckets/selectors.js b/ui/admin/tests/acceptance/storage-buckets/selectors.js new file mode 100644 index 000000000..98803cc1c --- /dev/null +++ b/ui/admin/tests/acceptance/storage-buckets/selectors.js @@ -0,0 +1,32 @@ +export const SAVE_BTN = '[type=submit]'; +export const CANCEL_BTN = '.rose-form-actions [type=button]'; +export const EDIT_BTN = '.rose-form-actions [type=button]'; +export const FIELD_NAME = '[name=name]'; +export const FIELD_NAME_VALUE = 'Random name'; +export const FIELD_SCOPE = '[name=scope]'; +export const FIELD_PLUGIN_TYPE = '[name=plugin_type]'; +export const FIELD_PLUGIN_TYPE_MINIO = '[value=minio]'; // Provider +export const FIELD_ENDPOINT_URL = '[name=endpoint_url]'; +export const FIELD_ENDPOINT_URL_VALUE = 'http://www.hashicorp.com'; +export const FIELD_BUCKET_NAME = '[name=bucket_name]'; +export const FIELD_BUCKET_NAME_VALUE = 'Test Bucket name'; +export const FIELD_BUCKET_NAME_ERROR = '[data-test-bucket-name-error]'; +export const FIELD_BUCKET_PREFIX = '[name=bucket_prefix]'; +export const FIELD_REGION = '[name=region]'; +export const GROUP_CREDENTIAL_TYPE = '[name=credential_type]'; +export const FIELD_STATIC_CREDENTIAL = '[value=static]'; +export const FIELD_DYNAMIC_CREDENTIAL = '[value=dynamic]'; +export const FIELD_ROLE_ARN = '[name=role_arn]'; +export const FIELD_ROLE_ARN_VALUE = 'test-arn-id'; +export const FIELD_ACCESS_KEY = '[name=access_key_id]'; +export const FIELD_ACCESS_KEY_EDIT_BTN = + '[data-test-access-key-id] [type=button]'; +export const FIELD_ACCESS_KEY_VALUE = '45$#@%!783528'; +export const FIELD_SECRET_KEY = '[name=secret_access_key] '; +export const FIELD_SECRET_KEY_VALUE = '87^%$#@^86382'; +export const FIELD_SECRET_KEY_EDIT_BTN = + '[data-test-secret-access-key] [type=button]'; +export const FIELD_WORKER_FILTER = '[name=worker_filter]'; +export const FIELD_WORKER_FILTER_ERROR = '[data-test-worker-filter-error]'; +export const TOAST = '[role=alert] div'; +export const TOAST_SUCCESSFULL_VALUE = 'Saved successfully.'; diff --git a/ui/admin/tests/acceptance/storage-buckets/update-test.js b/ui/admin/tests/acceptance/storage-buckets/update-test.js index 253d1b4ce..779cf4bf1 100644 --- a/ui/admin/tests/acceptance/storage-buckets/update-test.js +++ b/ui/admin/tests/acceptance/storage-buckets/update-test.js @@ -4,11 +4,12 @@ */ import { module, test } from 'qunit'; -import { visit, click, fillIn, findAll } from '@ember/test-helpers'; +import { visit, click, fillIn } from '@ember/test-helpers'; import { setupApplicationTest } from 'ember-qunit'; import setupMirage from 'ember-cli-mirage/test-support/setup-mirage'; import { Response } from 'miragejs'; import { authenticateSession } from 'ember-simple-auth/test-support'; +import * as selectors from './selectors'; module('Acceptance | storage-buckets | update', function (hooks) { setupApplicationTest(hooks); @@ -16,26 +17,6 @@ module('Acceptance | storage-buckets | update', function (hooks) { let features; - const BUTTON_SELECTOR = '.rose-form-actions [type="button"]'; - const SAVE_BUTTON_SELECTOR = '.rose-form-actions [type="submit"]'; - const NAME_FIELD_SELECTOR = '[name="name"]'; - const ALERT_TEXT_SELECTOR = '[role="alert"] div'; - const SECRET_FIELD_BUTTON_SELECTOR = '.secret-input [type="button"]'; - const ACCESS_KEY_ID_FIELD_SELECTOR = '[name="access_key_id"]'; - const SECRET_ACCESS_KEY_FIELD_SELECTOR = '[name="secret_access_key"]'; - const NAME_FIELD_TEXT = 'Updated storage-bucket name'; - const ACCESS_KEY_ID_FIELD_TEXT = 'Updated access key id'; - const SECRET_ACCESS_KEY_FIELD_TEXT = 'Update secret access key'; - const BUCKET_NAME_FIELD_SELECTOR = '[name="bucket_name"]'; - const BUCKET_PREFIX_FIELD_SELECTOR = '[name="bucket_prefix"]'; - const WORKER_FILTER = '[name="worker_filter"]'; - const FIELD_STORAGE_BUCKET_NAME_ERROR = '[data-test-bucket-name-error]'; - const FIELD_WORKER_FILTER_ERROR = '[data-test-worker-filter-error]'; - const FIELD_REGION = '[name=region]'; - const FIELD_PROVIDER = '[name=plugin_type]'; - const FIELD_ENDPOINT_URL = '[name=endpoint_url]'; - const FIELD_SCOPE = '[name=scope]'; - const instances = { scopes: { global: null, @@ -72,13 +53,16 @@ module('Acceptance | storage-buckets | update', function (hooks) { await visit(urls.storageBuckets); await click(`[href="${urls.storageBucket}"]`); - await click(BUTTON_SELECTOR, 'Click edit mode'); - await fillIn(NAME_FIELD_SELECTOR, NAME_FIELD_TEXT); - await click(SAVE_BUTTON_SELECTOR, 'Click save'); + await click(selectors.EDIT_BTN, 'Click edit mode'); + await fillIn(selectors.FIELD_NAME, selectors.FIELD_NAME_VALUE); + await click(selectors.SAVE_BTN, 'Click save'); assert.dom(`[href="${urls.storageBucket}"]`).isVisible(); - assert.dom(NAME_FIELD_SELECTOR).hasValue(NAME_FIELD_TEXT); - assert.strictEqual(instances.storageBucket.name, NAME_FIELD_TEXT); + assert.dom(selectors.FIELD_NAME).hasValue(selectors.FIELD_NAME_VALUE); + assert.strictEqual( + instances.storageBucket.name, + selectors.FIELD_NAME_VALUE, + ); }); test('can cancel changes to an existing storage-bucket', async function (assert) { @@ -86,11 +70,11 @@ module('Acceptance | storage-buckets | update', function (hooks) { await visit(urls.storageBuckets); await click(`[href="${urls.storageBucket}"]`); - await click(BUTTON_SELECTOR, 'Click edit mode'); - await fillIn(NAME_FIELD_SELECTOR, NAME_FIELD_TEXT); - await click(BUTTON_SELECTOR, 'Click cancel'); + await click(selectors.EDIT_BTN, 'Click edit mode'); + await fillIn(selectors.FIELD_NAME, selectors.FIELD_NAME_VALUE); + await click(selectors.CANCEL_BTN, 'Click cancel'); - assert.dom(NAME_FIELD_SELECTOR).hasValue(`${name}`); + assert.dom(selectors.FIELD_NAME).hasValue(`${name}`); assert.strictEqual(instances.storageBucket.name, name); }); @@ -98,55 +82,58 @@ module('Acceptance | storage-buckets | update', function (hooks) { await visit(urls.storageBuckets); await click(`[href="${urls.storageBucket}"]`); + assert.dom(selectors.FIELD_ACCESS_KEY_EDIT_BTN).exists(); + assert.dom(selectors.FIELD_SECRET_KEY_EDIT_BTN).exists(); - assert.dom(SECRET_FIELD_BUTTON_SELECTOR).exists({ count: 2 }); + assert.dom(selectors.FIELD_ACCESS_KEY_EDIT_BTN).isDisabled(); + assert.dom(selectors.FIELD_SECRET_KEY_EDIT_BTN).isDisabled(); - assert.dom(SECRET_FIELD_BUTTON_SELECTOR).isDisabled(); + await click(selectors.EDIT_BTN, 'Click edit mode'); - await click(BUTTON_SELECTOR, 'Click edit mode'); + assert.dom(selectors.FIELD_ACCESS_KEY_EDIT_BTN).isEnabled(); + assert.dom(selectors.FIELD_SECRET_KEY_EDIT_BTN).isEnabled(); - assert.dom(SECRET_FIELD_BUTTON_SELECTOR).isEnabled(); - assert.dom(SECRET_FIELD_BUTTON_SELECTOR).hasText('Edit'); + assert.dom(selectors.FIELD_ACCESS_KEY_EDIT_BTN).hasText('Edit'); + assert.dom(selectors.FIELD_SECRET_KEY_EDIT_BTN).hasText('Edit'); - await click(SECRET_FIELD_BUTTON_SELECTOR); - await click(findAll(SECRET_FIELD_BUTTON_SELECTOR)[1]); + await click(selectors.FIELD_ACCESS_KEY_EDIT_BTN); + assert.dom(selectors.FIELD_ACCESS_KEY_EDIT_BTN).hasText('Cancel'); + await click(selectors.FIELD_SECRET_KEY_EDIT_BTN); + assert.dom(selectors.FIELD_SECRET_KEY_EDIT_BTN).hasText('Cancel'); - assert.dom(SECRET_FIELD_BUTTON_SELECTOR).hasText('Cancel'); + await fillIn(selectors.FIELD_ACCESS_KEY, selectors.FIELD_ACCESS_KEY_VALUE); + await fillIn(selectors.FIELD_SECRET_KEY, selectors.FIELD_SECRET_KEY_VALUE); - await fillIn(ACCESS_KEY_ID_FIELD_SELECTOR, ACCESS_KEY_ID_FIELD_TEXT); - await fillIn( - SECRET_ACCESS_KEY_FIELD_SELECTOR, - SECRET_ACCESS_KEY_FIELD_TEXT, - ); - await click(SAVE_BUTTON_SELECTOR, 'Click save'); + await click(selectors.SAVE_BTN, 'Click save'); - assert.dom(SECRET_FIELD_BUTTON_SELECTOR).isDisabled(); - assert.dom(ACCESS_KEY_ID_FIELD_SELECTOR).hasNoValue(); - assert.dom(SECRET_ACCESS_KEY_FIELD_SELECTOR).hasNoValue(); + assert.dom(selectors.FIELD_ACCESS_KEY_EDIT_BTN).isDisabled(); + assert.dom(selectors.FIELD_SECRET_KEY_EDIT_BTN).isDisabled(); + + assert.dom(selectors.FIELD_ACCESS_KEY).hasNoValue(); + assert.dom(selectors.FIELD_SECRET_KEY).hasNoValue(); }); test('can cancel changes to access key fields', async function (assert) { await visit(urls.storageBuckets); await click(`[href="${urls.storageBucket}"]`); - await click(BUTTON_SELECTOR, 'Click edit mode'); - await click(SECRET_FIELD_BUTTON_SELECTOR, 'Click edit button'); - await click(findAll(SECRET_FIELD_BUTTON_SELECTOR)[1], 'Click edit button'); - await fillIn(ACCESS_KEY_ID_FIELD_SELECTOR, ACCESS_KEY_ID_FIELD_TEXT); - await fillIn( - SECRET_ACCESS_KEY_FIELD_SELECTOR, - SECRET_ACCESS_KEY_FIELD_TEXT, - ); - await click(SECRET_FIELD_BUTTON_SELECTOR, 'Click cancel button'); - await click( - findAll(SECRET_FIELD_BUTTON_SELECTOR)[1], - 'Click cancel button', - ); - await click(SAVE_BUTTON_SELECTOR, 'Click save'); + await click(selectors.EDIT_BTN, 'Click edit mode'); + await click(selectors.FIELD_ACCESS_KEY_EDIT_BTN); + await click(selectors.FIELD_SECRET_KEY_EDIT_BTN); - assert.dom(SECRET_FIELD_BUTTON_SELECTOR).isDisabled(); - assert.dom(ACCESS_KEY_ID_FIELD_SELECTOR).hasNoValue(); - assert.dom(SECRET_ACCESS_KEY_FIELD_SELECTOR).hasNoValue(); + await fillIn(selectors.FIELD_ACCESS_KEY, selectors.FIELD_ACCESS_KEY_VALUE); + await fillIn(selectors.FIELD_SECRET_KEY, selectors.FIELD_SECRET_KEY_VALUE); + + await click(selectors.FIELD_ACCESS_KEY_EDIT_BTN, 'Click cancel button'); + await click(selectors.FIELD_SECRET_KEY_EDIT_BTN, 'Click cancel button'); + + await click(selectors.SAVE_BTN, 'Click save'); + + assert.dom(selectors.FIELD_ACCESS_KEY_EDIT_BTN).isDisabled(); + assert.dom(selectors.FIELD_SECRET_KEY_EDIT_BTN).isDisabled(); + + assert.dom(selectors.FIELD_ACCESS_KEY).hasNoValue(); + assert.dom(selectors.FIELD_SECRET_KEY).hasNoValue(); }); test('saving an existing storage-bucket with invalid fields will display error messages', async function (assert) { @@ -176,15 +163,17 @@ module('Acceptance | storage-buckets | update', function (hooks) { }); await click(`[href="${urls.storageBucket}"]`); - await click(BUTTON_SELECTOR, 'Activate edit mode'); - await fillIn(WORKER_FILTER, 'random string'); - await click(SAVE_BUTTON_SELECTOR); + await click(selectors.EDIT_BTN, 'Activate edit mode'); + await fillIn(selectors.FIELD_WORKER_FILTER, 'random string'); + await click(selectors.SAVE_BTN); - assert.dom(ALERT_TEXT_SELECTOR).hasText('The request was invalid.'); + assert.dom(selectors.TOAST).hasText('The request was invalid.'); assert - .dom(FIELD_STORAGE_BUCKET_NAME_ERROR) + .dom(selectors.FIELD_BUCKET_NAME_ERROR) .hasText('This is a required field.'); - assert.dom(FIELD_WORKER_FILTER_ERROR).hasText('Worker filter is required.'); + assert + .dom(selectors.FIELD_WORKER_FILTER_ERROR) + .hasText('Worker filter is required.'); }); test('user cannot edit scope, provider, bucket name, bucket prefix and region fields in a Amazon S3 storage bucket form', async function (assert) { @@ -192,19 +181,19 @@ module('Acceptance | storage-buckets | update', function (hooks) { await click(`[href="${urls.storageBucket}"]`); - assert.dom(BUCKET_NAME_FIELD_SELECTOR).isDisabled(); - assert.dom(BUCKET_PREFIX_FIELD_SELECTOR).isDisabled(); + assert.dom(selectors.FIELD_BUCKET_NAME).isDisabled(); + assert.dom(selectors.FIELD_BUCKET_PREFIX).isDisabled(); - await click(BUTTON_SELECTOR, 'Click edit mode'); + await click(selectors.EDIT_BTN, 'Click edit mode'); - assert.dom(FIELD_SCOPE).doesNotExist(); - assert.dom(FIELD_PROVIDER).isDisabled(); - assert.dom(BUCKET_NAME_FIELD_SELECTOR).hasAttribute('readOnly'); - assert.dom(BUCKET_PREFIX_FIELD_SELECTOR).hasAttribute('readOnly'); - assert.dom(FIELD_REGION).hasAttribute('readOnly'); - assert.dom(BUCKET_NAME_FIELD_SELECTOR).isNotDisabled(); - assert.dom(BUCKET_PREFIX_FIELD_SELECTOR).isNotDisabled(); - assert.dom(FIELD_REGION).isNotDisabled(); + assert.dom(selectors.FIELD_SCOPE).doesNotExist(); + assert.dom(selectors.FIELD_PLUGIN_TYPE).isDisabled(); + assert.dom(selectors.FIELD_BUCKET_NAME).hasAttribute('readOnly'); + assert.dom(selectors.FIELD_BUCKET_PREFIX).hasAttribute('readOnly'); + assert.dom(selectors.FIELD_REGION).hasAttribute('readOnly'); + assert.dom(selectors.FIELD_BUCKET_NAME).isNotDisabled(); + assert.dom(selectors.FIELD_BUCKET_PREFIX).isNotDisabled(); + assert.dom(selectors.FIELD_REGION).isNotDisabled(); }); test('user cannot edit scope, provider, endpoint_url, bucket name or region fields in a MinIO storage bucket', async function (assert) { @@ -212,14 +201,14 @@ module('Acceptance | storage-buckets | update', function (hooks) { await click(`[href="${urls.storageBucketMinio}"]`); - assert.dom(BUCKET_NAME_FIELD_SELECTOR).isDisabled(); + assert.dom(selectors.FIELD_BUCKET_NAME).isDisabled(); - await click(BUTTON_SELECTOR, 'Click edit mode'); + await click(selectors.EDIT_BTN, 'Click edit mode'); - assert.dom(FIELD_SCOPE).doesNotExist(); - assert.dom(FIELD_PROVIDER).isDisabled(); - assert.dom(FIELD_ENDPOINT_URL).isNotDisabled(); - assert.dom(BUCKET_NAME_FIELD_SELECTOR).hasAttribute('readOnly'); - assert.dom(FIELD_REGION).hasAttribute('readOnly'); + assert.dom(selectors.FIELD_SCOPE).doesNotExist(); + assert.dom(selectors.FIELD_PLUGIN_TYPE).isDisabled(); + assert.dom(selectors.FIELD_ENDPOINT_URL).isNotDisabled(); + assert.dom(selectors.FIELD_BUCKET_NAME).hasAttribute('readOnly'); + assert.dom(selectors.FIELD_REGION).hasAttribute('readOnly'); }); });