Poc share domain test selectors (#2278)

* Share domain (storage-buckets) selectors and refactor the previous test to rely only on standard selectors and data-test-* when need.
This commit is contained in:
Carlos Alcaide Corvo authored and GitHub committed 2024-05-31 11:02:55 -07:00
1 parent 966e16863a
commit 7e5db0bc3d
6 files changed
+193 -172

No files matched your search

@@ -3,7 +3,7 @@
SPDX-License-Identifier: MPL-2.0
}}
<div class='secret-input'>
<div class='secret-input' ...attributes>
{{#if (or this.isDisabled this.isActionable)}}
<span class='overlay'></span>
{{/if}}
@@ -15,7 +15,6 @@
name={{@name}}
disabled={{or @isDisabled (not this.isEditing)}}
@hasVisibilityToggle={{false}}
...attributes
as |F|
>
{{yield F}}
@@ -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|
>
@@ -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|
>
@@ -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) {
@@ -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.';
@@ -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');
});
});