Skip to content

Commit c290070

Browse files
committed
Merge pull request #193 from ParsePlatform/fosco.logout
Updated user tests, added /logout
2 parents 3d3a97d + 373f4f0 commit c290070

File tree

3 files changed

+57
-45
lines changed

3 files changed

+57
-45
lines changed

spec/ParseUser.spec.js

+39-43
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ describe('Parse.User testing', () => {
7878
sessionToken = newUser.getSessionToken();
7979
ok(sessionToken);
8080

81-
Parse.User.logOut();
81+
return Parse.User.logOut();
82+
}).then(() => {
8283
ok(!Parse.User.current());
8384

8485
return Parse.User.become(sessionToken);
@@ -91,7 +92,8 @@ describe('Parse.User testing', () => {
9192
equal(newUser.get("username"), "Jason");
9293
equal(newUser.get("code"), "red");
9394

94-
Parse.User.logOut();
95+
return Parse.User.logOut();
96+
}).then(() => {
9597
ok(!Parse.User.current());
9698

9799
return Parse.User.become("somegarbage");
@@ -236,22 +238,20 @@ describe('Parse.User testing', () => {
236238
user.set("password", "asdf");
237239
user.set("email", "asdf@example.com");
238240
user.set("username", "zxcv");
239-
user.signUp(null, {
240-
success: function() {
241-
var currentUser = Parse.User.current();
242-
equal(user.id, currentUser.id);
243-
ok(user.getSessionToken());
244-
245-
var currentUserAgain = Parse.User.current();
246-
// should be the same object
247-
equal(currentUser, currentUserAgain);
241+
user.signUp().then(() => {
242+
var currentUser = Parse.User.current();
243+
equal(user.id, currentUser.id);
244+
ok(user.getSessionToken());
248245

249-
// test logging out the current user
250-
Parse.User.logOut();
246+
var currentUserAgain = Parse.User.current();
247+
// should be the same object
248+
equal(currentUser, currentUserAgain);
251249

252-
equal(Parse.User.current(), null);
253-
done();
254-
}
250+
// test logging out the current user
251+
return Parse.User.logOut();
252+
}).then(() => {
253+
equal(Parse.User.current(), null);
254+
done();
255255
});
256256
});
257257

@@ -578,28 +578,24 @@ describe('Parse.User testing', () => {
578578

579579

580580
it("user loaded from localStorage from login", (done) => {
581+
var id;
582+
Parse.User.signUp("alice", "password").then((alice) => {
583+
id = alice.id;
584+
return Parse.User.logOut();
585+
}).then(() => {
586+
return Parse.User.logIn("alice", "password");
587+
}).then((user) => {
588+
// Force the current user to read from disk
589+
delete Parse.User._currentUser;
590+
delete Parse.User._currentUserMatchesDisk;
581591

582-
Parse.User.signUp("alice", "password", null, {
583-
success: function(alice) {
584-
var id = alice.id;
585-
Parse.User.logOut();
586-
587-
Parse.User.logIn("alice", "password", {
588-
success: function(user) {
589-
// Force the current user to read from disk
590-
delete Parse.User._currentUser;
591-
delete Parse.User._currentUserMatchesDisk;
592-
593-
var userFromDisk = Parse.User.current();
594-
equal(userFromDisk.get("password"), undefined,
595-
"password should not be in attributes");
596-
equal(userFromDisk.id, id, "id should be set");
597-
ok(userFromDisk.getSessionToken(),
598-
"currentUser should have a sessionToken");
599-
done();
600-
}
601-
});
602-
}
592+
var userFromDisk = Parse.User.current();
593+
equal(userFromDisk.get("password"), undefined,
594+
"password should not be in attributes");
595+
equal(userFromDisk.id, id, "id should be set");
596+
ok(userFromDisk.getSessionToken(),
597+
"currentUser should have a sessionToken");
598+
done();
603599
});
604600
});
605601

@@ -609,8 +605,8 @@ describe('Parse.User testing', () => {
609605

610606
Parse.User.signUp("alice", "password", null).then(function(alice) {
611607
id = alice.id;
612-
Parse.User.logOut();
613-
608+
return Parse.User.logOut();
609+
}).then(() => {
614610
return Parse.User.logIn("alice", "password");
615611
}).then(function() {
616612
// Simulate browser refresh by force-reloading user from localStorage
@@ -1300,17 +1296,17 @@ describe('Parse.User testing', () => {
13001296
return Parse.User.signUp("finn", "human", { foo: "bar" });
13011297

13021298
}).then(function() {
1303-
Parse.User.logOut();
1304-
1299+
return Parse.User.logOut();
1300+
}).then(() => {
13051301
var user = new Parse.User();
13061302
user.set("username", "jake");
13071303
user.set("password", "dog");
13081304
user.set("foo", "baz");
13091305
return user.signUp();
13101306

13111307
}).then(function() {
1312-
Parse.User.logOut();
1313-
1308+
return Parse.User.logOut();
1309+
}).then(() => {
13141310
var query = new Parse.Query(Parse.User);
13151311
return query.find();
13161312

spec/helper.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,7 @@ beforeEach(function(done) {
4646
});
4747

4848
afterEach(function(done) {
49-
Parse.User.logOut();
50-
Parse.Promise.as().then(() => {
49+
Parse.User.logOut().then(() => {
5150
return clearData();
5251
}).then(() => {
5352
done();

users.js

+17
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,22 @@ function handleDelete(req) {
161161
});
162162
}
163163

164+
function handleLogOut(req) {
165+
var success = {response: {}};
166+
if (req.info && req.info.sessionToken) {
167+
rest.find(req.config, Auth.master(req.config), '_Session',
168+
{_session_token: req.info.sessionToken}
169+
).then((records) => {
170+
if (records.results && records.results.length) {
171+
rest.del(req.config, Auth.master(req.config), '_Session',
172+
records.results[0].id
173+
);
174+
}
175+
});
176+
}
177+
return Promise.resolve(success);
178+
}
179+
164180
function handleUpdate(req) {
165181
return rest.update(req.config, req.auth, '_User',
166182
req.params.objectId, req.body)
@@ -176,6 +192,7 @@ function notImplementedYet(req) {
176192

177193
router.route('POST', '/users', handleCreate);
178194
router.route('GET', '/login', handleLogIn);
195+
router.route('POST', '/logout', handleLogOut);
179196
router.route('GET', '/users/me', handleMe);
180197
router.route('GET', '/users/:objectId', handleGet);
181198
router.route('PUT', '/users/:objectId', handleUpdate);

0 commit comments

Comments
 (0)