From 9a43c74e608b57070a37a9e68c800faa9b0803dd Mon Sep 17 00:00:00 2001 From: Lisbet Alvarez <107949262+lisbet-alvarez@users.noreply.github.com> Date: Thu, 4 Apr 2024 17:22:04 -0700 Subject: [PATCH] =?UTF-8?q?refactor:=20=F0=9F=92=A1=20add=20active=20sessi?= =?UTF-8?q?ons=20column=20to=20targets=20table=20(#2196)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor: 💡 add active sessions column to targets table ✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13085 * test: 💍 add test case ✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13085 --- .../templates/scopes/scope/sessions/index.hbs | 2 +- .../templates/scopes/scope/targets/index.hbs | 25 ++++++++- .../tests/acceptance/targets/list-test.js | 56 ++++++++++++------- 3 files changed, 61 insertions(+), 22 deletions(-) diff --git a/ui/admin/app/templates/scopes/scope/sessions/index.hbs b/ui/admin/app/templates/scopes/scope/sessions/index.hbs index 528e5ac6e..d4a631e47 100644 --- a/ui/admin/app/templates/scopes/scope/sessions/index.hbs +++ b/ui/admin/app/templates/scopes/scope/sessions/index.hbs @@ -92,7 +92,7 @@ @valign='middle' > <:body as |B|> - + <:body as |B|> {{#if (feature-flag 'ssh-target')}} - + {{#if (can 'read model' B.data)}} {{/if}} + + {{#if B.data.isActive}} + + {{/if}} + {{else}} {{#if B.data.isTCP}} - + {{#if (can 'read model' B.data)}} {{/if}} + + {{#if B.data.isActive}} + + {{/if}} + + `.search-filtering [name="${name}"] button`; const FILTER_APPLY_BUTTON_SELECTOR = '.search-filtering [data-test-dropdown-apply-button]'; - const ACTIVE_SESSIONS_FILTER_DROPDOWN_SELECTOR = - '.search-filtering [name="active-sessions"] button'; - const YES_FILTER_OPTION_SELECTOR = - '.search-filtering [name="active-sessions"] [data-test-checkbox="yes"]'; + const ACTIVE_SESSIONS_SELECTOR = (id) => + `tbody [data-test-targets-table-row="${id}"] .hds-table__td:nth-child(3) a`; + const SESSIONS_ID_SELECTOR = (id) => + `tbody [data-test-sessions-table-row="${id}"] .hds-table__td:first-child`; const instances = { scopes: { @@ -42,6 +47,7 @@ module('Acceptance | targets | list', function (hooks) { }, tcpTarget: null, sshTarget: null, + session: null, }; const urls = { @@ -71,6 +77,11 @@ module('Acceptance | targets | list', function (hooks) { type: TYPE_TARGET_SSH, scope: instances.scopes.project, }); + instances.session = this.server.create('session', { + targetId: instances.sshTarget.id, + scope: instances.scopes.project, + status: STATUS_SESSION_ACTIVE, + }); urls.orgScope = `/scopes/${instances.scopes.org.id}/scopes`; urls.projectScope = `/scopes/${instances.scopes.project.id}`; urls.targets = `${urls.projectScope}/targets`; @@ -174,7 +185,7 @@ module('Acceptance | targets | list', function (hooks) { assert.dom(`[href="${urls.sshTarget}"]`).exists(); await fillIn(SEARCH_INPUT_SELECTOR, instances.sshTarget.id); - await waitUntil(() => findAll(`[href="${urls.tcpTarget}"]`).length === 0); + await waitFor(`[href="${urls.tcpTarget}"]`, { count: 0 }); assert.dom(`[href="${urls.sshTarget}"]`).exists(); assert.dom(`[href="${urls.tcpTarget}"]`).doesNotExist(); @@ -189,7 +200,7 @@ module('Acceptance | targets | list', function (hooks) { assert.dom(`[href="${urls.sshTarget}"]`).exists(); await fillIn(SEARCH_INPUT_SELECTOR, 'fake target that does not exist'); - await waitUntil(() => findAll(NO_RESULTS_MSG_SELECTOR).length === 1); + await waitFor(NO_RESULTS_MSG_SELECTOR, { count: 1 }); assert.dom(`[href="${urls.sshTarget}"]`).doesNotExist(); assert.dom(`[href="${urls.tcpTarget}"]`).doesNotExist(); @@ -204,10 +215,9 @@ module('Acceptance | targets | list', function (hooks) { assert.dom(`[href="${urls.tcpTarget}"]`).exists(); assert.dom(`[href="${urls.sshTarget}"]`).exists(); - await click(TYPE_FILTER_DROPDOWN_SELECTOR); - await click(TCP_TYPE_FILTER_OPTION_SELECTOR); + await click(FILTER_DROPDOWN_SELECTOR('type')); + await click(`input[value="tcp"]`); await click(FILTER_APPLY_BUTTON_SELECTOR); - await waitUntil(() => findAll(`[href="${urls.sshTarget}"]`).length === 0); assert.dom(`[href="${urls.sshTarget}"]`).doesNotExist(); assert.dom(`[href="${urls.tcpTarget}"]`).exists(); @@ -221,13 +231,21 @@ module('Acceptance | targets | list', function (hooks) { assert.dom(`[href="${urls.tcpTarget}"]`).exists(); assert.dom(`[href="${urls.sshTarget}"]`).exists(); - await click(ACTIVE_SESSIONS_FILTER_DROPDOWN_SELECTOR); - await click(YES_FILTER_OPTION_SELECTOR); + await click(FILTER_DROPDOWN_SELECTOR('active-sessions')); + await click(`input[value="yes"]`); await click(FILTER_APPLY_BUTTON_SELECTOR); - await waitUntil(() => findAll(NO_RESULTS_MSG_SELECTOR).length === 1); - assert.dom(`[href="${urls.sshTarget}"]`).doesNotExist(); + assert.dom(`[href="${urls.sshTarget}"]`).exists(); assert.dom(`[href="${urls.tcpTarget}"]`).doesNotExist(); - assert.dom(NO_RESULTS_MSG_SELECTOR).includesText('No results found'); + }); + + test('user can navigate to active sessions from targets table', async function (assert) { + await visit(urls.projectScope); + + await click(`[href="${urls.targets}"]`); + await click(ACTIVE_SESSIONS_SELECTOR(instances.sshTarget.id)); + + assert.strictEqual(currentRouteName(), 'scopes.scope.sessions.index'); + assert.dom(SESSIONS_ID_SELECTOR(instances.session.id)).exists(); }); });