vault/ui/tests/helpers/replication.js
Chelsea Shaw 349e449d49
UI: Glimmerize replication enable form (#26417)
* Glimmerize replication controllers

* Add enable-replication-form component with tests

* use EnableReplicationForm in index and mode routes

* clean up enable action from replication-actions mixin

* fix test failure for structuredClone

* stabilize tests, remove enable action from replication-actions and replication-summary

* Update ui/lib/replication/addon/controllers/replication-mode.js

Co-authored-by: claire bontempo <68122737+hellobontempo@users.noreply.github.com>

* address PR comments

* stabilize oidc test?

---------

Co-authored-by: claire bontempo <68122737+hellobontempo@users.noreply.github.com>
2024-04-15 15:30:33 -05:00

97 lines
3.1 KiB
JavaScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: BUSL-1.1
*/
import { click, fillIn, findAll, currentURL, visit, settled, waitUntil } from '@ember/test-helpers';
import { GENERAL } from 'vault/tests/helpers/general-selectors';
export const disableReplication = async (type, assert) => {
// disable performance replication
await visit(`/vault/replication/${type}`);
if (findAll('[data-test-replication-link="manage"]').length) {
await click('[data-test-replication-link="manage"]');
await click('[data-test-disable-replication] button');
const typeDisplay = type === 'dr' ? 'Disaster Recovery' : 'Performance';
await fillIn('[data-test-confirmation-modal-input="Disable Replication?"]', typeDisplay);
await click('[data-test-confirm-button]');
await settled(); // eslint-disable-line
if (assert) {
assert
.dom(GENERAL.latestFlashContent)
.hasText(
'This cluster is having replication disabled. Vault will be unavailable for a brief period and will resume service shortly.'
);
assert.ok(
await waitUntil(() => currentURL() === '/vault/replication'),
'redirects to the replication page'
);
}
await settled();
}
};
export const STATUS_DISABLED_RESPONSE = {
dr: mockReplicationBlock(),
performance: mockReplicationBlock(),
};
/**
* Mock replication block returns the expected payload for a given replication type
* @param {string} mode disabled | primary | secondary
* @param {string} status connected | disconnected
* @returns expected object for a single replication type, eg dr or performance values
*/
export function mockReplicationBlock(mode = 'disabled', status = 'connected') {
switch (mode) {
case 'primary':
return {
cluster_id: '5f20f5ab-acea-0481-787e-71ec2ff5a60b',
known_secondaries: ['4'],
last_wal: 455,
merkle_root: 'aaaaaabbbbbbbccccccccddddddd',
mode: 'primary',
primary_cluster_addr: '',
secondaries: [
{
api_address: 'https://127.0.0.1:49277',
cluster_address: 'https://127.0.0.1:49281',
connection_status: status,
last_heartbeat: '2020-06-10T15:40:46-07:00',
node_id: '4',
},
],
state: 'stream-wals',
};
case 'secondary':
return {
cluster_id: '5f20f5ab-acea-0481-787e-71ec2ff5a60b',
known_primary_cluster_addrs: ['https://127.0.0.1:8201'],
last_remote_wal: 291,
merkle_root: 'aaaaaabbbbbbbccccccccddddddd',
corrupted_merkle_tree: false,
last_corruption_check_epoch: '1694456090',
mode: 'secondary',
primaries: [
{
api_address: 'https://127.0.0.1:49244',
cluster_address: 'https://127.0.0.1:8201',
connection_status: status,
last_heartbeat: '2020-06-10T15:40:46-07:00',
},
],
primary_cluster_addr: 'https://127.0.0.1:8201',
secondary_id: '2',
state: 'stream-wals',
};
default:
return {
mode: 'disabled',
};
}
}