vault/ui/tests/helpers/clients/client-count-helpers.js
2024-08-22 10:01:16 -05:00

1038 lines
26 KiB
JavaScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: BUSL-1.1
*/
import { findAll } from '@ember/test-helpers';
import { CHARTS } from './client-count-selectors';
export function assertBarChart(assert, chartName, byMonthData, isStacked = false) {
// assertion count is byMonthData.length, plus 2
const chart = CHARTS.chart(chartName);
const dataBars = findAll(`${chart} ${CHARTS.verticalBar}`).filter(
(b) => b.hasAttribute('height') && b.getAttribute('height') !== '0'
);
const xAxisLabels = findAll(`${chart} ${CHARTS.xAxisLabel}`);
let count = byMonthData.filter((m) => m.clients).length;
if (isStacked) count = count * 2;
assert.strictEqual(dataBars.length, count, `${chartName}: it renders bars for each non-zero month`);
assert.strictEqual(
xAxisLabels.length,
byMonthData.length,
`${chartName}: it renders a label for each month`
);
xAxisLabels.forEach((e, i) => {
assert.dom(e).hasText(`${byMonthData[i].month}`, `renders x-axis label: ${byMonthData[i].month}`);
});
}
export const ACTIVITY_RESPONSE_STUB = {
start_time: '2023-06-01T00:00:00Z',
end_time: '2023-09-30T23:59:59Z', // is always the last day and hour of the month queried
by_namespace: [
{
namespace_id: 'e67m31',
namespace_path: 'ns1',
counts: {
acme_clients: 5699,
clients: 18903,
entity_clients: 4256,
non_entity_clients: 4138,
secret_syncs: 4810,
},
mounts: [
{
mount_path: 'auth/authid/0',
counts: {
acme_clients: 0,
clients: 8394,
entity_clients: 4256,
non_entity_clients: 4138,
secret_syncs: 0,
},
},
{
mount_path: 'kvv2-engine-0',
counts: {
acme_clients: 0,
clients: 4810,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 4810,
},
},
{
mount_path: 'pki-engine-0',
counts: {
acme_clients: 5699,
clients: 5699,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 0,
},
},
],
},
{
namespace_id: 'root',
namespace_path: '',
counts: {
acme_clients: 4003,
clients: 16384,
entity_clients: 4002,
non_entity_clients: 4089,
secret_syncs: 4290,
},
mounts: [
{
mount_path: 'auth/authid/0',
counts: {
acme_clients: 0,
clients: 8091,
entity_clients: 4002,
non_entity_clients: 4089,
secret_syncs: 0,
},
},
{
mount_path: 'kvv2-engine-0',
counts: {
acme_clients: 0,
clients: 4290,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 4290,
},
},
{
mount_path: 'pki-engine-0',
counts: {
acme_clients: 4003,
clients: 4003,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 0,
},
},
],
},
],
months: [
{
timestamp: '2023-06-01T00:00:00Z',
counts: null,
namespaces: null,
new_clients: null,
},
{
timestamp: '2023-07-01T00:00:00Z',
counts: {
acme_clients: 100,
clients: 400,
entity_clients: 100,
non_entity_clients: 100,
secret_syncs: 100,
},
namespaces: [
{
namespace_id: 'root',
namespace_path: '',
counts: {
acme_clients: 100,
clients: 400,
entity_clients: 100,
non_entity_clients: 100,
secret_syncs: 100,
},
mounts: [
{
mount_path: 'pki-engine-0',
counts: {
acme_clients: 100,
clients: 100,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 0,
},
},
{
mount_path: 'auth/authid/0',
counts: {
acme_clients: 0,
clients: 200,
entity_clients: 100,
non_entity_clients: 100,
secret_syncs: 0,
},
},
{
mount_path: 'kvv2-engine-0',
counts: {
acme_clients: 0,
clients: 100,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 100,
},
},
],
},
],
new_clients: {
counts: {
acme_clients: 100,
clients: 400,
entity_clients: 100,
non_entity_clients: 100,
secret_syncs: 100,
},
namespaces: [
{
namespace_id: 'root',
namespace_path: '',
counts: {
acme_clients: 100,
clients: 400,
entity_clients: 100,
non_entity_clients: 100,
secret_syncs: 100,
},
mounts: [
{
mount_path: 'pki-engine-0',
counts: {
acme_clients: 100,
clients: 100,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 0,
},
},
{
mount_path: 'auth/authid/0',
counts: {
acme_clients: 0,
clients: 200,
entity_clients: 100,
non_entity_clients: 100,
secret_syncs: 0,
},
},
{
mount_path: 'kvv2-engine-0',
counts: {
acme_clients: 0,
clients: 100,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 100,
},
},
],
},
],
},
},
{
timestamp: '2023-08-01T00:00:00Z',
counts: {
acme_clients: 100,
clients: 400,
entity_clients: 100,
non_entity_clients: 100,
secret_syncs: 100,
},
namespaces: [
{
namespace_id: 'root',
namespace_path: '',
counts: {
acme_clients: 100,
clients: 400,
entity_clients: 100,
non_entity_clients: 100,
secret_syncs: 100,
},
mounts: [
{
mount_path: 'pki-engine-0',
counts: {
acme_clients: 100,
clients: 100,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 0,
},
},
{
mount_path: 'auth/authid/0',
counts: {
acme_clients: 0,
clients: 200,
entity_clients: 100,
non_entity_clients: 100,
secret_syncs: 0,
},
},
{
mount_path: 'kvv2-engine-0',
counts: {
acme_clients: 0,
clients: 100,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 100,
},
},
],
},
],
new_clients: {
counts: null,
namespaces: null,
},
},
{
timestamp: '2023-09-01T00:00:00Z',
counts: {
acme_clients: 1928,
clients: 3928,
entity_clients: 832,
non_entity_clients: 930,
secret_syncs: 238,
},
namespaces: [
{
namespace_id: 'e67m31',
namespace_path: 'ns1',
counts: {
acme_clients: 934,
clients: 1981,
entity_clients: 708,
non_entity_clients: 182,
secret_syncs: 157,
},
mounts: [
{
mount_path: 'pki-engine-0',
counts: {
acme_clients: 934,
clients: 934,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 0,
},
},
{
mount_path: 'auth/authid/0',
counts: {
acme_clients: 0,
clients: 890,
entity_clients: 708,
non_entity_clients: 182,
secret_syncs: 0,
},
},
{
mount_path: 'kvv2-engine-0',
counts: {
acme_clients: 0,
clients: 157,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 157,
},
},
],
},
{
namespace_id: 'root',
namespace_path: '',
counts: {
acme_clients: 994,
clients: 1947,
entity_clients: 124,
non_entity_clients: 748,
secret_syncs: 81,
},
mounts: [
{
mount_path: 'pki-engine-0',
counts: {
acme_clients: 994,
clients: 994,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 0,
},
},
{
mount_path: 'auth/authid/0',
counts: {
acme_clients: 0,
clients: 872,
entity_clients: 124,
non_entity_clients: 748,
secret_syncs: 0,
},
},
{
mount_path: 'kvv2-engine-0',
counts: {
acme_clients: 0,
clients: 81,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 81,
},
},
],
},
],
new_clients: {
counts: {
acme_clients: 144,
clients: 364,
entity_clients: 59,
non_entity_clients: 112,
secret_syncs: 49,
},
namespaces: [
{
namespace_id: 'root',
namespace_path: '',
counts: {
acme_clients: 91,
clients: 191,
entity_clients: 25,
non_entity_clients: 50,
secret_syncs: 25,
},
mounts: [
{
mount_path: 'pki-engine-0',
counts: {
acme_clients: 91,
clients: 91,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 0,
},
},
{
mount_path: 'auth/authid/0',
counts: {
acme_clients: 0,
clients: 75,
entity_clients: 25,
non_entity_clients: 50,
secret_syncs: 0,
},
},
{
mount_path: 'kvv2-engine-0',
counts: {
acme_clients: 0,
clients: 25,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 25,
},
},
],
},
{
namespace_id: 'e67m31',
namespace_path: 'ns1',
counts: {
acme_clients: 53,
clients: 173,
entity_clients: 34,
non_entity_clients: 62,
secret_syncs: 24,
},
mounts: [
{
mount_path: 'auth/authid/0',
counts: {
acme_clients: 0,
clients: 96,
entity_clients: 34,
non_entity_clients: 62,
secret_syncs: 0,
},
},
{
mount_path: 'pki-engine-0',
counts: {
acme_clients: 53,
clients: 53,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 0,
},
},
{
mount_path: 'kvv2-engine-0',
counts: {
acme_clients: 0,
clients: 24,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 24,
},
},
],
},
],
},
},
],
total: {
acme_clients: 9702,
clients: 35287,
entity_clients: 8258,
non_entity_clients: 8227,
secret_syncs: 9100,
},
};
// combined activity data before and after 1.10 upgrade when Vault added mount attribution
export const MIXED_ACTIVITY_RESPONSE_STUB = {
start_time: '2024-03-01T00:00:00Z',
end_time: '2024-04-30T23:59:59Z',
total: {
acme_clients: 0,
clients: 3,
entity_clients: 3,
non_entity_clients: 0,
secret_syncs: 0,
},
by_namespace: [
{
counts: {
acme_clients: 0,
clients: 3,
entity_clients: 3,
non_entity_clients: 0,
secret_syncs: 0,
},
mounts: [
{
counts: {
acme_clients: 0,
clients: 2,
entity_clients: 2,
non_entity_clients: 0,
secret_syncs: 0,
},
mount_path: 'no mount accessor (pre-1.10 upgrade?)',
},
{
counts: {
acme_clients: 0,
clients: 1,
entity_clients: 1,
non_entity_clients: 0,
secret_syncs: 0,
},
mount_path: 'auth/u/',
},
],
namespace_id: 'root',
namespace_path: '',
},
],
months: [
{
counts: null,
namespaces: null,
new_clients: null,
timestamp: '2024-03-01T00:00:00Z',
},
{
counts: {
acme_clients: 0,
clients: 3,
entity_clients: 3,
non_entity_clients: 0,
secret_syncs: 0,
},
namespaces: [
{
counts: {
acme_clients: 0,
clients: 3,
entity_clients: 3,
non_entity_clients: 0,
secret_syncs: 0,
},
mounts: [
{
counts: {
acme_clients: 0,
clients: 2,
entity_clients: 2,
non_entity_clients: 0,
secret_syncs: 0,
},
mount_path: 'no mount accessor (pre-1.10 upgrade?)',
},
{
counts: {
acme_clients: 0,
clients: 1,
entity_clients: 1,
non_entity_clients: 0,
secret_syncs: 0,
},
mount_path: 'auth/u/',
},
],
namespace_id: 'root',
namespace_path: '',
},
],
new_clients: {
counts: {
acme_clients: 0,
clients: 3,
entity_clients: 3,
non_entity_clients: 0,
secret_syncs: 0,
},
namespaces: [
{
counts: {
acme_clients: 0,
clients: 3,
entity_clients: 3,
non_entity_clients: 0,
secret_syncs: 0,
},
mounts: [
{
counts: {
acme_clients: 0,
clients: 2,
entity_clients: 2,
non_entity_clients: 0,
secret_syncs: 0,
},
mount_path: 'no mount accessor (pre-1.10 upgrade?)',
},
{
counts: {
acme_clients: 0,
clients: 1,
entity_clients: 1,
non_entity_clients: 0,
secret_syncs: 0,
},
mount_path: 'auth/u/',
},
],
namespace_id: 'root',
namespace_path: '',
},
],
},
timestamp: '2024-04-01T00:00:00Z',
},
],
};
// order of this array matters because index 0 is a month without data
export const SERIALIZED_ACTIVITY_RESPONSE = {
total: {
acme_clients: 9702,
clients: 35287,
entity_clients: 8258,
non_entity_clients: 8227,
secret_syncs: 9100,
},
by_namespace: [
{
label: 'ns1',
acme_clients: 5699,
clients: 18903,
entity_clients: 4256,
non_entity_clients: 4138,
secret_syncs: 4810,
mounts: [
{
label: 'auth/authid/0',
acme_clients: 0,
clients: 8394,
entity_clients: 4256,
non_entity_clients: 4138,
secret_syncs: 0,
},
{
label: 'kvv2-engine-0',
acme_clients: 0,
clients: 4810,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 4810,
},
{
label: 'pki-engine-0',
acme_clients: 5699,
clients: 5699,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 0,
},
],
},
{
label: 'root',
acme_clients: 4003,
clients: 16384,
entity_clients: 4002,
non_entity_clients: 4089,
secret_syncs: 4290,
mounts: [
{
label: 'auth/authid/0',
acme_clients: 0,
clients: 8091,
entity_clients: 4002,
non_entity_clients: 4089,
secret_syncs: 0,
},
{
label: 'kvv2-engine-0',
acme_clients: 0,
clients: 4290,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 4290,
},
{
label: 'pki-engine-0',
acme_clients: 4003,
clients: 4003,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 0,
},
],
},
],
by_month: [
{
month: '6/23',
timestamp: '2023-06-01T00:00:00Z',
namespaces: [],
new_clients: {
month: '6/23',
timestamp: '2023-06-01T00:00:00Z',
namespaces: [],
},
},
{
month: '7/23',
timestamp: '2023-07-01T00:00:00Z',
acme_clients: 100,
clients: 400,
entity_clients: 100,
non_entity_clients: 100,
secret_syncs: 100,
namespaces: [
{
label: 'root',
acme_clients: 100,
clients: 400,
entity_clients: 100,
non_entity_clients: 100,
secret_syncs: 100,
mounts: [
{
label: 'pki-engine-0',
acme_clients: 100,
clients: 100,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 0,
},
{
label: 'auth/authid/0',
acme_clients: 0,
clients: 200,
entity_clients: 100,
non_entity_clients: 100,
secret_syncs: 0,
},
{
label: 'kvv2-engine-0',
acme_clients: 0,
clients: 100,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 100,
},
],
},
],
new_clients: {
month: '7/23',
timestamp: '2023-07-01T00:00:00Z',
acme_clients: 100,
clients: 400,
entity_clients: 100,
non_entity_clients: 100,
secret_syncs: 100,
namespaces: [
{
label: 'root',
acme_clients: 100,
clients: 400,
entity_clients: 100,
non_entity_clients: 100,
secret_syncs: 100,
mounts: [
{
label: 'pki-engine-0',
acme_clients: 100,
clients: 100,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 0,
},
{
label: 'auth/authid/0',
acme_clients: 0,
clients: 200,
entity_clients: 100,
non_entity_clients: 100,
secret_syncs: 0,
},
{
label: 'kvv2-engine-0',
acme_clients: 0,
clients: 100,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 100,
},
],
},
],
},
},
{
month: '8/23',
timestamp: '2023-08-01T00:00:00Z',
acme_clients: 100,
clients: 400,
entity_clients: 100,
non_entity_clients: 100,
secret_syncs: 100,
namespaces: [
{
label: 'root',
acme_clients: 100,
clients: 400,
entity_clients: 100,
non_entity_clients: 100,
secret_syncs: 100,
mounts: [
{
label: 'pki-engine-0',
acme_clients: 100,
clients: 100,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 0,
},
{
label: 'auth/authid/0',
acme_clients: 0,
clients: 200,
entity_clients: 100,
non_entity_clients: 100,
secret_syncs: 0,
},
{
label: 'kvv2-engine-0',
acme_clients: 0,
clients: 100,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 100,
},
],
},
],
new_clients: {
month: '8/23',
timestamp: '2023-08-01T00:00:00Z',
namespaces: [],
},
},
{
month: '9/23',
timestamp: '2023-09-01T00:00:00Z',
acme_clients: 1928,
clients: 3928,
entity_clients: 832,
non_entity_clients: 930,
secret_syncs: 238,
namespaces: [
{
label: 'ns1',
acme_clients: 934,
clients: 1981,
entity_clients: 708,
non_entity_clients: 182,
secret_syncs: 157,
mounts: [
{
label: 'pki-engine-0',
acme_clients: 934,
clients: 934,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 0,
},
{
label: 'auth/authid/0',
acme_clients: 0,
clients: 890,
entity_clients: 708,
non_entity_clients: 182,
secret_syncs: 0,
},
{
label: 'kvv2-engine-0',
acme_clients: 0,
clients: 157,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 157,
},
],
},
{
label: 'root',
acme_clients: 994,
clients: 1947,
entity_clients: 124,
non_entity_clients: 748,
secret_syncs: 81,
mounts: [
{
label: 'pki-engine-0',
acme_clients: 994,
clients: 994,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 0,
},
{
label: 'auth/authid/0',
acme_clients: 0,
clients: 872,
entity_clients: 124,
non_entity_clients: 748,
secret_syncs: 0,
},
{
label: 'kvv2-engine-0',
acme_clients: 0,
clients: 81,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 81,
},
],
},
],
new_clients: {
month: '9/23',
timestamp: '2023-09-01T00:00:00Z',
acme_clients: 144,
clients: 364,
entity_clients: 59,
non_entity_clients: 112,
secret_syncs: 49,
namespaces: [
{
label: 'root',
acme_clients: 91,
clients: 191,
entity_clients: 25,
non_entity_clients: 50,
secret_syncs: 25,
mounts: [
{
label: 'pki-engine-0',
acme_clients: 91,
clients: 91,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 0,
},
{
label: 'auth/authid/0',
acme_clients: 0,
clients: 75,
entity_clients: 25,
non_entity_clients: 50,
secret_syncs: 0,
},
{
label: 'kvv2-engine-0',
acme_clients: 0,
clients: 25,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 25,
},
],
},
{
label: 'ns1',
acme_clients: 53,
clients: 173,
entity_clients: 34,
non_entity_clients: 62,
secret_syncs: 24,
mounts: [
{
label: 'auth/authid/0',
acme_clients: 0,
clients: 96,
entity_clients: 34,
non_entity_clients: 62,
secret_syncs: 0,
},
{
label: 'pki-engine-0',
acme_clients: 53,
clients: 53,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 0,
},
{
label: 'kvv2-engine-0',
acme_clients: 0,
clients: 24,
entity_clients: 0,
non_entity_clients: 0,
secret_syncs: 24,
},
],
},
],
},
},
],
};