diff --git a/src/ParseUser.js b/src/ParseUser.js index 146221614..8ba9ba8c0 100644 --- a/src/ParseUser.js +++ b/src/ParseUser.js @@ -469,7 +469,12 @@ class ParseUser extends ParseObject { if (options.hasOwnProperty('usePost')) { loginOptions.usePost = options.usePost; } - + if ( + options.hasOwnProperty('context') && + Object.prototype.toString.call(options.context) === '[object Object]' + ) { + loginOptions.context = options.context; + } const controller = CoreManager.getUserController(); return controller.logIn(this, loginOptions); } diff --git a/src/__tests__/ParseUser-test.js b/src/__tests__/ParseUser-test.js index 889418ec0..631842b8e 100644 --- a/src/__tests__/ParseUser-test.js +++ b/src/__tests__/ParseUser-test.js @@ -1942,6 +1942,27 @@ describe('ParseUser', () => { expect(controller.request.mock.calls[0][3].context).toEqual(context); }); + it('can login with context', async () => { + CoreManager.setRESTController({ + ajax() {}, + request() { + return Promise.resolve( + { + objectId: 'uid33', + username: 'username', + sessionToken: '123abc', + }, + 200 + ); + }, + }); + const controller = CoreManager.getRESTController(); + jest.spyOn(controller, 'request'); + const context = { a: 'a' }; + await ParseUser.logIn('username', 'password', { context }); + expect(controller.request.mock.calls[0][3].context).toEqual(context); + }); + it('can verify user password', async () => { ParseUser.enableUnsafeCurrentUser(); ParseUser._clearCache();