diff --git a/integration/test/ParseUserTest.js b/integration/test/ParseUserTest.js index acd57a72b..34240f88e 100644 --- a/integration/test/ParseUserTest.js +++ b/integration/test/ParseUserTest.js @@ -630,6 +630,22 @@ describe('Parse User', () => { expect(user.get('foo')).toBe('bar'); }); + it('can get current with subclass', async () => { + Parse.User.enableUnsafeCurrentUser(); + + const customUser = new CustomUser({ foo: 'bar' }); + customUser.setUsername('username'); + customUser.setPassword('password'); + + await customUser.signUp(); + Parse.User._clearCache(); + + const user = CustomUser.current(); + expect(user instanceof CustomUser).toBe(true); + expect(user.doSomething()).toBe(5); + expect(user.get('foo')).toBe('bar'); + }); + it('can logIn user with subclass', async () => { Parse.User.enableUnsafeCurrentUser(); diff --git a/src/ParseUser.js b/src/ParseUser.js index 3a4e318a1..64428ab15 100644 --- a/src/ParseUser.js +++ b/src/ParseUser.js @@ -869,7 +869,7 @@ const DefaultController = { updateUserOnDisk(user) { const path = Storage.generatePath(CURRENT_USER_KEY); const json = user.toJSON(); - json.className = '_User'; + json.className = user.constructor.name === 'ParseUser' ? '_User' : user.constructor.name; return Storage.setItemAsync( path, JSON.stringify(json) ).then(() => {