From 07cf9fc533e6e525973e0ebdeba2aa6d3ac1d5e0 Mon Sep 17 00:00:00 2001 From: Cameron Perera Date: Tue, 17 Jan 2023 14:39:54 -0600 Subject: [PATCH] Create Worker Diagram for egress and ingress filters (#1584) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 🎸 create Worker Diagram for OSS ✅ Closes: ICU-7579 * refactor: 💡 change ordered series icon to have white background * feat: 🎸 Create Worker Diagram for egress and ingress filters ✅ Closes: ICU-7592 * refactor: 💡 remove wrapping divs and update data-test attrs * refactor: 💡 revert HDS icon background color change * refactor: 💡 make data-test attr more verbose --- addons/core/translations/resources/en-us.yaml | 2 + .../worker-diagram/dual-filter/index.hbs | 67 ++++++++++++++++ .../app/components/worker-diagram/index.hbs | 7 +- ui/admin/config/environment.js | 1 + .../worker-diagram/dual-filter/index-test.js | 79 +++++++++++++++++++ .../components/worker-diagram/index-test.js | 10 +++ 6 files changed, 165 insertions(+), 1 deletion(-) create mode 100644 ui/admin/app/components/worker-diagram/dual-filter/index.hbs create mode 100644 ui/admin/tests/integration/components/worker-diagram/dual-filter/index-test.js diff --git a/addons/core/translations/resources/en-us.yaml b/addons/core/translations/resources/en-us.yaml index a73983759..59989c95e 100644 --- a/addons/core/translations/resources/en-us.yaml +++ b/addons/core/translations/resources/en-us.yaml @@ -374,7 +374,9 @@ target: diagram: client: Client any-worker: Any worker + front-line-worker: Front line worker egress-worker: Egress worker + ingress-worker: Ingress worker host: Host network: Private network credential-store: diff --git a/ui/admin/app/components/worker-diagram/dual-filter/index.hbs b/ui/admin/app/components/worker-diagram/dual-filter/index.hbs new file mode 100644 index 000000000..2382fc68a --- /dev/null +++ b/ui/admin/app/components/worker-diagram/dual-filter/index.hbs @@ -0,0 +1,67 @@ +
+ {{#if (and @egressFilter @ingressFilter)}} + + + {{t 'resources.target.workers.diagram.client'}} + + + {{t 'resources.target.workers.diagram.ingress-worker'}} + + + + {{t 'resources.target.workers.diagram.egress-worker'}} + + + {{t 'resources.target.workers.diagram.host'}} + + + + {{else if @ingressFilter}} + + + {{t 'resources.target.workers.diagram.client'}} + + + {{t 'resources.target.workers.diagram.ingress-worker'}} + + + {{t 'resources.target.workers.diagram.host'}} + + + {{else if @egressFilter}} + + + {{t 'resources.target.workers.diagram.client'}} + + + {{t 'resources.target.workers.diagram.front-line-worker'}} + + + + {{t 'resources.target.workers.diagram.egress-worker'}} + + + {{t 'resources.target.workers.diagram.host'}} + + + + {{else}} + + + {{t 'resources.target.workers.diagram.client'}} + + + {{t 'resources.target.workers.diagram.any-worker'}} + + + {{t 'resources.target.workers.diagram.host'}} + + + {{/if}} +
\ No newline at end of file diff --git a/ui/admin/app/components/worker-diagram/index.hbs b/ui/admin/app/components/worker-diagram/index.hbs index f2ed98083..166a39661 100644 --- a/ui/admin/app/components/worker-diagram/index.hbs +++ b/ui/admin/app/components/worker-diagram/index.hbs @@ -1 +1,6 @@ -{{yield (hash SingleFilter=(component 'worker-diagram/single-filter'))}} \ No newline at end of file +{{yield + (hash + SingleFilter=(component 'worker-diagram/single-filter') + DualFilter=(component 'worker-diagram/dual-filter') + ) +}} \ No newline at end of file diff --git a/ui/admin/config/environment.js b/ui/admin/config/environment.js index 9cec2559a..132d64578 100644 --- a/ui/admin/config/environment.js +++ b/ui/admin/config/environment.js @@ -149,6 +149,7 @@ module.exports = function (environment) { ENV.featureFlags['ssh-target'] = true; ENV.featureFlags['vault-worker-filter'] = true; ENV.featureFlags['target-worker-filters-v2'] = true; + ENV.featureFlags['target-worker-filters-v2-ingress'] = true; ENV.featureFlags['target-network-address'] = true; ENV.featureFlags['credential-library-vault-ssh-cert'] = true; } diff --git a/ui/admin/tests/integration/components/worker-diagram/dual-filter/index-test.js b/ui/admin/tests/integration/components/worker-diagram/dual-filter/index-test.js new file mode 100644 index 000000000..1a802a0da --- /dev/null +++ b/ui/admin/tests/integration/components/worker-diagram/dual-filter/index-test.js @@ -0,0 +1,79 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'admin/tests/helpers'; +import { render } from '@ember/test-helpers'; +import { hbs } from 'ember-cli-htmlbars'; +import { setupIntl } from 'ember-intl/test-support'; + +module( + 'Integration | Component | worker-diagram/dual-filter', + function (hooks) { + setupRenderingTest(hooks); + setupIntl(hooks); + + test('it renders the correct diagram when egressFilter is false and ingress is false', async function (assert) { + assert.expect(4); + await render( + hbs`` + ); + + assert.dom('[data-test-dual-filter-egress-off-ingress-off]').isVisible(); + assert + .dom('[data-test-dual-filter-egress-on-ingress-off]') + .doesNotExist(); + assert + .dom('[data-test-dual-filter-egress-off-ingress-on]') + .doesNotExist(); + assert.dom('[data-test-dual-filter-egress-on-ingress-on]').doesNotExist(); + }); + + test('it renders the correct diagram when egressFilter is true and ingress is false', async function (assert) { + assert.expect(4); + await render( + hbs`` + ); + + assert.dom('[data-test-dual-filter-egress-on-ingress-off]').isVisible(); + assert + .dom('[data-test-dual-filter-egress-off-ingress-on]') + .doesNotExist(); + assert.dom('[data-test-dual-filter-egress-on-ingress-on]').doesNotExist(); + assert + .dom('[data-test-dual-filter-egress-off-ingress-off]') + .doesNotExist(); + }); + + test('it renders the correct diagram when egressFilter is false and ingress is true', async function (assert) { + assert.expect(4); + await render( + hbs`` + ); + + assert.dom('[data-test-dual-filter-egress-off-ingress-on]').isVisible(); + assert + .dom('[data-test-dual-filter-egress-on-ingress-off]') + .doesNotExist(); + assert.dom('[data-test-dual-filter-egress-on-ingress-on]').doesNotExist(); + assert + .dom('[data-test-dual-filter-egress-off-ingress-off]') + .doesNotExist(); + }); + + test('it renders the correct diagram when egressFilter is true and ingress is true', async function (assert) { + assert.expect(4); + await render( + hbs`` + ); + + assert.dom('[data-test-dual-filter-egress-on-ingress-on]').isVisible(); + assert + .dom('[data-test-dual-filter-egress-off-ingress-on]') + .doesNotExist(); + assert + .dom('[data-test-dual-filter-egress-on-ingress-off]') + .doesNotExist(); + assert + .dom('[data-test-dual-filter-egress-off-ingress-off]') + .doesNotExist(); + }); + } +); diff --git a/ui/admin/tests/integration/components/worker-diagram/index-test.js b/ui/admin/tests/integration/components/worker-diagram/index-test.js index 50ebe4972..4942bb8b6 100644 --- a/ui/admin/tests/integration/components/worker-diagram/index-test.js +++ b/ui/admin/tests/integration/components/worker-diagram/index-test.js @@ -21,4 +21,14 @@ module('Integration | Component | worker-diagram/index', function (hooks) { assert.dom('[data-test-single-filter-egress-off]').isVisible(); }); + + test('it renders a dual filter diagram', async function (assert) { + featuresService = this.owner.lookup('service:features'); + featuresService.enable(targetWorkerFilterIngress); + featuresService.disable(targetWorkerFilterHCP); + assert.expect(1); + await render(hbs``); + + assert.dom('[data-test-dual-filter-egress-off-ingress-off]').isVisible(); + }); });