diff --git a/spec/ParseLiveQuery.spec.js b/spec/ParseLiveQuery.spec.js index dcbde3fb55..be2da8c866 100644 --- a/spec/ParseLiveQuery.spec.js +++ b/spec/ParseLiveQuery.spec.js @@ -6,6 +6,33 @@ const validatorFail = () => { }; describe('ParseLiveQuery', function () { + it('access user on onLiveQueryEvent disconnect', async done => { + await reconfigureServer({ + liveQuery: { + classNames: ['TestObject'], + }, + startLiveQueryServer: true, + verbose: false, + silent: true, + }); + const requestedUser = new Parse.User(); + requestedUser.setUsername('username'); + requestedUser.setPassword('password'); + Parse.Cloud.onLiveQueryEvent(req => { + const { event, sessionToken } = req; + if (event === 'ws_disconnect') { + expect(sessionToken).toBeDefined(); + expect(sessionToken).toBe(requestedUser.getSessionToken()); + done(); + } + }); + await requestedUser.signUp(); + const query = new Parse.Query(TestObject); + await query.subscribe(); + const client = await Parse.CoreManager.getLiveQueryController().getDefaultLiveQueryClient(); + client.close(); + }); + it('can subscribe to query', async done => { await reconfigureServer({ liveQuery: { @@ -28,6 +55,7 @@ describe('ParseLiveQuery', function () { object.set({ foo: 'bar' }); await object.save(); }); + it('expect afterEvent create', async done => { await reconfigureServer({ liveQuery: { @@ -542,7 +570,6 @@ describe('ParseLiveQuery', function () { expect(req.useMasterKey).toBe(false); expect(req.installationId).toBeDefined(); expect(req.user).toBeUndefined(); - expect(req.sessionToken).toBeUndefined(); expect(req.client).toBeDefined(); }); const query = new Parse.Query(TestObject); diff --git a/src/LiveQuery/ParseLiveQueryServer.js b/src/LiveQuery/ParseLiveQueryServer.js index fc31df46b8..0f00635cab 100644 --- a/src/LiveQuery/ParseLiveQueryServer.js +++ b/src/LiveQuery/ParseLiveQueryServer.js @@ -423,6 +423,7 @@ class ParseLiveQueryServer { subscriptions: this.subscriptions.size, useMasterKey: client.hasMasterKey, installationId: client.installationId, + sessionToken: client.sessionToken, }); }); diff --git a/src/triggers.js b/src/triggers.js index 1168fe1767..eeb86c8369 100644 --- a/src/triggers.js +++ b/src/triggers.js @@ -968,14 +968,10 @@ async function userForSessionToken(sessionToken) { } const q = new Parse.Query('_Session'); q.equalTo('sessionToken', sessionToken); + q.include('user'); const session = await q.first({ useMasterKey: true }); if (!session) { return; } - const user = session.get('user'); - if (!user) { - return; - } - await user.fetch({ useMasterKey: true }); - return user; + return session.get('user'); }