diff --git a/spec/ParseUser.spec.js b/spec/ParseUser.spec.js index a447b443..0e2b903d 100644 --- a/spec/ParseUser.spec.js +++ b/spec/ParseUser.spec.js @@ -2050,5 +2050,27 @@ describe('Parse.User testing', () => { Parse.Cloud._removeHook('Triggers', 'afterSave', '_User'); done(); }); - }) + }); + + it('changes to a user should update the cache', (done) => { + Parse.Cloud.define('testUpdatedUser', (req, res) => { + expect(req.user.get('han')).toEqual('solo'); + res.success({}); + }); + let user = new Parse.User(); + user.setUsername('harrison'); + user.setPassword('ford'); + user.signUp().then(() => { + user.set('han', 'solo'); + return user.save(); + }).then(() => { + return Parse.Cloud.run('testUpdatedUser'); + }).then(() => { + done(); + }, (e) => { + fail('Should not have failed.'); + done(); + }); + + }); }); diff --git a/src/RestWrite.js b/src/RestWrite.js index cfc79b92..92eb193f 100644 --- a/src/RestWrite.js +++ b/src/RestWrite.js @@ -341,6 +341,11 @@ RestWrite.prototype.transformUser = function() { }); } + // If we're updating a _User object, clear the user cache for the session + if (this.query && this.auth.user && this.auth.user.getSessionToken()) { + cache.users.remove(this.auth.user.getSessionToken()); + } + return promise.then(() => { // Transform the password if (!this.data.password) {