From bc4a140baf6ede81743f768de723dff1fe1c5021 Mon Sep 17 00:00:00 2001 From: hashishaw Date: Wed, 18 Aug 2021 12:25:10 -0500 Subject: [PATCH 1/3] pass default value for defaultSpan on pricing metrics dates component --- ui/app/templates/vault/cluster/metrics/index.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/app/templates/vault/cluster/metrics/index.hbs b/ui/app/templates/vault/cluster/metrics/index.hbs index a783fb0dd28e0..2c5280829c096 100644 --- a/ui/app/templates/vault/cluster/metrics/index.hbs +++ b/ui/app/templates/vault/cluster/metrics/index.hbs @@ -50,7 +50,7 @@ @queryEnd={{model.queryEnd}} @resultStart={{model.activity.startTime}} @resultEnd={{model.activity.endTime}} - @defaultSpan={{model.config.defaultReportMonths}} + @defaultSpan={{or model.config.defaultReportMonths 12}} @retentionMonths={{model.config.retentionMonths}} /> {{#unless model.activity.total}} From e65c748dcacec3194cfeb9d11e2a3edc96093aa3 Mon Sep 17 00:00:00 2001 From: hashishaw Date: Wed, 18 Aug 2021 12:35:45 -0500 Subject: [PATCH 2/3] Add changelog --- changelog/12348.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 changelog/12348.txt diff --git a/changelog/12348.txt b/changelog/12348.txt new file mode 100644 index 0000000000000..80ac862b45c0c --- /dev/null +++ b/changelog/12348.txt @@ -0,0 +1,3 @@ +```release-note: bug +ui: Fixes metrics page when read on counter config not allowed +``` \ No newline at end of file From adff413a440feeffe9b092651c7166958223b7f4 Mon Sep 17 00:00:00 2001 From: hashishaw Date: Wed, 18 Aug 2021 12:45:05 -0500 Subject: [PATCH 3/3] Add test for no config policy --- ui/tests/acceptance/usage-metrics-test.js | 35 +++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/ui/tests/acceptance/usage-metrics-test.js b/ui/tests/acceptance/usage-metrics-test.js index 780dc43880140..d4d8a405fb35f 100644 --- a/ui/tests/acceptance/usage-metrics-test.js +++ b/ui/tests/acceptance/usage-metrics-test.js @@ -2,9 +2,22 @@ import { module, test } from 'qunit'; import { visit, currentURL, findAll } from '@ember/test-helpers'; import { setupApplicationTest } from 'ember-qunit'; import setupMirage from 'ember-cli-mirage/test-support/setup-mirage'; +import { create } from 'ember-cli-page-object'; import authPage from 'vault/tests/pages/auth'; import logout from 'vault/tests/pages/logout'; +import consoleClass from 'vault/tests/pages/components/console/ui-panel'; + +const consoleComponent = create(consoleClass); + +const tokenWithPolicy = async function(name, policy) { + await consoleComponent.runCommands([ + `write sys/policies/acl/${name} policy=${btoa(policy)}`, + `write -field=client_token auth/token/create policies=${name}`, + ]); + + return consoleComponent.lastLogOutput; +}; module('Acceptance | usage metrics', function(hooks) { setupApplicationTest(hooks); @@ -65,6 +78,28 @@ module('Acceptance | usage metrics', function(hooks) { assert.equal(currentURL(), '/vault/metrics'); assert.dom('[data-test-pricing-metrics-form]').exists('Pricing metrics date form exists'); + assert.dom('[data-test-configuration-tab]').exists('Metrics config tab exists'); + assert.dom('[data-test-tracking-disabled]').doesNotExist('Flash message does not exists'); + assert.ok(findAll('.selectable-card').length === 3, 'renders the counts'); + }); + + test('it shows metrics even if config endpoint not allowed', async function(assert) { + server.create('metrics/activity'); + const deny_config_policy = ` + path "sys/internal/counters/config" { + capabilities = ["deny"] + }, + `; + + const userToken = await tokenWithPolicy('no-metrics-config', deny_config_policy); + await logout.visit(); + await authPage.login(userToken); + + await visit('/vault/metrics'); + + assert.equal(currentURL(), '/vault/metrics'); + assert.dom('[data-test-pricing-metrics-form]').exists('Pricing metrics date form exists'); + assert.dom('[data-test-configuration-tab]').doesNotExist('Metrics config tab does not exist'); assert.dom('[data-test-tracking-disabled]').doesNotExist('Flash message does not exists'); assert.ok(findAll('.selectable-card').length === 3, 'renders the counts'); });