fix #3451 duplicate session upon login (#4337)

* Adds failing test for #3451 (on multiple logins)

* Factor sessionDestruction as part of Session creation flow in RestWrite

* nits
This commit is contained in:
Florent Vilmart
2017-11-11 09:41:23 -05:00
committed by GitHub
parent 932a474606
commit 72e20be06d
2 changed files with 56 additions and 10 deletions

View File

@@ -3453,4 +3453,34 @@ describe('Parse.User testing', () => {
done();
});
});
it('does not duplicate session when logging in multiple times #3451', (done) => {
const user = new Parse.User();
user.signUp({
username: 'yolo',
password: 'yolo',
email: 'yo@lo.com'
}).then(() => {
const promises = [];
while(promises.length != 5) {
Parse.User.logIn('yolo', 'yolo')
promises.push(Parse.User.logIn('yolo', 'yolo').then((res) => {
// ensure a new session token is generated at each login
expect(res.getSessionToken()).not.toBe(user.getSessionToken());
}));
}
return Promise.all(promises);
}).then(() => {
// wait because session destruction is not synchronous
return new Promise((resolve) => {
setTimeout(resolve, 100);
});
}).then(() => {
const query = new Parse.Query('_Session');
return query.find({ useMasterKey: true });
}).then((results) => {
// only one session in the end
expect(results.length).toBe(1);
}).then(done, done.fail);
});
});