From a1cd6314257abd0ea80852fc84e4952e16fe0451 Mon Sep 17 00:00:00 2001 From: OverDrive Date: Fri, 19 Feb 2021 20:19:13 +0100 Subject: [PATCH] Fix for authenticating with instagram (#7173) * Fix for authenticating with instagram * Change tests for instagram authentication * Instagram authentication for the case when data child object is presented in the response --- spec/AuthenticationAdapters.spec.js | 12 ++++++++++-- src/Adapters/Auth/instagram.js | 3 ++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/spec/AuthenticationAdapters.spec.js b/spec/AuthenticationAdapters.spec.js index 87679d02a4..ddeafa3668 100644 --- a/spec/AuthenticationAdapters.spec.js +++ b/spec/AuthenticationAdapters.spec.js @@ -5,7 +5,7 @@ const authenticationLoader = require('../lib/Adapters/Auth'); const path = require('path'); const responses = { gpgames: { playerId: 'userId' }, - instagram: { data: { id: 'userId' } }, + instagram: { id: 'userId' }, janrainengage: { stat: 'ok', profile: { identifier: 'userId' } }, janraincapture: { stat: 'ok', result: 'userId' }, line: { userId: 'userId' }, @@ -492,7 +492,15 @@ describe('instagram auth adapter', () => { 'https://graph.instagram.com/me?fields=id&access_token=the_token' ); }); - + it('response object without data child', async () => { + spyOn(httpsRequest, 'get').and.callFake(() => { + return Promise.resolve({ id: 'userId' }); + }); + await instagram.validateAuthData({ id: 'userId', access_token: 'the_token' }, {}); + expect(httpsRequest.get).toHaveBeenCalledWith( + 'https://graph.instagram.com/me?fields=id&access_token=the_token' + ); + }); it('should pass in api url', async () => { spyOn(httpsRequest, 'get').and.callFake(() => { return Promise.resolve({ data: { id: 'userId' } }); diff --git a/src/Adapters/Auth/instagram.js b/src/Adapters/Auth/instagram.js index 6d61413bf0..0b493a6945 100644 --- a/src/Adapters/Auth/instagram.js +++ b/src/Adapters/Auth/instagram.js @@ -8,7 +8,8 @@ function validateAuthData(authData) { const apiURL = authData.apiURL || defaultURL; const path = `${apiURL}me?fields=id&access_token=${authData.access_token}`; return httpsRequest.get(path).then(response => { - if (response && response.data && response.data.id == authData.id) { + const user = response.data ? response.data : response + if (user && user.id == authData.id) { return; } throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Instagram auth is invalid for this user.');