Skip to content

Commit 88ccc21

Browse files
committed
CCM-7465: add authed user context to automated tests
1 parent bb0f685 commit 88ccc21

25 files changed

+822
-99
lines changed

frontend/src/components/molecules/ManageTemplates/ManageTemplates.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ import {
1212
TemplateStatus,
1313
templateStatustoDisplayMappings,
1414
templateTypeDisplayMappings,
15-
} from 'nhs-notify-web-template-management-utils/src/enum';
15+
viewSubmittedTemplatePages,
16+
} from 'nhs-notify-web-template-management-utils';
1617
import { TemplateDTO } from 'nhs-notify-backend-client';
17-
import { viewSubmittedTemplatePages } from 'nhs-notify-web-template-management-utils';
1818

1919
const manageTemplatesContent = content.pages.manageTemplates;
2020

frontend/src/utils/amplify-utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { generateServerClientUsingCookies } from '@aws-amplify/adapter-nextjs/da
77
import { Schema } from 'nhs-notify-web-template-management-amplify';
88
import { createServerRunner } from '@aws-amplify/adapter-nextjs';
99
import { fetchAuthSession } from 'aws-amplify/auth/server';
10-
import { logger } from 'nhs-notify-web-template-management-utils';
10+
import { logger } from 'nhs-notify-web-template-management-utils/logger';
1111

1212
const config = require('@/amplify_outputs.json');
1313

infrastructure/terraform/modules/backend-api/spec.tmpl.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -383,8 +383,7 @@
383383
"enum": [
384384
"NHS_APP",
385385
"SMS",
386-
"EMAIL",
387-
"LETTER"
386+
"EMAIL"
388387
]
389388
},
390389
"TemplateStatus": {

lambdas/backend-client/src/types/generated/models/TemplateType.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,4 @@ export enum TemplateType {
66
NHS_APP = 'NHS_APP',
77
SMS = 'SMS',
88
EMAIL = 'EMAIL',
9-
LETTER = 'LETTER',
109
}

package-lock.json

Lines changed: 505 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/test-team/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
auth/*
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/*
2+
* Playwright setting up Auth -> https://playwright.dev/docs/auth
3+
*/
4+
5+
import { test as setup } from '@playwright/test';
6+
import { TemplateMgmtSignInPage } from '../pages/templates-mgmt-login-page';
7+
8+
setup('authenticate setup', async ({ page }) => {
9+
const loginPage = new TemplateMgmtSignInPage(page);
10+
11+
await loginPage.loadPage();
12+
13+
await loginPage.cognitoSignIn(process.env.USER_EMAIL);
14+
15+
await page.waitForEvent('load');
16+
17+
await page.context().storageState({ path: 'auth/user.json' });
18+
});
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/*
2+
* Playwright setting up Auth -> https://playwright.dev/docs/auth
3+
*/
4+
5+
import { test as teardown } from '@playwright/test';
6+
import { CognitoUserHelper } from '../helpers/cognito-user-helper';
7+
8+
teardown('authenticate teardown', async () => {
9+
const userHelper = new CognitoUserHelper();
10+
11+
const user = await userHelper.getUser(process.env.USER_EMAIL);
12+
13+
if (user) {
14+
// TODO: undo this
15+
// await userHelper.deleteUser(user.email);
16+
}
17+
18+
// TODO: delete this.
19+
console.log({
20+
USER_EMAIL: process.env.USER_EMAIL,
21+
USER_ID: process.env.USER_ID,
22+
USER_TEMPORARY_PASSWORD: process.env.USER_TEMPORARY_PASSWORD,
23+
USER_PASSWORD: process.env.USER_PASSWORD,
24+
});
25+
});

tests/test-team/config/global.setup.ts

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,36 @@
1+
import { randomUUID as uuidv4 } from 'node:crypto';
12
import { FullConfig } from '@playwright/test';
2-
import { DatabaseTableNameHelper } from '../helpers/database-tablename-helper';
3+
import generate from 'generate-password';
4+
import { OutputsHelper } from '../helpers/outputs-helper';
5+
import { CognitoUserHelper } from '../helpers/cognito-user-helper';
36

47
async function globalSetup(config: FullConfig) {
5-
const tableNameHelper = new DatabaseTableNameHelper();
8+
const outputsHelper = new OutputsHelper();
69

710
process.env.TEMPLATE_STORAGE_TABLE_NAME =
8-
await tableNameHelper.getTemplateStorageTableName();
11+
outputsHelper.getTemplateStorageTableName();
12+
13+
process.env.COGNITO_USER_POOL_ID = outputsHelper.getCognitoUserPoolId();
14+
15+
const cognitoUserHelper = new CognitoUserHelper();
16+
17+
const [temporary, password] = generate.generateMultiple(2, {
18+
length: 12,
19+
numbers: true,
20+
uppercase: true,
21+
symbols: true,
22+
strict: true,
23+
});
24+
25+
const user = await cognitoUserHelper.createUser(
26+
`${uuidv4().slice(0, 5)}[email protected]`,
27+
temporary
28+
);
29+
30+
process.env.USER_TEMPORARY_PASSWORD = temporary;
31+
process.env.USER_PASSWORD = password;
32+
process.env.USER_EMAIL = user.email;
33+
process.env.USER_ID = user.userId;
934

1035
return config;
1136
}

tests/test-team/config/local.config.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@ export default defineConfig({
77
timeout: 10_000,
88

99
projects: [
10+
{
11+
name: 'auth-setup',
12+
testMatch: 'auth.setup.ts',
13+
use: {
14+
baseURL: 'http://localhost:3000',
15+
...devices['Desktop Chrome'],
16+
},
17+
},
1018
{
1119
name: 'component',
1220
testMatch: '*.component.ts',
@@ -15,16 +23,25 @@ export default defineConfig({
1523
baseURL: 'http://localhost:3000',
1624
...devices['Desktop Chrome'],
1725
headless: true,
26+
storageState: './auth/user.json',
1827
},
28+
dependencies: ['auth-setup'],
29+
teardown: 'auth-teardown',
1930
},
2031
{
2132
name: 'e2e-local',
2233
testMatch: '*.e2e.spec.ts',
2334
use: {
2435
baseURL: 'http://localhost:3000',
2536
...devices['Desktop Chrome'],
37+
// Use prepared auth state.
38+
storageState: 'auth/user.json',
2639
},
2740
},
41+
{
42+
name: 'auth-teardown',
43+
testMatch: 'auth.teardown.ts',
44+
},
2845
],
2946
/* Run your local dev server before starting the tests */
3047
webServer: {

0 commit comments

Comments
 (0)