diff --git a/changelog/23726.txt b/changelog/23726.txt new file mode 100644 index 0000000000..f4e21989fc --- /dev/null +++ b/changelog/23726.txt @@ -0,0 +1,3 @@ +```release-note:bug +ui: Fixes issues displaying accurate TLS state in dashboard configuration details +``` \ No newline at end of file diff --git a/ui/app/components/dashboard/vault-configuration-details-card.js b/ui/app/components/dashboard/vault-configuration-details-card.js index 51358497a3..2684bf7546 100644 --- a/ui/app/components/dashboard/vault-configuration-details-card.js +++ b/ui/app/components/dashboard/vault-configuration-details-card.js @@ -17,11 +17,14 @@ import Component from '@glimmer/component'; */ export default class DashboardSecretsEnginesCard extends Component { - get tlsDisabled() { - const tlsDisableConfig = this.args.vaultConfiguration?.listeners.find((listener) => { - if (listener.config && listener.config.tls_disable) return listener.config.tls_disable; + get tls() { + // since the default for tls_disable is false it may not be in the config + // consider tls enabled if tls_disable is undefined or false AND both tls_cert_file and tls_key_file are defined + const tlsListener = this.args.vaultConfiguration?.listeners.find((listener) => { + const { tls_disable, tls_cert_file, tls_key_file } = listener.config || {}; + return !tls_disable && tls_cert_file && tls_key_file; }); - return tlsDisableConfig?.config.tls_disable ? 'Enabled' : 'Disabled'; + return tlsListener ? 'Enabled' : 'Disabled'; } } diff --git a/ui/app/templates/components/dashboard/vault-configuration-details-card.hbs b/ui/app/templates/components/dashboard/vault-configuration-details-card.hbs index 0fc3e8811c..0e3cb39f4e 100644 --- a/ui/app/templates/components/dashboard/vault-configuration-details-card.hbs +++ b/ui/app/templates/components/dashboard/vault-configuration-details-card.hbs @@ -19,7 +19,7 @@ TLS - {{this.tlsDisabled}} + {{this.tls}} Log format diff --git a/ui/tests/acceptance/dashboard-test.js b/ui/tests/acceptance/dashboard-test.js index e3ee024717..e34cfb8fcc 100644 --- a/ui/tests/acceptance/dashboard-test.js +++ b/ui/tests/acceptance/dashboard-test.js @@ -169,10 +169,17 @@ module('Acceptance | landing page dashboard', function (hooks) { usage_gauge_period: 5000000000, }, }; - await authPage.login(); + + this.server.get('sys/config/state/sanitized', () => ({ + data: this.data, + wrap_info: null, + warnings: null, + auth: null, + })); }); test('hides the configuration details card on a non-root namespace enterprise version', async function (assert) { + await authPage.login(); await visit('/vault/dashboard'); const version = this.owner.lookup('service:version'); assert.true(version.isEnterprise, 'vault is enterprise'); @@ -183,12 +190,6 @@ module('Acceptance | landing page dashboard', function (hooks) { }); test('shows the configuration details card', async function (assert) { - this.server.get('sys/config/state/sanitized', () => ({ - data: this.data, - wrap_info: null, - warnings: null, - auth: null, - })); await authPage.login(); await visit('/vault/dashboard'); assert.dom(SELECTORS.cardHeader('configuration')).hasText('Configuration details'); @@ -197,39 +198,36 @@ module('Acceptance | landing page dashboard', function (hooks) { .hasText('http://127.0.0.1:8200'); assert.dom(SELECTORS.vaultConfigurationCard.configDetailsField('default_lease_ttl')).hasText('0'); assert.dom(SELECTORS.vaultConfigurationCard.configDetailsField('max_lease_ttl')).hasText('2 days'); - assert.dom(SELECTORS.vaultConfigurationCard.configDetailsField('tls_disable')).hasText('Enabled'); + assert.dom(SELECTORS.vaultConfigurationCard.configDetailsField('tls')).hasText('Disabled'); // tls_disable=true assert.dom(SELECTORS.vaultConfigurationCard.configDetailsField('log_format')).hasText('None'); assert.dom(SELECTORS.vaultConfigurationCard.configDetailsField('log_level')).hasText('debug'); assert.dom(SELECTORS.vaultConfigurationCard.configDetailsField('type')).hasText('raft'); }); - test('shows the tls disabled if it is disabled', async function (assert) { - this.server.get('sys/config/state/sanitized', () => { - this.data.listeners[0].config.tls_disable = false; - return { - data: this.data, - wrap_info: null, - warnings: null, - auth: null, - }; - }); - await authPage.login(); - await visit('/vault/dashboard'); - assert.dom(SELECTORS.vaultConfigurationCard.configDetailsField('tls_disable')).hasText('Disabled'); - }); - test('shows the tls disabled if there is no tlsDisabled returned from server', async function (assert) { - this.server.get('sys/config/state/sanitized', () => { - this.data.listeners = []; - return { - data: this.data, - wrap_info: null, - warnings: null, - auth: null, - }; - }); + test('it should show tls as enabled if tls_disable, tls_cert_file and tls_key_file are in the config', async function (assert) { + this.data.listeners[0].config.tls_disable = false; + this.data.listeners[0].config.tls_cert_file = './cert.pem'; + this.data.listeners[0].config.tls_key_file = './key.pem'; + await authPage.login(); await visit('/vault/dashboard'); - assert.dom(SELECTORS.vaultConfigurationCard.configDetailsField('tls_disable')).hasText('Disabled'); + assert.dom(SELECTORS.vaultConfigurationCard.configDetailsField('tls')).hasText('Enabled'); + }); + + test('it should show tls as enabled if only cert and key exist in config', async function (assert) { + delete this.data.listeners[0].config.tls_disable; + this.data.listeners[0].config.tls_cert_file = './cert.pem'; + this.data.listeners[0].config.tls_key_file = './key.pem'; + await authPage.login(); + await visit('/vault/dashboard'); + assert.dom(SELECTORS.vaultConfigurationCard.configDetailsField('tls')).hasText('Enabled'); + }); + + test('it should show tls as disabled if there is no tls information in the config', async function (assert) { + this.data.listeners = []; + await authPage.login(); + await visit('/vault/dashboard'); + assert.dom(SELECTORS.vaultConfigurationCard.configDetailsField('tls')).hasText('Disabled'); }); });