diff --git a/spec/ParseUser.spec.js b/spec/ParseUser.spec.js index 2b048c36db..8c67d92151 100644 --- a/spec/ParseUser.spec.js +++ b/spec/ParseUser.spec.js @@ -1549,6 +1549,21 @@ describe('Parse.User testing', () => { } }); + it('link with provider should return sessionToken', async () => { + const provider = getMockFacebookProvider(); + Parse.User._registerAuthenticationProvider(provider); + const user = new Parse.User(); + user.set('username', 'testLinkWithProvider'); + user.set('password', 'mypass'); + await user.signUp(); + const query = new Parse.Query(Parse.User); + const u2 = await query.get(user.id); + const model = await u2._linkWith('facebook', {}, { useMasterKey: true }); + expect(u2.getSessionToken()).toBeDefined(); + expect(model.getSessionToken()).toBeDefined(); + expect(u2.getSessionToken()).toBe(model.getSessionToken()); + }); + it('link with provider failed', async done => { const provider = getMockFacebookProvider(); provider.shouldError = true; diff --git a/src/RestWrite.js b/src/RestWrite.js index 69e9c3d4c7..f684ca113c 100644 --- a/src/RestWrite.js +++ b/src/RestWrite.js @@ -802,7 +802,8 @@ RestWrite.prototype.createSessionTokenIfNeeded = function() { if (this.className !== '_User') { return; } - if (this.query) { + // Don't generate session for updating user (this.query is set) unless authData exists + if (this.query && !this.data.authData) { return; } if (