// // Tests behavior of Parse Sessions // 'use strict'; function setupTestUsers() { const user1 = new Parse.User(); const user2 = new Parse.User(); const user3 = new Parse.User(); user1.set('username', 'testuser_1'); user2.set('username', 'testuser_2'); user3.set('username', 'testuser_3'); user1.set('password', 'password'); user2.set('password', 'password'); user3.set('password', 'password'); return user1 .signUp() .then(() => { return user2.signUp(); }) .then(() => { return user3.signUp(); }); } describe('Parse.Session', () => { // multiple sessions with masterKey + sessionToken it('should retain original sessionTokens with masterKey & sessionToken set', done => { setupTestUsers() .then(user => { const query = new Parse.Query(Parse.Session); return query.find({ useMasterKey: true, sessionToken: user.get('sessionToken'), }); }) .then(results => { const foundKeys = []; expect(results.length).toBe(3); for (const key in results) { const sessionToken = results[key].get('sessionToken'); if (foundKeys[sessionToken]) { fail('Duplicate session token present in response'); break; } foundKeys[sessionToken] = 1; } done(); }) .catch(err => { fail(err); }); }); // single session returned, with just one sessionToken it('should retain original sessionTokens with just sessionToken set', done => { let knownSessionToken; setupTestUsers() .then(user => { knownSessionToken = user.get('sessionToken'); const query = new Parse.Query(Parse.Session); return query.find({ sessionToken: knownSessionToken, }); }) .then(results => { expect(results.length).toBe(1); const sessionToken = results[0].get('sessionToken'); expect(sessionToken).toBe(knownSessionToken); done(); }) .catch(err => { fail(err); }); }); // multiple users with masterKey + sessionToken it('token on users should retain original sessionTokens with masterKey & sessionToken set', done => { setupTestUsers() .then(user => { const query = new Parse.Query(Parse.User); return query.find({ useMasterKey: true, sessionToken: user.get('sessionToken'), }); }) .then(results => { const foundKeys = []; expect(results.length).toBe(3); for (const key in results) { const sessionToken = results[key].get('sessionToken'); if (foundKeys[sessionToken] && sessionToken !== undefined) { fail('Duplicate session token present in response'); break; } foundKeys[sessionToken] = 1; } done(); }) .catch(err => { fail(err); }); }); // multiple users with just sessionToken it('token on users should retain original sessionTokens with just sessionToken set', done => { let knownSessionToken; setupTestUsers() .then(user => { knownSessionToken = user.get('sessionToken'); const query = new Parse.Query(Parse.User); return query.find({ sessionToken: knownSessionToken, }); }) .then(results => { const foundKeys = []; expect(results.length).toBe(3); for (const key in results) { const sessionToken = results[key].get('sessionToken'); if (foundKeys[sessionToken] && sessionToken !== undefined) { fail('Duplicate session token present in response'); break; } foundKeys[sessionToken] = 1; } done(); }) .catch(err => { fail(err); }); }); });