Skip to content

Commit b587767

Browse files
authored
test: Plaintext password accessible in beforeSave trigger on _User class (#10380)
1 parent df5cd46 commit b587767

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

spec/CloudCode.spec.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2407,6 +2407,49 @@ describe('beforeSave hooks', () => {
24072407
expect(res.length).toEqual(1);
24082408
expect(res[0].get('foo')).toEqual('bar');
24092409
});
2410+
2411+
it('should have access to plaintext password on signup for password policy enforcement', async () => {
2412+
let receivedPassword;
2413+
Parse.Cloud.beforeSave(Parse.User, req => {
2414+
receivedPassword = req.object.get('password');
2415+
});
2416+
2417+
const user = new Parse.User();
2418+
user.setUsername('testuser');
2419+
user.setPassword('securePassword123');
2420+
await user.signUp();
2421+
2422+
expect(receivedPassword).toBe('securePassword123');
2423+
});
2424+
2425+
it('should have access to plaintext password on password change for password policy enforcement', async () => {
2426+
const user = new Parse.User();
2427+
user.setUsername('testuser');
2428+
user.setPassword('originalPassword');
2429+
await user.signUp();
2430+
2431+
let receivedPassword;
2432+
Parse.Cloud.beforeSave(Parse.User, req => {
2433+
receivedPassword = req.object.get('password');
2434+
});
2435+
2436+
user.setPassword('newPassword456');
2437+
await user.save(null, { sessionToken: user.getSessionToken() });
2438+
2439+
expect(receivedPassword).toBe('newPassword456');
2440+
});
2441+
2442+
it('should not expose plaintext password in API response', async () => {
2443+
Parse.Cloud.beforeSave(Parse.User, () => {});
2444+
2445+
const user = new Parse.User();
2446+
user.setUsername('testuser');
2447+
user.setPassword('securePassword123');
2448+
const result = await user.signUp();
2449+
2450+
expect(result.get('password')).toBeUndefined();
2451+
expect(result.get('_hashed_password')).toBeUndefined();
2452+
});
24102453
});
24112454

24122455
describe('afterSave hooks', () => {

0 commit comments

Comments
 (0)