diff --git a/ui/admin/app/components/form/target/enable-session-recording/index.hbs b/ui/admin/app/components/form/target/enable-session-recording/index.hbs
index 3c18649f0..7a5dc465a 100644
--- a/ui/admin/app/components/form/target/enable-session-recording/index.hbs
+++ b/ui/admin/app/components/form/target/enable-session-recording/index.hbs
@@ -56,7 +56,7 @@
@color='primary'
@icon='plus'
@text={{t 'resources.storage-bucket.messages.none.link'}}
- @route='scopes.scope.storage-buckets.new'
+ @route='scopes.scope.targets.target.enable-session-recording.create-storage-bucket'
/>
({ model: scope }));
+ scopes = [
+ { model: this.store.peekRecord('scope', 'global') },
+ ...orgScopes,
+ ];
+ this.scopes = scopes;
+ }
+
+ /**
+ * Adds available global and org scopes to the context.
+ * @param {Controller} controller
+ */
+ setupController(controller) {
+ super.setupController(...arguments);
+ controller.set('scopes', this.scopes);
+ }
+
+ // =actions
+
+ /**
+ * Handle save
+ * @param {StorageBucketModel} storageBucket
+ */
+ @action
+ @loading
+ @notifyError(({ message }) => message)
+ @notifySuccess('notifications.save-success')
+ async save(storageBucket) {
+ await storageBucket.save();
+ await this.router.transitionTo(
+ 'scopes.scope.targets.target.enable-session-recording'
+ );
+ this.refresh();
+ }
+
+ /**
+ * Rollback changes on storage buckets.
+ * @param {StorageBucketModel} storageBucket
+ */
+ @action
+ cancel(storageBucket) {
+ storageBucket.rollbackAttributes();
+ this.router.transitionTo(
+ 'scopes.scope.targets.target.enable-session-recording'
+ );
+ }
+}
diff --git a/ui/admin/app/routes/scopes/scope/targets/target/enable-session-recording.js b/ui/admin/app/routes/scopes/scope/targets/target/enable-session-recording/index.js
similarity index 90%
rename from ui/admin/app/routes/scopes/scope/targets/target/enable-session-recording.js
rename to ui/admin/app/routes/scopes/scope/targets/target/enable-session-recording/index.js
index 06850fe1f..23fe81bfb 100644
--- a/ui/admin/app/routes/scopes/scope/targets/target/enable-session-recording.js
+++ b/ui/admin/app/routes/scopes/scope/targets/target/enable-session-recording/index.js
@@ -2,7 +2,7 @@ import Route from '@ember/routing/route';
import { inject as service } from '@ember/service';
import { action } from '@ember/object';
-export default class ScopesScopeTargetsTargetEnableSessionRecordingRoute extends Route {
+export default class ScopesScopeTargetsTargetEnableSessionRecordingIndexRoute extends Route {
// =services
@service store;
@service router;
@@ -19,7 +19,7 @@ export default class ScopesScopeTargetsTargetEnableSessionRecordingRoute extends
}
/**
- * Load storage buckets from target's project scope and global scope
+ * Load storage buckets from target's parent's scope and global scope
* @param {Model} model
*/
async afterModel() {
@@ -30,15 +30,15 @@ export default class ScopesScopeTargetsTargetEnableSessionRecordingRoute extends
scope_id: 'global',
});
- //fetch storage buckets from target's org scope
+ //fetch storage buckets from target's parent's scope
const orgScopeStorageBuckets = await this.store.query('storage-bucket', {
scope_id,
});
+
const storageBucketList = [
...globalScopeStorageBuckets.toArray(),
...orgScopeStorageBuckets.toArray(),
];
-
this.storageBucketList = storageBucketList;
}
// =actions
diff --git a/ui/admin/app/templates/scopes/scope/storage-buckets/new.hbs b/ui/admin/app/templates/scopes/scope/storage-buckets/new.hbs
index e1b859492..319475ce0 100644
--- a/ui/admin/app/templates/scopes/scope/storage-buckets/new.hbs
+++ b/ui/admin/app/templates/scopes/scope/storage-buckets/new.hbs
@@ -11,7 +11,6 @@
- {{! TODO: Add valid doc link and description}}
{{t 'resources.storage-bucket.titles.new'}}
diff --git a/ui/admin/app/templates/scopes/scope/targets/target/enable-session-recording/create-storage-bucket.hbs b/ui/admin/app/templates/scopes/scope/targets/target/enable-session-recording/create-storage-bucket.hbs
new file mode 100644
index 000000000..1145c9129
--- /dev/null
+++ b/ui/admin/app/templates/scopes/scope/targets/target/enable-session-recording/create-storage-bucket.hbs
@@ -0,0 +1,25 @@
+{{!
+ Copyright (c) HashiCorp, Inc.
+ SPDX-License-Identifier: MPL-2.0
+}}
+
+{{page-title (t 'titles.new')}}
+
+
+
+
+ {{t 'resources.storage-bucket.titles.new'}}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ui/admin/app/templates/scopes/scope/targets/target/enable-session-recording.hbs b/ui/admin/app/templates/scopes/scope/targets/target/enable-session-recording/index.hbs
similarity index 100%
rename from ui/admin/app/templates/scopes/scope/targets/target/enable-session-recording.hbs
rename to ui/admin/app/templates/scopes/scope/targets/target/enable-session-recording/index.hbs
diff --git a/ui/admin/tests/acceptance/targets/enable-session-recording-test.js b/ui/admin/tests/acceptance/targets/enable-session-recording-test.js
index addbfba29..b81ac5018 100644
--- a/ui/admin/tests/acceptance/targets/enable-session-recording-test.js
+++ b/ui/admin/tests/acceptance/targets/enable-session-recording-test.js
@@ -85,7 +85,7 @@ module('Acceptance | targets | enable session recording', function (hooks) {
urls.target = `${urls.targets}/${instances.target.id}`;
urls.enableSessionRecording = `${urls.target}/enable-session-recording`;
urls.storageBuckets = `${urls.projectScope}/storage-buckets`;
- urls.newStorageBucket = `${urls.storageBuckets}/new`;
+ urls.newStorageBucket = `${urls.enableSessionRecording}/create-storage-bucket`;
urls.storageBucket = `${urls.storageBuckets}/${storageBucketOne.id}`;
authenticateSession({});
diff --git a/ui/admin/tests/acceptance/targets/enable-session-recording/create-storage-bucket-test.js b/ui/admin/tests/acceptance/targets/enable-session-recording/create-storage-bucket-test.js
new file mode 100644
index 000000000..13d163d1f
--- /dev/null
+++ b/ui/admin/tests/acceptance/targets/enable-session-recording/create-storage-bucket-test.js
@@ -0,0 +1,166 @@
+import { module, test } from 'qunit';
+import { visit, currentURL, click, fillIn } from '@ember/test-helpers';
+import { setupApplicationTest } from 'admin/tests/helpers';
+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 { TYPE_TARGET_SSH } from 'api/models/target';
+
+module(
+ 'Acceptance | targets | enable session recording | create storage bucket',
+ function (hooks) {
+ setupApplicationTest(hooks);
+ setupMirage(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 instances = {
+ scopes: {
+ global: null,
+ org: null,
+ },
+ };
+
+ const urls = {
+ globalScope: null,
+ projectScope: null,
+ targets: null,
+ target: null,
+ enableSessionRecording: null,
+ newStorageBucket: null,
+ };
+
+ hooks.beforeEach(function () {
+ instances.scopes.global = this.server.create('scope', { id: 'global' });
+ instances.scopes.org = this.server.create('scope', {
+ type: 'org',
+ scope: { id: 'global', type: 'global' },
+ });
+ instances.scopes.project = this.server.create('scope', {
+ type: 'project',
+ scope: { id: instances.scopes.org.id, type: 'org' },
+ });
+
+ instances.target = this.server.create('target', {
+ scope: instances.scopes.project,
+ type: TYPE_TARGET_SSH,
+ });
+ urls.globalScope = `/scopes/global`;
+
+ urls.projectScope = `/scopes/${instances.scopes.project.id}`;
+ urls.targets = `${urls.projectScope}/targets`;
+ urls.target = `${urls.targets}/${instances.target.id}`;
+ urls.enableSessionRecording = `${urls.target}/enable-session-recording`;
+ urls.newStorageBucket = `${urls.enableSessionRecording}/create-storage-bucket`;
+ getStorageBucketCount = () =>
+ this.server.schema.storageBuckets.all().models.length;
+
+ features = this.owner.lookup('service:features');
+ features.enable('ssh-session-recording');
+ authenticateSession({});
+ });
+
+ test('users can create a new storage bucket with global scope', async function (assert) {
+ assert.expect(7);
+ const storageBucketCount = getStorageBucketCount();
+ await visit(urls.enableSessionRecording);
+
+ await click(`[href="${urls.newStorageBucket}"]`);
+ await fillIn(NAME_FIELD_SELECTOR, NAME_FIELD_TEXT);
+ await click('[value="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');
+
+ await click(SAVE_BTN_SELECTOR);
+ const storageBucket = this.server.schema.storageBuckets.findBy({
+ name: NAME_FIELD_TEXT,
+ });
+
+ assert.strictEqual(storageBucket.name, NAME_FIELD_TEXT);
+ assert.strictEqual(storageBucket.scopeId, 'global');
+ assert.strictEqual(getStorageBucketCount(), storageBucketCount + 1);
+ });
+
+ test('users can create a new storage bucket with org scope', async function (assert) {
+ assert.expect(7);
+ const storageBucketCount = getStorageBucketCount();
+ await visit(urls.enableSessionRecording);
+
+ await click(`[href="${urls.newStorageBucket}"]`);
+ await fillIn(NAME_FIELD_SELECTOR, NAME_FIELD_TEXT);
+ await click(`[value="${instances.scopes.org.scope.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');
+
+ await click(SAVE_BTN_SELECTOR);
+ const storageBucket = this.server.schema.storageBuckets.findBy({
+ name: NAME_FIELD_TEXT,
+ });
+
+ assert.strictEqual(storageBucket.name, NAME_FIELD_TEXT);
+ assert.strictEqual(storageBucket.scopeId, instances.scopes.org.scope.id);
+ assert.strictEqual(getStorageBucketCount(), storageBucketCount + 1);
+ });
+
+ test('user can cancel new storage bucket creation', async function (assert) {
+ assert.expect(2);
+ const storageBucketCount = getStorageBucketCount();
+ await visit(urls.enableSessionRecording);
+
+ await click(`[href="${urls.newStorageBucket}"]`);
+ await fillIn(NAME_FIELD_SELECTOR, NAME_FIELD_TEXT);
+ await click(CANCEL_BTN_SELECTOR);
+
+ assert.strictEqual(currentURL(), urls.enableSessionRecording);
+ assert.strictEqual(getStorageBucketCount(), storageBucketCount);
+ });
+
+ test('saving a new storage bucket with invalid fields displays error messages', async function (assert) {
+ assert.expect(2);
+ this.server.post('/storage-buckets', () => {
+ 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.enableSessionRecording);
+
+ await click(`[href="${urls.newStorageBucket}"]`);
+ await click(SAVE_BTN_SELECTOR);
+ await a11yAudit();
+
+ assert.dom(ALERT_TEXT_SELECTOR).hasText('The request was invalid.');
+ assert.dom(FIELD_ERROR_TEXT_SELECTOR).hasText('Name is required.');
+ });
+ }
+);
diff --git a/ui/admin/tests/acceptance/targets/enable-session-recording/index-test.js b/ui/admin/tests/acceptance/targets/enable-session-recording/index-test.js
new file mode 100644
index 000000000..b81ac5018
--- /dev/null
+++ b/ui/admin/tests/acceptance/targets/enable-session-recording/index-test.js
@@ -0,0 +1,235 @@
+/**
+ * Copyright (c) HashiCorp, Inc.
+ * SPDX-License-Identifier: MPL-2.0
+ */
+
+import { module, test } from 'qunit';
+import { visit, find, click, currentURL } 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';
+import { authenticateSession } from 'ember-simple-auth/test-support';
+import { TYPE_TARGET_SSH } from 'api/models/target';
+import select from '@ember/test-helpers/dom/select';
+
+module('Acceptance | targets | enable session recording', function (hooks) {
+ setupApplicationTest(hooks);
+ setupMirage(hooks);
+
+ let featuresService;
+ let storageBucketOne;
+ let storageBucketTwo;
+
+ const SETTINGS_LINK_SELECTOR = '.target-sidebar .hds-link-standalone';
+ const ENABLE_BUTTON_SELECTOR = '.target-sidebar .hds-button';
+ const DROPDOWN_SELECTOR = '[name=storage_bucket_id]';
+ const LINK_LIST_SELECTOR = '.link-list-item > a';
+ const LINK_LIST_SELECTOR_ITEM_TEXT = '.link-list-item__text';
+ const TOGGLE_SELECTOR = '[name=target-enable-session-recording]';
+ const LINK_TO_NEW_STORAGE_BUCKET =
+ '.enable-session-recording-toggle .hds-link-standalone';
+ const SAVE_BTN_SELECTOR = '.rose-form-actions [type="submit"]';
+ const CANCEL_BTN_SELECTOR = '.rose-form-actions [type="button"]';
+
+ // Instances
+ const instances = {
+ scopes: {
+ global: null,
+ org: null,
+ },
+ sessionRecording: null,
+ };
+
+ //URLs
+ const urls = {
+ globalScope: null,
+ orgScope: null,
+ projectScope: null,
+ targets: null,
+ target: null,
+ enableSessionRecording: null,
+ storageBuckets: null,
+ newStorageBucket: null,
+ };
+
+ hooks.beforeEach(function () {
+ featuresService = this.owner.lookup('service:features');
+ // Generate resources
+ instances.scopes.global = this.server.create('scope', { id: 'global' });
+ instances.scopes.org = this.server.create('scope', {
+ type: 'org',
+ scope: { id: 'global', type: 'global' },
+ });
+ instances.scopes.project = this.server.create('scope', {
+ type: 'project',
+ scope: { id: instances.scopes.org.id, type: 'org' },
+ });
+
+ instances.target = this.server.create('target', {
+ scope: instances.scopes.project,
+ type: TYPE_TARGET_SSH,
+ });
+
+ instances.storageBucket = this.server.createList('storage-bucket', 2, {
+ scope: instances.scopes.global,
+ });
+
+ storageBucketOne = instances.storageBucket[0];
+ storageBucketTwo = instances.storageBucket[1];
+
+ // Generate route URLs for resources
+ urls.globalScope = `/scopes/global/scopes`;
+ urls.orgScope = `/scopes/${instances.scopes.org.id}/scopes`;
+ urls.projectScope = `/scopes/${instances.scopes.project.id}`;
+ urls.targets = `${urls.projectScope}/targets`;
+ urls.target = `${urls.targets}/${instances.target.id}`;
+ urls.enableSessionRecording = `${urls.target}/enable-session-recording`;
+ urls.storageBuckets = `${urls.projectScope}/storage-buckets`;
+ urls.newStorageBucket = `${urls.enableSessionRecording}/create-storage-bucket`;
+ urls.storageBucket = `${urls.storageBuckets}/${storageBucketOne.id}`;
+
+ authenticateSession({});
+ });
+
+ test('cannot enable session recording for a target without proper authorization', async function (assert) {
+ assert.expect(2);
+ assert.false(featuresService.isEnabled('ssh-session-recording'));
+ await visit(urls.target);
+ await a11yAudit();
+ assert.dom('.target-sidebar a').doesNotExist();
+ });
+
+ test('users can click on enable-recording button in target session-recording sidebar and it takes them to enable session recording', async function (assert) {
+ featuresService.enable('ssh-session-recording');
+ assert.expect(2);
+ await visit(urls.target);
+ assert.dom(SETTINGS_LINK_SELECTOR).doesNotExist();
+ await click(ENABLE_BUTTON_SELECTOR);
+ assert.strictEqual(currentURL(), urls.enableSessionRecording);
+ });
+
+ test('users can click on settings link in target session-recording sidebar and it takes them to enable session recording', async function (assert) {
+ featuresService.enable('ssh-session-recording');
+ assert.expect(1);
+ instances.target.update({
+ storageBucketId: storageBucketOne.id,
+ enableSessionRecording: true,
+ });
+ await visit(urls.target);
+ await click(SETTINGS_LINK_SELECTOR);
+ assert.strictEqual(currentURL(), urls.enableSessionRecording);
+ });
+
+ test('users can click on associated storage bucket card on an ssh target', async function (assert) {
+ featuresService.enable('ssh-session-recording');
+ assert.expect(1);
+ instances.target.update({
+ storageBucketId: storageBucketOne.id,
+ enableSessionRecording: true,
+ });
+ await visit(urls.target);
+ await click(LINK_LIST_SELECTOR);
+ assert.strictEqual(currentURL(), urls.storageBucket);
+ });
+
+ test('toggle should be disabled and storage buckets list should be shown when enable session recording button is clicked', async function (assert) {
+ featuresService.enable('ssh-session-recording');
+ assert.expect(3);
+ await visit(urls.target);
+ await click(ENABLE_BUTTON_SELECTOR);
+ assert.strictEqual(currentURL(), urls.enableSessionRecording);
+ assert.dom(TOGGLE_SELECTOR).isVisible();
+ assert.dom(DROPDOWN_SELECTOR).isNotVisible();
+ });
+
+ test('storage buckets list is hidden when toggle is disabled', async function (assert) {
+ featuresService.enable('ssh-session-recording');
+ assert.expect(4);
+ await visit(urls.target);
+ await click(ENABLE_BUTTON_SELECTOR);
+ assert.strictEqual(currentURL(), urls.enableSessionRecording);
+ assert.dom(TOGGLE_SELECTOR).isVisible();
+ assert.dom(DROPDOWN_SELECTOR).isNotVisible();
+ await click(TOGGLE_SELECTOR);
+ assert.dom(DROPDOWN_SELECTOR).isVisible();
+ });
+
+ test('link to add new storage bucket should be displayed and redirect to new storage buckets form', async function (assert) {
+ featuresService.enable('ssh-session-recording');
+ assert.expect(3);
+ await visit(urls.target);
+ await click(ENABLE_BUTTON_SELECTOR);
+ assert.strictEqual(currentURL(), urls.enableSessionRecording);
+ assert.dom(LINK_TO_NEW_STORAGE_BUCKET).isVisible();
+ await click(LINK_TO_NEW_STORAGE_BUCKET);
+ assert.strictEqual(currentURL(), urls.newStorageBucket);
+ });
+
+ test('retain last selected dropdown list value when the toggle is off', async function (assert) {
+ featuresService.enable('ssh-session-recording');
+ assert.expect(3);
+ instances.target.update({
+ storageBucketId: storageBucketOne.id,
+ enable_session_recording: true,
+ });
+ await visit(urls.target);
+ await click(SETTINGS_LINK_SELECTOR);
+ assert.strictEqual(currentURL(), urls.enableSessionRecording);
+
+ const existingStorageBucketId = find(DROPDOWN_SELECTOR).value;
+
+ //disable the toggle, dropdown should be hidden
+ await click(TOGGLE_SELECTOR);
+ assert.dom(DROPDOWN_SELECTOR).isNotVisible();
+
+ //enable the toggle now,
+ //it should have the previously selected storage_bucket_id
+ await click(TOGGLE_SELECTOR);
+ assert.dom(DROPDOWN_SELECTOR).hasValue(existingStorageBucketId);
+ });
+
+ test('can assign a storage bucket for the target', async function (assert) {
+ featuresService.enable('ssh-session-recording');
+ assert.expect(5);
+ await visit(urls.target);
+ await click(ENABLE_BUTTON_SELECTOR);
+
+ assert.strictEqual(currentURL(), urls.enableSessionRecording);
+ await click(TOGGLE_SELECTOR);
+ assert.dom(DROPDOWN_SELECTOR).hasNoValue();
+ await select(DROPDOWN_SELECTOR, storageBucketTwo.id);
+ assert.dom(DROPDOWN_SELECTOR).hasValue();
+ await click(SAVE_BTN_SELECTOR);
+
+ assert.strictEqual(currentURL(), urls.target);
+
+ assert.strictEqual(
+ find(LINK_LIST_SELECTOR_ITEM_TEXT).textContent.trim(),
+ storageBucketTwo.name
+ );
+ });
+
+ test('can cancel changes to an existing storage bucket selection', async function (assert) {
+ featuresService.enable('ssh-session-recording');
+ assert.expect(3);
+ instances.target.update({
+ storageBucketId: storageBucketOne.id,
+ enable_session_recording: true,
+ });
+
+ await visit(urls.target);
+ await click(SETTINGS_LINK_SELECTOR);
+ assert.strictEqual(currentURL(), urls.enableSessionRecording);
+
+ //update the storage bucket selection
+ await select(DROPDOWN_SELECTOR, storageBucketTwo);
+
+ await click(CANCEL_BTN_SELECTOR);
+ assert.strictEqual(currentURL(), urls.target);
+
+ assert.strictEqual(
+ find(LINK_LIST_SELECTOR_ITEM_TEXT).textContent.trim(),
+ storageBucketOne.name
+ );
+ });
+});
diff --git a/ui/admin/tests/unit/controllers/scopes/scope/targets/target/enable-session-recording/create-storage-bucket-test.js b/ui/admin/tests/unit/controllers/scopes/scope/targets/target/enable-session-recording/create-storage-bucket-test.js
new file mode 100644
index 000000000..749d889a2
--- /dev/null
+++ b/ui/admin/tests/unit/controllers/scopes/scope/targets/target/enable-session-recording/create-storage-bucket-test.js
@@ -0,0 +1,17 @@
+import { module, test } from 'qunit';
+import { setupTest } from 'admin/tests/helpers';
+
+module(
+ 'Unit | Controller | scopes/scope/targets/target/enable-session-recording/create-storage-bucket',
+ function (hooks) {
+ setupTest(hooks);
+
+ // TODO: Replace this with your real tests.
+ test('it exists', function (assert) {
+ let controller = this.owner.lookup(
+ 'controller:scopes/scope/targets/target/enable-session-recording/create-storage-bucket'
+ );
+ assert.ok(controller);
+ });
+ }
+);
diff --git a/ui/admin/tests/unit/controllers/scopes/scope/targets/target/enable-session-recording-test.js b/ui/admin/tests/unit/controllers/scopes/scope/targets/target/enable-session-recording/index-test.js
similarity index 92%
rename from ui/admin/tests/unit/controllers/scopes/scope/targets/target/enable-session-recording-test.js
rename to ui/admin/tests/unit/controllers/scopes/scope/targets/target/enable-session-recording/index-test.js
index 0aca32f5b..4db4188d6 100644
--- a/ui/admin/tests/unit/controllers/scopes/scope/targets/target/enable-session-recording-test.js
+++ b/ui/admin/tests/unit/controllers/scopes/scope/targets/target/enable-session-recording/index-test.js
@@ -2,14 +2,14 @@ import { module, test } from 'qunit';
import { setupTest } from 'admin/tests/helpers';
module(
- 'Unit | Controller | scopes/scope/targets/target/enable-session-recording',
+ 'Unit | Controller | scopes/scope/targets/target/enable-session-recording/index',
function (hooks) {
setupTest(hooks);
// TODO: Replace this with your real tests.
test('it exists', function (assert) {
let controller = this.owner.lookup(
- 'controller:scopes/scope/targets/target/enable-session-recording'
+ 'controller:scopes/scope/targets/target/enable-session-recording/index'
);
assert.ok(controller);
});
diff --git a/ui/admin/tests/unit/routes/scopes/scope/targets/target/enable-session-recording/create-storage-bucket-test.js b/ui/admin/tests/unit/routes/scopes/scope/targets/target/enable-session-recording/create-storage-bucket-test.js
new file mode 100644
index 000000000..77078c854
--- /dev/null
+++ b/ui/admin/tests/unit/routes/scopes/scope/targets/target/enable-session-recording/create-storage-bucket-test.js
@@ -0,0 +1,16 @@
+import { module, test } from 'qunit';
+import { setupTest } from 'admin/tests/helpers';
+
+module(
+ 'Unit | Route | scopes/scope/targets/target/enable-session-recording/create-storage-bucket',
+ function (hooks) {
+ setupTest(hooks);
+
+ test('it exists', function (assert) {
+ let route = this.owner.lookup(
+ 'route:scopes/scope/targets/target/enable-session-recording/create-storage-bucket'
+ );
+ assert.ok(route);
+ });
+ }
+);
diff --git a/ui/admin/tests/unit/routes/scopes/scope/targets/target/enable-session-recording-test.js b/ui/admin/tests/unit/routes/scopes/scope/targets/target/enable-session-recording/index-test.js
similarity index 93%
rename from ui/admin/tests/unit/routes/scopes/scope/targets/target/enable-session-recording-test.js
rename to ui/admin/tests/unit/routes/scopes/scope/targets/target/enable-session-recording/index-test.js
index 434a711fa..2dfc177e2 100644
--- a/ui/admin/tests/unit/routes/scopes/scope/targets/target/enable-session-recording-test.js
+++ b/ui/admin/tests/unit/routes/scopes/scope/targets/target/enable-session-recording/index-test.js
@@ -2,13 +2,13 @@ import { module, test } from 'qunit';
import { setupTest } from 'admin/tests/helpers';
module(
- 'Unit | Route | scopes/scope/targets/target/enable-session-recording',
+ 'Unit | Route | scopes/scope/targets/target/enable-session-recording/index',
function (hooks) {
setupTest(hooks);
test('it exists', function (assert) {
let route = this.owner.lookup(
- 'route:scopes/scope/targets/target/enable-session-recording'
+ 'route:scopes/scope/targets/target/enable-session-recording/index'
);
assert.ok(route);
});