Send a sessionToken back on /users/me.

This commit is contained in:
Nikita Lutsenko
2016-02-24 12:51:06 -08:00
parent 5fae41183e
commit bc90effd32
2 changed files with 33 additions and 1 deletions

View File

@@ -5,6 +5,8 @@
// Tests that involve revocable sessions.
// Tests that involve sending password reset emails.
"use strict";
var request = require('request');
var passwordCrypto = require('../src/password');
@@ -95,6 +97,33 @@ describe('Parse.User testing', () => {
});
});
describe('become', () => {
it('sends token back', done => {
let user = null;
var sessionToken = null;
Parse.User.signUp('Jason', 'Parse', { 'code': 'red' }).then(newUser => {
user = newUser;
expect(user.get('code'), 'red');
sessionToken = newUser.getSessionToken();
expect(sessionToken).toBeDefined();
return Parse.User.become(sessionToken);
}).then(newUser => {
expect(newUser.id).toEqual(user.id);
expect(newUser.get('username'), 'Jason');
expect(newUser.get('code'), 'red');
expect(newUser.getSessionToken()).toEqual(sessionToken);
}).then(() => {
done();
}, error => {
fail(error);
done();
});
});
});
it("become", (done) => {
var user = null;
var sessionToken = null;

View File

@@ -42,8 +42,9 @@ export class UsersRouter extends ClassesRouter {
if (!req.info || !req.info.sessionToken) {
throw new Parse.Error(Parse.Error.INVALID_SESSION_TOKEN, 'invalid session token');
}
let sessionToken = req.info.sessionToken;
return rest.find(req.config, Auth.master(req.config), '_Session',
{ _session_token: req.info.sessionToken },
{ _session_token: sessionToken },
{ include: 'user' })
.then((response) => {
if (!response.results ||
@@ -52,6 +53,8 @@ export class UsersRouter extends ClassesRouter {
throw new Parse.Error(Parse.Error.INVALID_SESSION_TOKEN, 'invalid session token');
} else {
let user = response.results[0].user;
// Send token back on the login, because SDKs expect that.
user.sessionToken = sessionToken;
return { response: user };
}
});