Skip to content

Commit e7d7fe3

Browse files
author
bgasztka
committed
Merge branch 'dev' of github.com:DefGuard/defguard into dev
2 parents 100b8b1 + 892c325 commit e7d7fe3

File tree

3 files changed

+85
-0
lines changed

3 files changed

+85
-0
lines changed

e2e/tests/passwordReset.spec.ts

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import { test } from '@playwright/test';
2+
3+
import { testsConfig, testUserTemplate } from '../config';
4+
import { loginBasic } from '../utils/controllers/login';
5+
import { dockerDown, dockerRestart } from '../utils/docker';
6+
import { waitForBase } from '../utils/waitForBase';
7+
import { waitForPromise } from '../utils/waitForPromise';
8+
import { selectPasswordReset, setEmail, setPassword } from '../utils/controllers/passwordReset';
9+
import { getPasswordResetToken } from '../utils/db/getPasswordResetToken';
10+
import { createUser } from '../utils/controllers/createUser';
11+
import { logout } from '../utils/controllers/logout';
12+
import { User } from '../types';
13+
14+
const newPassword = '!7(8o3aN8RoF';
15+
16+
test.describe('Reset password', () => {
17+
const user: User = { ...testUserTemplate, username: 'test' };
18+
19+
test.beforeEach(async ({ browser, page }) => {
20+
dockerRestart();
21+
await createUser(browser, user);
22+
});
23+
24+
test.afterAll(() => {
25+
dockerDown();
26+
});
27+
28+
test('Reset user password', async ({ page }) => {
29+
await waitForBase(page);
30+
await page.goto(testsConfig.ENROLLMENT_URL);
31+
await waitForPromise(2000);
32+
await selectPasswordReset(page);
33+
await setEmail(user.mail, page);
34+
35+
await page.getByTestId('email-sent-message').waitFor({ state: 'visible' });
36+
37+
const token = await getPasswordResetToken(user.mail);
38+
39+
await page.goto(`${testsConfig.ENROLLMENT_URL}/password-reset/?token=${token}`);
40+
await waitForPromise(2000);
41+
42+
await setPassword(newPassword, page);
43+
await page.getByTestId('password-reset-success').waitFor({ state: 'visible' });
44+
45+
await waitForBase(page);
46+
await loginBasic(page, { ...user, password: newPassword });
47+
await logout(page);
48+
});
49+
});
+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { Page } from "playwright";
2+
3+
4+
export const selectPasswordReset = async (page: Page) => {
5+
const selectButton = page.getByTestId('select-password-reset');
6+
selectButton.click();
7+
};
8+
9+
export const setEmail = async (token: string, page: Page) => {
10+
await page.getByTestId('field-email').type(token);
11+
await page.getByTestId('password-reset-email-submit-button').click();
12+
};
13+
14+
export const setPassword = async (password: string, page: Page) => {
15+
await page.getByTestId('field-password').type(password);
16+
await page.getByTestId('field-repeat').type(password);
17+
await page.getByTestId('password-reset-submit').click();
18+
};

e2e/utils/db/getPasswordResetToken.ts

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { expect } from '@playwright/test';
2+
3+
import { makeConnection } from './makeConnection';
4+
5+
export const getPasswordResetToken = async (email: string): Promise<string> => {
6+
const client = await makeConnection();
7+
const sql = `select id from "token" where email='${email}';`;
8+
try {
9+
const result = await client.query(sql);
10+
expect(result.rows.length).toBeGreaterThan(0);
11+
const token = result.rows[0]['id'];
12+
expect(token).toBeDefined();
13+
expect(token?.length).toBeGreaterThan(0);
14+
return token;
15+
} finally {
16+
await client.end();
17+
}
18+
};

0 commit comments

Comments
 (0)