From 5495ab6dc04d5918313e908c6cbd47c96842640d Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Tue, 9 Jul 2019 21:27:58 -0500 Subject: [PATCH 1/3] Generate sessionToken with linkWith --- spec/ParseUser.spec.js | 13 +++++++++++++ src/RestWrite.js | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/spec/ParseUser.spec.js b/spec/ParseUser.spec.js index f21403e89a..219c97b6e7 100644 --- a/spec/ParseUser.spec.js +++ b/spec/ParseUser.spec.js @@ -1549,6 +1549,19 @@ 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(model.getSessionToken()).toBeDefined(); + }); + it('link with provider failed', async done => { const provider = getMockFacebookProvider(); provider.shouldError = true; diff --git a/src/RestWrite.js b/src/RestWrite.js index 2622b62d40..fe16113524 100644 --- a/src/RestWrite.js +++ b/src/RestWrite.js @@ -801,7 +801,7 @@ RestWrite.prototype.createSessionTokenIfNeeded = function() { if (this.className !== '_User') { return; } - if (this.query) { + if (this.query && !this.data.authData) { return; } if ( From 1b70c57f73c1377d0b57cb3bfe8693453f644180 Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Wed, 10 Jul 2019 14:23:28 -0500 Subject: [PATCH 2/3] improve test --- spec/ParseUser.spec.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spec/ParseUser.spec.js b/spec/ParseUser.spec.js index 56d3a7ba93..8c67d92151 100644 --- a/spec/ParseUser.spec.js +++ b/spec/ParseUser.spec.js @@ -1559,7 +1559,9 @@ describe('Parse.User testing', () => { 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 => { From b288115010b6aac360dc2d4d415ac318c306c2df Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Wed, 10 Jul 2019 15:09:26 -0500 Subject: [PATCH 3/3] Add comment --- src/RestWrite.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/RestWrite.js b/src/RestWrite.js index 2e7dd35d8f..f684ca113c 100644 --- a/src/RestWrite.js +++ b/src/RestWrite.js @@ -802,6 +802,7 @@ RestWrite.prototype.createSessionTokenIfNeeded = function() { if (this.className !== '_User') { return; } + // Don't generate session for updating user (this.query is set) unless authData exists if (this.query && !this.data.authData) { return; }