Skip to content

Commit 2fe77ef

Browse files
authored
Merge pull request #19431 from mozilla/password-change-jwt
feat(jwt): Add unified password change endpoint using JWT
2 parents f8be6b1 + 92f7126 commit 2fe77ef

23 files changed

Lines changed: 1114 additions & 71 deletions

File tree

packages/functional-tests/tests/key-stretching-v2/changePassword.spec.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ test.describe('severity-2 #smoke', () => {
8080
await settings.goto(changeVersion.query);
8181
await settings.clickChangePassword();
8282

83+
await settings.confirmMfaGuard(email);
84+
8385
await expect(changePassword.changePasswordHeading).toBeVisible();
8486

8587
await changePassword.currentPasswordTextbox.fill(password);
@@ -134,6 +136,8 @@ test.describe('severity-2 #smoke', () => {
134136
await settings.goto(changeVersion.query);
135137
await settings.clickChangePassword();
136138

139+
await settings.confirmMfaGuard(email);
140+
137141
await expect(changePassword.changePasswordHeading).toBeVisible();
138142

139143
await changePassword.currentPasswordTextbox.fill(password);

packages/functional-tests/tests/resetPassword/resetPasswordRecoveryKey.spec.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,9 @@ test.describe('severity-1 #smoke', () => {
185185

186186
// Change password
187187
await settings.password.changeButton.click();
188+
189+
await settings.confirmMfaGuard(credentials.email);
190+
188191
await changePassword.fillOutChangePassword(
189192
credentials.password,
190193
newPassword

packages/functional-tests/tests/settings/changeEmail.spec.ts

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,13 @@ test.describe('severity-1 #smoke', () => {
6969
settings,
7070
changePassword,
7171
initialPassword,
72-
newPassword
72+
newPassword,
73+
target,
74+
credentials.email
7375
);
7476

77+
credentials.password = newPassword;
78+
7579
await settings.signOut();
7680

7781
// Sign in with old password
@@ -113,9 +117,13 @@ test.describe('severity-1 #smoke', () => {
113117
settings,
114118
changePassword,
115119
initialPassword,
116-
newPassword
120+
newPassword,
121+
target,
122+
credentials.email
117123
);
118124

125+
credentials.password = newPassword;
126+
119127
await settings.signOut();
120128

121129
// Sign in with new password
@@ -124,7 +132,7 @@ test.describe('severity-1 #smoke', () => {
124132

125133
// Change back the primary email again
126134
await settings.secondaryEmail.makePrimaryButton.click();
127-
await settings.confirmMfaGuard(secondEmail);
135+
await settings.confirmMfaGuard(credentials.email);
128136
await settings.signOut();
129137

130138
// Login with primary email and new password
@@ -133,6 +141,7 @@ test.describe('severity-1 #smoke', () => {
133141

134142
await expect(settings.settingsHeading).toBeVisible();
135143

144+
console.log('credentials.password', credentials.password);
136145
// Update which password to use the account cleanup
137146
credentials.password = newPassword;
138147
});
@@ -263,9 +272,14 @@ async function setNewPassword(
263272
settings: SettingsPage,
264273
changePassword: ChangePasswordPage,
265274
oldPassword: string,
266-
newPassword: string
275+
newPassword: string,
276+
target: BaseTarget,
277+
email: string,
267278
): Promise<void> {
268279
await settings.password.changeButton.click();
280+
281+
await settings.confirmMfaGuard(email);
282+
269283
await changePassword.fillOutChangePassword(oldPassword, newPassword);
270284

271285
await expect(settings.settingsHeading).toBeVisible();

packages/functional-tests/tests/settings/changePassword.spec.ts

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ test.describe('severity-1 #smoke', () => {
2020

2121
// Enter incorrect old password and verify the tooltip error
2222
await settings.password.changeButton.click();
23+
24+
await settings.confirmMfaGuard(credentials.email);
25+
2326
await changePassword.fillOutChangePassword(
2427
'Incorrect Password',
2528
newPassword
@@ -40,6 +43,9 @@ test.describe('severity-1 #smoke', () => {
4043

4144
// Enter the correct old password and verify that change password is successful
4245
await settings.password.changeButton.click();
46+
47+
await settings.confirmMfaGuard(credentials.email);
48+
4349
await changePassword.fillOutChangePassword(initialPassword, newPassword);
4450

4551
await expect(settings.settingsHeading).toBeVisible();
@@ -56,32 +62,6 @@ test.describe('severity-1 #smoke', () => {
5662
credentials.password = newPassword;
5763
});
5864

59-
test('change password with short password tooltip shows, cancel and try to change password again, tooltip is not shown', async ({
60-
target,
61-
pages: { page, changePassword, settings, signin },
62-
testAccountTracker,
63-
}) => {
64-
const credentials = await testAccountTracker.signUp();
65-
await signInAccount(target, page, settings, signin, credentials);
66-
67-
await settings.goto();
68-
await settings.password.changeButton.click();
69-
70-
await expect(changePassword.changePasswordHeading).toBeVisible();
71-
72-
await changePassword.newPasswordTextbox.fill('short');
73-
74-
await expect(changePassword.passwordLengthInvalidIcon).toBeVisible();
75-
76-
await changePassword.cancelButton.click();
77-
78-
await expect(settings.settingsHeading).toBeVisible();
79-
80-
await settings.password.changeButton.click();
81-
82-
await expect(changePassword.passwordLengthUnsetIcon).toBeVisible();
83-
});
84-
8565
test('reset password via settings works', async ({
8666
target,
8767
pages: { page, changePassword, resetPassword, settings, signin },
@@ -94,6 +74,8 @@ test.describe('severity-1 #smoke', () => {
9474

9575
await settings.password.changeButton.click();
9676

77+
await settings.confirmMfaGuard(credentials.email);
78+
9779
await expect(changePassword.changePasswordHeading).toBeVisible();
9880

9981
await changePassword.forgotPasswordLink.click();

packages/functional-tests/tests/settings/changePasswordValidation.spec.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ test.describe('severity-1 #smoke', () => {
4141
await settings.goto();
4242
await settings.password.changeButton.click();
4343

44+
await settings.confirmMfaGuard(credentials.email);
45+
4446
await expect(changePassword.changePasswordHeading).toBeVisible();
4547

4648
await changePassword.newPasswordTextbox.fill(password);
@@ -67,6 +69,8 @@ test.describe('severity-1 #smoke', () => {
6769
await settings.goto();
6870
await settings.password.changeButton.click();
6971

72+
await settings.confirmMfaGuard(credentials.email);
73+
7074
await expect(changePassword.changePasswordHeading).toBeVisible();
7175

7276
await changePassword.newPasswordTextbox.fill(credentials.email);

packages/functional-tests/tests/signin/redirect.spec.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,18 +63,22 @@ test.describe('severity-2 #smoke', () => {
6363

6464
test('allows valid redirect_to parameter', async ({
6565
target,
66-
pages: { page, changePassword, signin },
66+
pages: { page, changePassword, signin, settings },
6767
testAccountTracker,
6868
}) => {
6969
const credentials = await testAccountTracker.signUp();
7070

7171
// set a redirect url that is not the usual navigation target after signin
7272
const redirectTo = `${target.contentServerUrl}/settings/change_password`;
7373
await page.goto(`${target.contentServerUrl}/?redirect_to=${redirectTo}`);
74+
7475
await signin.fillOutEmailFirstForm(credentials.email);
7576
await signin.fillOutPasswordForm(credentials.password);
7677

7778
await expect(page).toHaveURL(redirectTo);
79+
80+
await settings.confirmMfaGuard(credentials.email);
81+
7882
await expect(changePassword.changePasswordHeading).toBeVisible();
7983
});
8084
});

packages/functional-tests/tests/syncV3/settings.spec.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ test.describe('severity-2 #smoke', () => {
5858

5959
//Change password
6060
await settings.password.changeButton.click();
61+
62+
await settings.confirmMfaGuard(credentials.email);
63+
6164
await changePassword.fillOutChangePassword(
6265
credentials.password,
6366
newPassword
@@ -76,7 +79,7 @@ test.describe('severity-2 #smoke', () => {
7679
settings,
7780
signin,
7881
signinTokenCode,
79-
page,
82+
page
8083
},
8184
testAccountTracker,
8285
storageState,
@@ -117,6 +120,9 @@ test.describe('severity-2 #smoke', () => {
117120

118121
//Change password
119122
await settings.password.changeButton.click();
123+
124+
await settings.confirmMfaGuard(credentials.email);
125+
120126
await changePassword.fillOutChangePassword(
121127
credentials.password,
122128
newPassword

0 commit comments

Comments
 (0)