test(e2e): Update password test to log in with new account (#2313)
* test(e2e): Update password test to log in with new account * CR: Don't break other tests Performing a log out in a test when using authenticatedState causes subsequent tests that use the state to fail (it will show up as logged out) * CR: Only do clean up steps when necessary * CR: Use const
This commit is contained in:
1 parent
7e89f28949
commit
8d217aab2b
6 files changed
+146
-43
No files matched your search
@@ -38,21 +38,11 @@ test.beforeAll(async () => {
|
||||
|
||||
test('Set up LDAP auth method @ce @ent @docker', async ({ page }) => {
|
||||
await page.goto('/');
|
||||
let org;
|
||||
let orgName;
|
||||
let connect;
|
||||
try {
|
||||
// Create an org
|
||||
const orgName = await createOrg(page);
|
||||
await authenticateBoundaryCli(
|
||||
process.env.BOUNDARY_ADDR,
|
||||
process.env.E2E_PASSWORD_AUTH_METHOD_ID,
|
||||
process.env.E2E_PASSWORD_ADMIN_LOGIN_NAME,
|
||||
process.env.E2E_PASSWORD_ADMIN_PASSWORD,
|
||||
);
|
||||
const orgs = JSON.parse(execSync('boundary scopes list -format json'));
|
||||
org = orgs.items.filter((obj) => obj.name == orgName)[0];
|
||||
|
||||
// Navigate to LDAP auth method creation page
|
||||
// Create an LDAP auth method
|
||||
orgName = await createOrg(page);
|
||||
await page
|
||||
.getByRole('navigation', { name: 'IAM' })
|
||||
.getByRole('link', { name: 'Auth Methods' })
|
||||
@@ -135,6 +125,14 @@ test('Set up LDAP auth method @ce @ent @docker', async ({ page }) => {
|
||||
await createRole(page);
|
||||
await addPrincipalToRole(page, ldapManagedGroupName);
|
||||
} finally {
|
||||
await authenticateBoundaryCli(
|
||||
process.env.BOUNDARY_ADDR,
|
||||
process.env.E2E_PASSWORD_AUTH_METHOD_ID,
|
||||
process.env.E2E_PASSWORD_ADMIN_LOGIN_NAME,
|
||||
process.env.E2E_PASSWORD_ADMIN_PASSWORD,
|
||||
);
|
||||
const orgs = JSON.parse(execSync('boundary scopes list -format json'));
|
||||
const org = orgs.items.filter((obj) => obj.name == orgName)[0];
|
||||
if (org) {
|
||||
await deleteOrgCli(org.id);
|
||||
}
|
||||
|
||||
@@ -4,9 +4,8 @@
|
||||
*/
|
||||
|
||||
/* eslint-disable no-undef */
|
||||
const { test } = require('@playwright/test');
|
||||
const { test, expect } = require('@playwright/test');
|
||||
const { execSync } = require('child_process');
|
||||
const { authenticatedState } = require('../helpers/general');
|
||||
const {
|
||||
authenticateBoundaryCli,
|
||||
checkBoundaryCli,
|
||||
@@ -22,8 +21,6 @@ const {
|
||||
makeAuthMethodPrimary,
|
||||
} = require('../helpers/boundary-ui');
|
||||
|
||||
test.use({ storageState: authenticatedState });
|
||||
|
||||
test.beforeAll(async () => {
|
||||
await checkBoundaryCli();
|
||||
});
|
||||
@@ -32,9 +29,110 @@ test('Verify new auth-method can be created and assigned to users @ce @ent @aws
|
||||
page,
|
||||
}) => {
|
||||
await page.goto('/');
|
||||
let org;
|
||||
let orgName;
|
||||
try {
|
||||
const orgName = await createOrg(page);
|
||||
// Log in
|
||||
await page
|
||||
.getByLabel('Login Name')
|
||||
.fill(process.env.E2E_PASSWORD_ADMIN_LOGIN_NAME);
|
||||
await page
|
||||
.getByLabel('Password', { exact: true })
|
||||
.fill(process.env.E2E_PASSWORD_ADMIN_PASSWORD);
|
||||
await page.getByRole('button', { name: 'Sign In' }).click();
|
||||
await expect(
|
||||
page.getByRole('navigation', { name: 'General' }),
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.getByText(process.env.E2E_PASSWORD_ADMIN_LOGIN_NAME),
|
||||
).toBeEnabled();
|
||||
await expect(
|
||||
page.getByRole('navigation', { name: 'breadcrumbs' }).getByText('Orgs'),
|
||||
).toBeVisible();
|
||||
|
||||
// Create a new password auth method and account
|
||||
orgName = await createOrg(page);
|
||||
const authMethodName = await createPasswordAuthMethod(page);
|
||||
const username = 'test-user';
|
||||
const password = 'password';
|
||||
await createPasswordAccount(page, username, password);
|
||||
await makeAuthMethodPrimary(page);
|
||||
await createUser(page);
|
||||
await addAccountToUser(page);
|
||||
|
||||
// Log out
|
||||
await page.getByText(process.env.E2E_PASSWORD_ADMIN_LOGIN_NAME).click();
|
||||
await page.getByRole('button', { name: 'Sign Out' }).click();
|
||||
await expect(page.getByRole('button', { name: 'Sign In' })).toBeVisible();
|
||||
|
||||
// Log in using new account
|
||||
await page.getByText('Choose a different scope').click();
|
||||
await page.getByRole('link', { name: orgName }).click();
|
||||
await page.getByRole('link', { name: authMethodName }).click();
|
||||
await page.getByLabel('Login Name').fill(username);
|
||||
await page.getByLabel('Password', { exact: true }).fill(password);
|
||||
await page.getByRole('button', { name: 'Sign In' }).click();
|
||||
await expect(
|
||||
page.getByRole('navigation', { name: 'General' }),
|
||||
).toBeVisible();
|
||||
await expect(page.getByText(username)).toBeEnabled();
|
||||
await expect(
|
||||
page
|
||||
.getByRole('navigation', { name: 'breadcrumbs' })
|
||||
.getByText('Projects'),
|
||||
).toBeVisible();
|
||||
|
||||
// Log out
|
||||
await page.getByText(username).click();
|
||||
await page.getByRole('button', { name: 'Sign Out' }).click();
|
||||
await expect(page.getByRole('button', { name: 'Sign In' })).toBeVisible();
|
||||
|
||||
// Log back in as admin
|
||||
await page
|
||||
.getByLabel('Login Name')
|
||||
.fill(process.env.E2E_PASSWORD_ADMIN_LOGIN_NAME);
|
||||
await page
|
||||
.getByLabel('Password', { exact: true })
|
||||
.fill(process.env.E2E_PASSWORD_ADMIN_PASSWORD);
|
||||
await page.getByRole('button', { name: 'Sign In' }).click();
|
||||
|
||||
// Set a new password on the account
|
||||
await page
|
||||
.getByRole('navigation', { name: 'General' })
|
||||
.getByRole('link', { name: 'Orgs' })
|
||||
.click();
|
||||
await page.getByRole('link', { name: orgName }).click();
|
||||
await page
|
||||
.getByRole('navigation', { name: 'IAM' })
|
||||
.getByRole('link', { name: 'Auth Methods' })
|
||||
.click();
|
||||
await page.getByRole('link', { name: authMethodName }).click();
|
||||
await page.getByRole('link', { name: 'Accounts', exact: true }).click();
|
||||
await page.getByRole('link', { name: username }).click();
|
||||
const newPassword = 'new-password';
|
||||
await setPasswordToAccount(page, newPassword);
|
||||
|
||||
// Log out
|
||||
await page.getByText(process.env.E2E_PASSWORD_ADMIN_LOGIN_NAME).click();
|
||||
await page.getByRole('button', { name: 'Sign Out' }).click();
|
||||
await expect(page.getByRole('button', { name: 'Sign In' })).toBeVisible();
|
||||
|
||||
// Log in using new password
|
||||
await page.getByText('Choose a different scope').click();
|
||||
await page.getByRole('link', { name: orgName }).click();
|
||||
await page.getByRole('link', { name: authMethodName }).click();
|
||||
await page.getByLabel('Login Name').fill(username);
|
||||
await page.getByLabel('Password', { exact: true }).fill(newPassword);
|
||||
await page.getByRole('button', { name: 'Sign In' }).click();
|
||||
await expect(
|
||||
page.getByRole('navigation', { name: 'General' }),
|
||||
).toBeVisible();
|
||||
await expect(page.getByText(username)).toBeEnabled();
|
||||
await expect(
|
||||
page
|
||||
.getByRole('navigation', { name: 'breadcrumbs' })
|
||||
.getByText('Projects'),
|
||||
).toBeVisible();
|
||||
} finally {
|
||||
await authenticateBoundaryCli(
|
||||
process.env.BOUNDARY_ADDR,
|
||||
process.env.E2E_PASSWORD_AUTH_METHOD_ID,
|
||||
@@ -42,14 +140,9 @@ test('Verify new auth-method can be created and assigned to users @ce @ent @aws
|
||||
process.env.E2E_PASSWORD_ADMIN_PASSWORD,
|
||||
);
|
||||
const orgs = JSON.parse(execSync('boundary scopes list -format json'));
|
||||
org = orgs.items.filter((obj) => obj.name == orgName)[0];
|
||||
await createPasswordAuthMethod(page);
|
||||
await createPasswordAccount(page, 'test-user', 'password');
|
||||
await setPasswordToAccount(page, 'password2');
|
||||
await makeAuthMethodPrimary(page);
|
||||
await createUser(page);
|
||||
await addAccountToUser(page);
|
||||
} finally {
|
||||
await deleteOrgCli(org.id);
|
||||
const org = orgs.items.filter((obj) => obj.name == orgName)[0];
|
||||
if (org) {
|
||||
await deleteOrgCli(org.id);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -171,6 +171,8 @@ test('Verify resources can be deleted (enterprise) @ent @aws', async ({
|
||||
await page.goto(`/scopes/${orgId}/edit`);
|
||||
await deleteResource(page);
|
||||
} finally {
|
||||
await deleteOrgCli(orgId);
|
||||
if (orgId) {
|
||||
await deleteOrgCli(orgId);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -193,6 +193,8 @@ test('Verify resources can be deleted @ce @aws', async ({ page }) => {
|
||||
await deleteResource(page);
|
||||
} finally {
|
||||
// Delete org in case the test failed before deleting the org using UI
|
||||
await deleteOrgCli(orgId);
|
||||
if (orgId) {
|
||||
await deleteOrgCli(orgId);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -31,9 +31,15 @@ test('Verify a new role can be created and associated with a group @ce @ent @aws
|
||||
page,
|
||||
}) => {
|
||||
await page.goto('/');
|
||||
let org;
|
||||
let orgName;
|
||||
try {
|
||||
const orgName = await createOrg(page);
|
||||
orgName = await createOrg(page);
|
||||
const groupName = await createGroup(page);
|
||||
await addMemberToGroup(page, 'admin');
|
||||
await createRole(page);
|
||||
await addPrincipalToRole(page, groupName);
|
||||
await addGrantsToGroup(page, 'ids=*;type=*;actions=read,list');
|
||||
} finally {
|
||||
await authenticateBoundaryCli(
|
||||
process.env.BOUNDARY_ADDR,
|
||||
process.env.E2E_PASSWORD_AUTH_METHOD_ID,
|
||||
@@ -41,13 +47,9 @@ test('Verify a new role can be created and associated with a group @ce @ent @aws
|
||||
process.env.E2E_PASSWORD_ADMIN_PASSWORD,
|
||||
);
|
||||
const orgs = JSON.parse(execSync('boundary scopes list -format json'));
|
||||
org = orgs.items.filter((obj) => obj.name == orgName)[0];
|
||||
const groupName = await createGroup(page);
|
||||
await addMemberToGroup(page, 'admin');
|
||||
await createRole(page);
|
||||
await addPrincipalToRole(page, groupName);
|
||||
await addGrantsToGroup(page, 'ids=*;type=*;actions=read,list');
|
||||
} finally {
|
||||
await deleteOrgCli(org.id);
|
||||
const org = orgs.items.filter((obj) => obj.name == orgName)[0];
|
||||
if (org) {
|
||||
await deleteOrgCli(org.id);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -82,7 +82,9 @@ test('Verify session created to target with host, then cancel the session @ce @a
|
||||
.getByRole('button', { name: 'Cancel' })
|
||||
.click();
|
||||
} finally {
|
||||
await deleteOrgCli(org.id);
|
||||
if (org) {
|
||||
await deleteOrgCli(org.id);
|
||||
}
|
||||
// End `boundary connect` process
|
||||
if (connect) {
|
||||
connect.kill('SIGTERM');
|
||||
@@ -134,7 +136,9 @@ test('Verify session created to target with address, then cancel the session @ce
|
||||
.getByRole('button', { name: 'Cancel' })
|
||||
.click();
|
||||
} finally {
|
||||
await deleteOrgCli(org.id);
|
||||
if (org) {
|
||||
await deleteOrgCli(org.id);
|
||||
}
|
||||
// End `boundary connect` process
|
||||
if (connect) {
|
||||
connect.kill('SIGTERM');
|
||||
@@ -181,6 +185,8 @@ test('Verify TCP target is updated @ce @aws @docker', async ({ page }) => {
|
||||
);
|
||||
const orgs = JSON.parse(execSync('boundary scopes list -format json'));
|
||||
const org = orgs.items.filter((obj) => obj.name === orgName)[0];
|
||||
await deleteOrgCli(org.id);
|
||||
if (org) {
|
||||
await deleteOrgCli(org.id);
|
||||
}
|
||||
}
|
||||
});
|
||||
Reference in new issue
Block a user