don't serve null authData values (#2320)

This commit is contained in:
Dan Huang
2016-07-18 23:00:16 -07:00
committed by Drew
parent 025482ea1a
commit c81f48aae6
2 changed files with 32 additions and 0 deletions

View File

@@ -2257,6 +2257,27 @@ describe('Parse.User testing', () => {
}) })
}); });
it_exclude_dbs(['postgres'])('should not serve null authData keys', (done) => {
let database = new Config(Parse.applicationId).database;
database.create('_User', {
username: 'user',
_hashed_password: '$2a$10$8/wZJyEuiEaobBBqzTG.jeY.XSFJd0rzaN//ososvEI4yLqI.4aie',
_auth_data_facebook: null
}, {}).then(() => {
return new Parse.Query(Parse.User)
.equalTo('username', 'user')
.first({useMasterKey: true});
}).then((user) => {
let authData = user.get('authData');
expect(user.get('username')).toEqual('user');
expect(authData).toBeUndefined();
done();
}).catch((err) => {
fail('this should not fail');
done();
})
});
it_exclude_dbs(['postgres'])('should cleanup null authData keys ParseUser update (regression test for #1198, #2252)', (done) => { it_exclude_dbs(['postgres'])('should cleanup null authData keys ParseUser update (regression test for #1198, #2252)', (done) => {
Parse.Cloud.beforeSave('_User', (req, res) => { Parse.Cloud.beforeSave('_User', (req, res) => {
req.object.set('foo', 'bar'); req.object.set('foo', 'bar');

View File

@@ -394,6 +394,17 @@ RestQuery.prototype.runFind = function() {
if (this.className === '_User') { if (this.className === '_User') {
for (var result of results) { for (var result of results) {
delete result.password; delete result.password;
if (result.authData) {
Object.keys(result.authData).forEach((provider) => {
if (result.authData[provider] === null) {
delete result.authData[provider];
}
});
if (Object.keys(result.authData).length == 0) {
delete result.authData;
}
}
} }
} }