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:
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');
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user