Files
threshold-ui/e2e-tests/admin/tests/delete-resources.spec.js
T

205 lines
6.6 KiB
JavaScript
Raw Normal View History

2023-10-06 11:10:25 -04:00
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: BUSL-1.1
2023-10-06 11:10:25 -04:00
*/
2024-12-03 18:51:22 -05:00
import { test, authenticatedState } from '../../global-setup.js';
import { execSync } from 'node:child_process';
2023-10-06 11:10:25 -04:00
import {
2023-10-06 11:10:25 -04:00
authenticateBoundaryCli,
checkBoundaryCli,
createOrgCli,
createProjectCli,
createControllerLedWorkerCli,
createPasswordAuthMethodCli,
2023-10-06 11:10:25 -04:00
makeAuthMethodPrimaryCli,
createPasswordAccountCli,
createRoleCli,
createGroupCli,
createUserCli,
createStaticHostCatalogCli,
2023-10-06 11:10:25 -04:00
createDynamicAwsHostCatalogCli,
createStaticHostCli,
createHostSetCli,
createStaticCredentialStoreCli,
createTcpTarget,
createVaultCredentialStoreCli,
createUsernamePasswordCredentialCli,
deleteScopeCli,
2024-11-12 11:21:37 -05:00
} from '../../helpers/boundary-cli.js';
import { checkVaultCli, getVaultToken } from '../../helpers/vault-cli.js';
import { AuthMethodsPage } from '../pages/auth-methods.js';
import { BaseResourcePage } from '../pages/base-resource.js';
import { WorkersPage } from '../pages/workers.js';
2023-10-06 11:10:25 -04:00
const secretPolicyName = 'kv-policy';
const boundaryPolicyName = 'boundary-controller';
test.use({ storageState: authenticatedState });
// Setting the test timeout to 180s
// This test can often exceed the globally defined timeout due to the number of
// network calls.
test.setTimeout(180000);
2023-10-06 11:10:25 -04:00
test.beforeAll(async () => {
await checkBoundaryCli();
await checkVaultCli();
});
2024-11-12 18:11:00 -05:00
test.beforeEach(
async ({ baseURL, adminAuthMethodId, adminLoginName, adminPassword }) => {
execSync(`vault policy delete ${secretPolicyName}`);
execSync(`vault policy delete ${boundaryPolicyName}`);
await authenticateBoundaryCli(
baseURL,
adminAuthMethodId,
adminLoginName,
adminPassword,
);
},
);
2023-10-06 11:10:25 -04:00
test('Verify resources can be deleted @ce @aws', async ({
page,
awsRegion,
vaultAddr,
}) => {
2023-10-06 11:10:25 -04:00
let orgId;
let orgDeleted = false;
2023-10-06 11:10:25 -04:00
try {
// Create boundary resources using CLI
orgId = await createOrgCli();
let projectId = await createProjectCli(orgId);
let workerId = await createControllerLedWorkerCli();
let authMethodId = await createPasswordAuthMethodCli(orgId);
2023-10-06 11:10:25 -04:00
await makeAuthMethodPrimaryCli(orgId, authMethodId);
let passwordAccountId = await createPasswordAccountCli(authMethodId);
let projectScopeRoleId = await createRoleCli(projectId);
let orgScopeRoleId = await createRoleCli(orgId);
let globalScopeRoleId = await createRoleCli('global');
let groupId = await createGroupCli(orgId);
let userId = await createUserCli(orgId);
let staticHostCatalogId = await createStaticHostCatalogCli(projectId);
2024-11-12 18:11:00 -05:00
let dynamicAwsHostCatalogId = await createDynamicAwsHostCatalogCli(
projectId,
awsRegion,
);
let staticHostId = await createStaticHostCli(staticHostCatalogId);
let staticHostSetId = await createHostSetCli(staticHostCatalogId);
2024-11-12 18:11:00 -05:00
let staticCredentialStoreId =
await createStaticCredentialStoreCli(projectId);
const vaultToken = await getVaultToken(
boundaryPolicyName,
secretPolicyName,
);
let vaultCredentialStoreId = await createVaultCredentialStoreCli(
projectId,
vaultAddr,
vaultToken,
);
2023-10-06 11:10:25 -04:00
let usernamePasswordCredentialId =
await createUsernamePasswordCredentialCli(staticCredentialStoreId);
let tcpTargetId = await createTcpTarget(projectId);
2023-10-06 11:10:25 -04:00
const baseResourcePage = new BaseResourcePage(page);
2023-10-06 11:10:25 -04:00
// Delete TCP target
await page.goto(`/scopes/${projectId}/targets/${tcpTargetId}`);
await baseResourcePage.deleteResource(page);
2023-10-06 11:10:25 -04:00
// Delete username-password credentials
await page.goto(
`/scopes/${projectId}/credential-stores/${staticCredentialStoreId}/credentials/${usernamePasswordCredentialId}`,
2023-10-06 11:10:25 -04:00
);
await baseResourcePage.deleteResource(page);
2023-10-06 11:10:25 -04:00
// Delete static credential store
await page.goto(
`/scopes/${projectId}/credential-stores/${staticCredentialStoreId}`,
2023-10-06 11:10:25 -04:00
);
await baseResourcePage.deleteResource(page);
2023-10-06 11:10:25 -04:00
// Delete vault credential store
await page.goto(
`/scopes/${projectId}/credential-stores/${vaultCredentialStoreId}`,
2023-10-06 11:10:25 -04:00
);
await baseResourcePage.deleteResource(page);
2023-10-06 11:10:25 -04:00
// Delete static host set
await page.goto(
`/scopes/${projectId}/host-catalogs/${staticHostCatalogId}/host-sets/${staticHostSetId}`,
2023-10-06 11:10:25 -04:00
);
await baseResourcePage.deleteResource(page);
2023-10-06 11:10:25 -04:00
// Delete static host
await page.goto(
`/scopes/${projectId}/host-catalogs/${staticHostCatalogId}/hosts/${staticHostId}`,
2023-10-06 11:10:25 -04:00
);
await baseResourcePage.deleteResource(page);
2023-10-06 11:10:25 -04:00
// Delete static host catalog
await page.goto(
`/scopes/${projectId}/host-catalogs/${staticHostCatalogId}`,
2023-10-06 11:10:25 -04:00
);
await baseResourcePage.deleteResource(page);
2023-10-06 11:10:25 -04:00
// Delete dynamic aws host catalog
await page.goto(
`/scopes/${projectId}/host-catalogs/${dynamicAwsHostCatalogId}`,
2023-10-06 11:10:25 -04:00
);
await baseResourcePage.deleteResource(page);
2023-10-06 11:10:25 -04:00
// Delete user
await page.goto(`/scopes/${projectId}/users/${userId}`);
await baseResourcePage.deleteResource(page);
2023-10-06 11:10:25 -04:00
// Delete group
await page.goto(`/scopes/${projectId}/groups/${groupId}`);
await baseResourcePage.deleteResource(page);
2023-10-06 11:10:25 -04:00
// Delete role under global scope
await page.goto(`/scopes/global/roles/${globalScopeRoleId}`);
await baseResourcePage.deleteResource(page);
2023-10-06 11:10:25 -04:00
// Delete role under org scope
await page.goto(`/scopes/${projectId}/roles/${orgScopeRoleId}`);
await baseResourcePage.deleteResource(page);
2023-10-06 11:10:25 -04:00
// Delete role under project scope
await page.goto(`/scopes/${projectId}/roles/${projectScopeRoleId}`);
await baseResourcePage.deleteResource(page);
2023-10-06 11:10:25 -04:00
// Delete password account
await page.goto(
`/scopes/${orgId}/auth-methods/${authMethodId}/accounts/${passwordAccountId}`,
2023-10-06 11:10:25 -04:00
);
await baseResourcePage.deleteResource(page);
2023-10-06 11:10:25 -04:00
// Delete auth method
await page.goto(`/scopes/${orgId}/auth-methods/${authMethodId}`);
const authMethodsPage = new AuthMethodsPage(page);
await authMethodsPage.removeAuthMethodAsPrimary();
await baseResourcePage.deleteResource(page);
2023-10-06 11:10:25 -04:00
// Delete worker
await page.goto(`/scopes/global/workers/${workerId}`);
const workersPage = new WorkersPage(page);
await workersPage.deleteResource(page);
2023-10-06 11:10:25 -04:00
// Delete project
await page.goto(`/scopes/${projectId}`);
await baseResourcePage.deleteResource(page);
2023-10-06 11:10:25 -04:00
// Delete org
await page.goto(`/scopes/${orgId}/edit`);
await baseResourcePage.deleteResource(page);
orgDeleted = true;
2023-10-06 11:10:25 -04:00
} finally {
// Delete org in case the test failed before deleting the org using UI
if (orgId && orgDeleted === false) {
await deleteScopeCli(orgId);
}
2023-10-06 11:10:25 -04:00
}
});