diff --git a/src/ParseUser.js b/src/ParseUser.js index ac24ab520..9e2f43d9a 100644 --- a/src/ParseUser.js +++ b/src/ParseUser.js @@ -425,6 +425,12 @@ class ParseUser extends ParseObject { if (options.hasOwnProperty('installationId')) { signupOptions.installationId = options.installationId; } + if ( + options.hasOwnProperty('context') && + Object.prototype.toString.call(options.context) === '[object Object]' + ) { + signupOptions.context = options.context; + } const controller = CoreManager.getUserController(); return controller.signUp(this, attrs, signupOptions); diff --git a/src/__tests__/ParseUser-test.js b/src/__tests__/ParseUser-test.js index 8691513a3..ba0fbda75 100644 --- a/src/__tests__/ParseUser-test.js +++ b/src/__tests__/ParseUser-test.js @@ -1681,6 +1681,30 @@ describe('ParseUser', () => { expect(user.existed()).toBe(true); }); + it('can signup with context', async () => { + CoreManager.setRESTController({ + ajax() {}, + request() { + return Promise.resolve( + { + objectId: 'uid3', + username: 'username', + sessionToken: '123abc', + }, + 200 + ); + }, + }); + const controller = CoreManager.getRESTController(); + jest.spyOn(controller, 'request'); + const context = { a: 'a' }; + const user = new ParseUser(); + user.setUsername('name'); + user.setPassword('pass'); + await user.signUp(null, { context }); + expect(controller.request.mock.calls[0][3].context).toEqual(context); + }); + it('can verify user password', async () => { ParseUser.enableUnsafeCurrentUser(); ParseUser._clearCache();