Merge pull request #193 from ParsePlatform/fosco.logout

Updated user tests, added /logout
This commit is contained in:
Fosco Marotto
2016-02-02 20:16:54 -08:00
3 changed files with 57 additions and 45 deletions

View File

@@ -78,7 +78,8 @@ describe('Parse.User testing', () => {
sessionToken = newUser.getSessionToken(); sessionToken = newUser.getSessionToken();
ok(sessionToken); ok(sessionToken);
Parse.User.logOut(); return Parse.User.logOut();
}).then(() => {
ok(!Parse.User.current()); ok(!Parse.User.current());
return Parse.User.become(sessionToken); return Parse.User.become(sessionToken);
@@ -91,7 +92,8 @@ describe('Parse.User testing', () => {
equal(newUser.get("username"), "Jason"); equal(newUser.get("username"), "Jason");
equal(newUser.get("code"), "red"); equal(newUser.get("code"), "red");
Parse.User.logOut(); return Parse.User.logOut();
}).then(() => {
ok(!Parse.User.current()); ok(!Parse.User.current());
return Parse.User.become("somegarbage"); return Parse.User.become("somegarbage");
@@ -236,22 +238,20 @@ describe('Parse.User testing', () => {
user.set("password", "asdf"); user.set("password", "asdf");
user.set("email", "asdf@example.com"); user.set("email", "asdf@example.com");
user.set("username", "zxcv"); user.set("username", "zxcv");
user.signUp(null, { user.signUp().then(() => {
success: function() { var currentUser = Parse.User.current();
var currentUser = Parse.User.current(); equal(user.id, currentUser.id);
equal(user.id, currentUser.id); ok(user.getSessionToken());
ok(user.getSessionToken());
var currentUserAgain = Parse.User.current(); var currentUserAgain = Parse.User.current();
// should be the same object // should be the same object
equal(currentUser, currentUserAgain); equal(currentUser, currentUserAgain);
// test logging out the current user // test logging out the current user
Parse.User.logOut(); return Parse.User.logOut();
}).then(() => {
equal(Parse.User.current(), null); equal(Parse.User.current(), null);
done(); done();
}
}); });
}); });
@@ -578,28 +578,24 @@ describe('Parse.User testing', () => {
it("user loaded from localStorage from login", (done) => { it("user loaded from localStorage from login", (done) => {
var id;
Parse.User.signUp("alice", "password").then((alice) => {
id = alice.id;
return Parse.User.logOut();
}).then(() => {
return Parse.User.logIn("alice", "password");
}).then((user) => {
// Force the current user to read from disk
delete Parse.User._currentUser;
delete Parse.User._currentUserMatchesDisk;
Parse.User.signUp("alice", "password", null, { var userFromDisk = Parse.User.current();
success: function(alice) { equal(userFromDisk.get("password"), undefined,
var id = alice.id; "password should not be in attributes");
Parse.User.logOut(); equal(userFromDisk.id, id, "id should be set");
ok(userFromDisk.getSessionToken(),
Parse.User.logIn("alice", "password", { "currentUser should have a sessionToken");
success: function(user) { done();
// Force the current user to read from disk
delete Parse.User._currentUser;
delete Parse.User._currentUserMatchesDisk;
var userFromDisk = Parse.User.current();
equal(userFromDisk.get("password"), undefined,
"password should not be in attributes");
equal(userFromDisk.id, id, "id should be set");
ok(userFromDisk.getSessionToken(),
"currentUser should have a sessionToken");
done();
}
});
}
}); });
}); });
@@ -609,8 +605,8 @@ describe('Parse.User testing', () => {
Parse.User.signUp("alice", "password", null).then(function(alice) { Parse.User.signUp("alice", "password", null).then(function(alice) {
id = alice.id; id = alice.id;
Parse.User.logOut(); return Parse.User.logOut();
}).then(() => {
return Parse.User.logIn("alice", "password"); return Parse.User.logIn("alice", "password");
}).then(function() { }).then(function() {
// Simulate browser refresh by force-reloading user from localStorage // Simulate browser refresh by force-reloading user from localStorage
@@ -1300,8 +1296,8 @@ describe('Parse.User testing', () => {
return Parse.User.signUp("finn", "human", { foo: "bar" }); return Parse.User.signUp("finn", "human", { foo: "bar" });
}).then(function() { }).then(function() {
Parse.User.logOut(); return Parse.User.logOut();
}).then(() => {
var user = new Parse.User(); var user = new Parse.User();
user.set("username", "jake"); user.set("username", "jake");
user.set("password", "dog"); user.set("password", "dog");
@@ -1309,8 +1305,8 @@ describe('Parse.User testing', () => {
return user.signUp(); return user.signUp();
}).then(function() { }).then(function() {
Parse.User.logOut(); return Parse.User.logOut();
}).then(() => {
var query = new Parse.Query(Parse.User); var query = new Parse.Query(Parse.User);
return query.find(); return query.find();

View File

@@ -46,8 +46,7 @@ beforeEach(function(done) {
}); });
afterEach(function(done) { afterEach(function(done) {
Parse.User.logOut(); Parse.User.logOut().then(() => {
Parse.Promise.as().then(() => {
return clearData(); return clearData();
}).then(() => { }).then(() => {
done(); done();

View File

@@ -161,6 +161,22 @@ function handleDelete(req) {
}); });
} }
function handleLogOut(req) {
var success = {response: {}};
if (req.info && req.info.sessionToken) {
rest.find(req.config, Auth.master(req.config), '_Session',
{_session_token: req.info.sessionToken}
).then((records) => {
if (records.results && records.results.length) {
rest.del(req.config, Auth.master(req.config), '_Session',
records.results[0].id
);
}
});
}
return Promise.resolve(success);
}
function handleUpdate(req) { function handleUpdate(req) {
return rest.update(req.config, req.auth, '_User', return rest.update(req.config, req.auth, '_User',
req.params.objectId, req.body) req.params.objectId, req.body)
@@ -176,6 +192,7 @@ function notImplementedYet(req) {
router.route('POST', '/users', handleCreate); router.route('POST', '/users', handleCreate);
router.route('GET', '/login', handleLogIn); router.route('GET', '/login', handleLogIn);
router.route('POST', '/logout', handleLogOut);
router.route('GET', '/users/me', handleMe); router.route('GET', '/users/me', handleMe);
router.route('GET', '/users/:objectId', handleGet); router.route('GET', '/users/:objectId', handleGet);
router.route('PUT', '/users/:objectId', handleUpdate); router.route('PUT', '/users/:objectId', handleUpdate);