mirror of
https://github.com/hashicorp/vault.git
synced 2025-08-10 00:27:02 +02:00
* Add replication-overview-mode component + tests * Move both primary view higher to template * simplify replication-summary component * remove replication-mode-summary * Add jsdocs to replication-overview-mode * fix overview-mode test * fix page/mode-index test * copyright * address PR comments * note to devs
125 lines
4.5 KiB
JavaScript
125 lines
4.5 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: BUSL-1.1
|
|
*/
|
|
|
|
import { module, test } from 'qunit';
|
|
import { setupRenderingTest } from 'vault/tests/helpers';
|
|
import { render, settled } from '@ember/test-helpers';
|
|
import { hbs } from 'ember-cli-htmlbars';
|
|
import { setupEngine } from 'ember-engines/test-support';
|
|
|
|
const OVERVIEW_MODE = {
|
|
title: '[data-test-overview-mode-title]',
|
|
body: '[data-test-overview-mode-body]',
|
|
detailsLink: '[data-test-replication-details-link]',
|
|
};
|
|
module('Integration | Component | replication-overview-mode', function (hooks) {
|
|
setupRenderingTest(hooks);
|
|
setupEngine(hooks, 'replication');
|
|
|
|
hooks.beforeEach(function () {
|
|
this.versionService = this.owner.lookup('service:version');
|
|
this.versionService.features = [];
|
|
this.mode = 'dr';
|
|
this.clusterName = 'foobar';
|
|
this.modeDetails = { mode: 'disabled' };
|
|
|
|
this.renderComponent = async () => {
|
|
return render(
|
|
hbs`
|
|
<ReplicationOverviewMode
|
|
@clusterName={{this.clusterName}}
|
|
@mode={{this.mode}}
|
|
@model={{this.modeDetails}}
|
|
/>`,
|
|
{ owner: this.engine }
|
|
);
|
|
};
|
|
});
|
|
|
|
test('without features', async function (assert) {
|
|
await this.renderComponent();
|
|
assert.dom(OVERVIEW_MODE.title).hasText('Disaster Recovery (DR)');
|
|
assert
|
|
.dom(OVERVIEW_MODE.body)
|
|
.includesText('Disaster Recovery is a feature of Vault Enterprise Premium. Upgrade');
|
|
assert.dom(OVERVIEW_MODE.detailsLink).doesNotExist('does not show link to replication (dr)');
|
|
|
|
this.set('mode', 'performance');
|
|
await settled();
|
|
assert.dom(OVERVIEW_MODE.title).hasText('Performance');
|
|
assert
|
|
.dom(OVERVIEW_MODE.body)
|
|
.includesText('Performance Replication is a feature of Vault Enterprise Premium. Upgrade');
|
|
assert.dom(OVERVIEW_MODE.detailsLink).doesNotExist('does not show link to replication (perf)');
|
|
});
|
|
|
|
module('with features', function (hooks) {
|
|
hooks.beforeEach(function () {
|
|
this.versionService.features = ['DR Replication', 'Performance Replication'];
|
|
});
|
|
|
|
test('it renders when replication disabled', async function (assert) {
|
|
await this.renderComponent();
|
|
assert.dom(OVERVIEW_MODE.title).hasText('Disaster Recovery (DR)');
|
|
assert
|
|
.dom(OVERVIEW_MODE.body)
|
|
.hasText(
|
|
'Disaster Recovery Replication is designed to protect against catastrophic failure of entire clusters. Secondaries do not forward service requests until they are elected and become a new primary.'
|
|
);
|
|
assert.dom(OVERVIEW_MODE.detailsLink).hasText('Enable');
|
|
|
|
this.set('mode', 'performance');
|
|
await settled();
|
|
assert.dom(OVERVIEW_MODE.title).hasText('Performance');
|
|
assert
|
|
.dom(OVERVIEW_MODE.body)
|
|
.hasText(
|
|
'Performance Replication scales workloads horizontally across clusters to make requests faster. Local secondaries handle read requests but forward writes to the primary to be handled.'
|
|
);
|
|
assert.dom(OVERVIEW_MODE.detailsLink).hasText('Enable');
|
|
});
|
|
|
|
test('it renders when replication enabled', async function (assert) {
|
|
this.mode = 'performance';
|
|
this.modeDetails = {
|
|
replicationEnabled: true,
|
|
mode: 'primary',
|
|
modeForUrl: 'primary',
|
|
clusterIdDisplay: 'foobar12',
|
|
};
|
|
await this.renderComponent();
|
|
assert.dom(OVERVIEW_MODE.title).hasText('Performance');
|
|
assert
|
|
.dom(OVERVIEW_MODE.body)
|
|
.includesText('ENABLED Primary foobar12', 'renders mode type and cluster ID if passed');
|
|
assert.dom(OVERVIEW_MODE.detailsLink).hasText('Details');
|
|
|
|
this.set('modeDetails', {
|
|
replicationEnabled: true,
|
|
mode: 'secondary',
|
|
modeForUrl: 'secondary',
|
|
clusterIdDisplay: 'foobar12',
|
|
secondaryId: 'some-secondary',
|
|
});
|
|
await settled();
|
|
assert.dom(OVERVIEW_MODE.title).hasText('Performance');
|
|
assert.dom(OVERVIEW_MODE.body).includesText('ENABLED Secondary some-secondary foobar12');
|
|
assert.dom(OVERVIEW_MODE.detailsLink).hasText('Details');
|
|
});
|
|
|
|
test('it renders when replication bootstrapping', async function (assert) {
|
|
this.modeDetails = {
|
|
replicationEnabled: true,
|
|
mode: 'bootstrapping',
|
|
modeForUrl: 'bootstrapping',
|
|
};
|
|
await this.renderComponent();
|
|
assert.dom(OVERVIEW_MODE.title).hasText('Disaster Recovery (DR)');
|
|
assert.dom(OVERVIEW_MODE.body).includesText('ENABLED Bootstrapping');
|
|
assert.dom(OVERVIEW_MODE.detailsLink).hasText('Details');
|
|
});
|
|
});
|
|
});
|