Merge pull request #1110 from ParsePlatform/flovilmart.missingSessionInstallationId

Properly sets installationId on creating session with 3rd party auth
This commit is contained in:
Florent Vilmart
2016-03-21 08:21:47 -04:00
5 changed files with 51 additions and 25 deletions

View File

@@ -204,13 +204,11 @@ describe('OAuth', function() {
myoauth: getMockMyOauthProvider().authData myoauth: getMockMyOauthProvider().authData
} }
}; };
var headers = {'X-Parse-Application-Id': 'test',
'X-Parse-REST-API-Key': 'rest',
'Content-Type': 'application/json' }
var options = { var options = {
headers: {'X-Parse-Application-Id': 'test', headers: {'X-Parse-Application-Id': 'test',
'X-Parse-REST-API-Key': 'rest', 'X-Parse-REST-API-Key': 'rest',
'X-Parse-Installation-Id': 'yolo',
'Content-Type': 'application/json' }, 'Content-Type': 'application/json' },
url: 'http://localhost:8378/1/users', url: 'http://localhost:8378/1/users',
body: JSON.stringify(jsonBody) body: JSON.stringify(jsonBody)
@@ -224,9 +222,19 @@ describe('OAuth', function() {
createOAuthUser((error, response, body) => { createOAuthUser((error, response, body) => {
expect(error).toBe(null); expect(error).toBe(null);
var b = JSON.parse(body); var b = JSON.parse(body);
ok(b.sessionToken);
expect(b.objectId).not.toBeNull(); expect(b.objectId).not.toBeNull();
expect(b.objectId).not.toBeUndefined(); expect(b.objectId).not.toBeUndefined();
var sessionToken = b.sessionToken;
var q = new Parse.Query("_Session");
q.equalTo('sessionToken', sessionToken);
q.first({useMasterKey: true}).then((res) => {
expect(res.get("installationId")).toEqual('yolo');
done(); done();
}).fail((err) => {
fail('should not fail fetching the session');
done();
})
}); });
}); });

View File

@@ -1768,9 +1768,37 @@ describe('Parse.User testing', () => {
}); });
}); });
it('user get session from token', (done) => { it('user get session from token on signup', (done) => {
Parse.Promise.as().then(() => { Parse.Promise.as().then(() => {
return Parse.User.signUp("finn", "human", { foo: "bar" }); return Parse.User.signUp("finn", "human", { foo: "bar" });
}).then((user) => {
request.get({
headers: {
'X-Parse-Application-Id': 'test',
'X-Parse-Session-Token': user.getSessionToken(),
'X-Parse-REST-API-Key': 'rest'
},
url: 'http://localhost:8378/1/sessions/me',
}, (error, response, body) => {
expect(error).toBe(null);
var b = JSON.parse(body);
expect(typeof b.sessionToken).toEqual('string');
expect(typeof b.createdWith).toEqual('object');
expect(b.createdWith.action).toEqual('signup');
expect(typeof b.user).toEqual('object');
expect(b.user.objectId).toEqual(user.id);
done();
});
});
});
it('user get session from token on login', (done) => {
Parse.Promise.as().then(() => {
return Parse.User.signUp("finn", "human", { foo: "bar" });
}).then((user) => {
return Parse.User.logOut().then(() => {
return Parse.User.logIn("finn", "human");
})
}).then((user) => { }).then((user) => {
request.get({ request.get({
headers: { headers: {

View File

@@ -327,11 +327,11 @@ RestWrite.prototype.transformUser = function() {
objectId: this.objectId() objectId: this.objectId()
}, },
createdWith: { createdWith: {
'action': 'login', 'action': 'signup',
'authProvider': this.storage['authProvider'] || 'password' 'authProvider': this.storage['authProvider'] || 'password'
}, },
restricted: false, restricted: false,
installationId: this.data.installationId, installationId: this.auth.installationId,
expiresAt: Parse._encode(expiresAt) expiresAt: Parse._encode(expiresAt)
}; };
if (this.response && this.response.response) { if (this.response && this.response.response) {

View File

@@ -27,17 +27,7 @@ export class UsersRouter extends ClassesRouter {
req.body = data; req.body = data;
req.params.className = '_User'; req.params.className = '_User';
//req.config.userController.setEmailVerifyToken(req.body);
return super.handleCreate(req); return super.handleCreate(req);
// if (req.config.verifyUserEmails) {
// // Send email as fire-and-forget once the user makes it into the DB.
// p.then(() => {
// req.config.userController.sendVerificationEmail(req.body);
// });
// }
// return p;
} }
handleUpdate(req) { handleUpdate(req) {