mirror of
https://github.com/hashicorp/vault.git
synced 2025-08-19 05:31:10 +02:00
* add capabilities service to replication engine * fix capabilities paths in route file * pass updated capabilities using getters * add changelog * fix logic so default is based on undefined capabilities (not no mode)
117 lines
3.9 KiB
JavaScript
117 lines
3.9 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 } from '@ember/test-helpers';
|
|
import { hbs } from 'ember-cli-htmlbars';
|
|
import { setupEngine } from 'ember-engines/test-support';
|
|
|
|
const S = {
|
|
title: 'h1',
|
|
subtitle: 'h2',
|
|
enableForm: '[data-test-replication-enable-form]',
|
|
enableBtn: '[data-test-replication-enable]',
|
|
summary: '[data-test-replication-summary]',
|
|
notAllowed: '[data-test-not-allowed]',
|
|
};
|
|
module('Integration | Component | replication page/mode-index', function (hooks) {
|
|
setupRenderingTest(hooks);
|
|
setupEngine(hooks, 'replication');
|
|
|
|
hooks.beforeEach(function () {
|
|
this.store = this.owner.lookup('service:store');
|
|
this.onEnable = () => {};
|
|
this.clusterModel = { replicationAttrs: {} };
|
|
this.replicationMode = '';
|
|
this.replicationDisabled = true;
|
|
|
|
this.renderComponent = () => {
|
|
return render(
|
|
hbs`<Page::ModeIndex @replicationDisabled={{this.replicationDisabled}} @replicationMode={{this.replicationMode}} @cluster={{this.clusterModel}} @onEnableSuccess={{this.onEnable}} />`,
|
|
{ owner: this.engine }
|
|
);
|
|
};
|
|
});
|
|
|
|
module('DR mode', function (hooks) {
|
|
hooks.beforeEach(function () {
|
|
this.replicationMode = 'dr';
|
|
});
|
|
test('it renders correctly when replication disabled', async function (assert) {
|
|
await this.renderComponent();
|
|
|
|
assert.dom(S.title).hasText('Enable Disaster Recovery Replication');
|
|
assert.dom(S.enableForm).exists();
|
|
assert.dom(S.notAllowed).doesNotExist();
|
|
assert.dom(S.enableBtn).exists('Enable button shows by default if no permissions available');
|
|
});
|
|
test('it renders correctly when replication enabled', async function (assert) {
|
|
this.replicationDisabled = false;
|
|
await this.renderComponent();
|
|
|
|
assert.dom(S.enableForm).doesNotExist();
|
|
assert.dom(S.summary).exists();
|
|
});
|
|
|
|
test('it hides enable button if no permissions', async function (assert) {
|
|
this.clusterModel.canEnablePrimaryDr = false;
|
|
await this.renderComponent();
|
|
|
|
assert.dom(S.enableForm).exists();
|
|
assert.dom(S.notAllowed).exists();
|
|
assert.dom(S.enableBtn).doesNotExist();
|
|
});
|
|
|
|
test('it shows enable button if has permissions', async function (assert) {
|
|
this.clusterModel.canEnablePrimaryDr = true;
|
|
await this.renderComponent();
|
|
|
|
assert.dom(S.enableForm).exists();
|
|
assert.dom(S.notAllowed).doesNotExist();
|
|
assert.dom(S.enableBtn).exists();
|
|
});
|
|
});
|
|
|
|
module('Performance mode', function (hooks) {
|
|
hooks.beforeEach(function () {
|
|
this.replicationMode = 'performance';
|
|
});
|
|
test('it renders correctly when replication disabled', async function (assert) {
|
|
await this.renderComponent();
|
|
|
|
assert.dom(S.title).hasText('Enable Performance Replication');
|
|
assert.dom(S.enableForm).exists();
|
|
assert.dom(S.notAllowed).doesNotExist();
|
|
assert.dom(S.enableBtn).exists('Enable button shows by default if no permissions available');
|
|
});
|
|
test('it renders correctly when replication enabled', async function (assert) {
|
|
this.replicationDisabled = false;
|
|
await this.renderComponent();
|
|
|
|
assert.dom(S.enableForm).doesNotExist();
|
|
assert.dom(S.summary).exists();
|
|
});
|
|
|
|
test('it hides enable button if no permissions', async function (assert) {
|
|
this.clusterModel.canEnablePrimaryPerformance = false;
|
|
await this.renderComponent();
|
|
|
|
assert.dom(S.enableForm).exists();
|
|
assert.dom(S.notAllowed).exists();
|
|
assert.dom(S.enableBtn).doesNotExist();
|
|
});
|
|
|
|
test('it shows enable button if has permissions', async function (assert) {
|
|
this.clusterModel.canEnablePrimaryPerformance = true;
|
|
await this.renderComponent();
|
|
|
|
assert.dom(S.enableForm).exists();
|
|
assert.dom(S.notAllowed).doesNotExist();
|
|
assert.dom(S.enableBtn).exists();
|
|
});
|
|
});
|
|
});
|