Jelajahi Sumber

Handle null, undefined and false in `isUserLoggedIn`

Shane Kilkelly 10 tahun lalu
induk
melakukan
dd14e51713

+ 1 - 1
services/web/app/coffee/Features/Authentication/AuthenticationController.coffee

@@ -94,7 +94,7 @@ module.exports = AuthenticationController =
 
 	isUserLoggedIn: (req) ->
 		user_id = AuthenticationController.getLoggedInUserId(req)
-		return user_id != null
+		return (user_id not in [null, undefined, false])
 
 	# TODO: perhaps should produce an error if the current user is not present
 	getLoggedInUserId: (req) ->

+ 19 - 1
services/web/test/UnitTests/coffee/Authentication/AuthenticationControllerTests.coffee

@@ -44,6 +44,24 @@ describe "AuthenticationController", ->
 	afterEach ->
 		tk.reset()
 
+	describe 'isUserLoggedIn', () ->
+
+		beforeEach ->
+			@stub = sinon.stub(@AuthenticationController, 'getLoggedInUserId')
+
+		afterEach ->
+			@stub.restore()
+
+		it 'should do the right thing in all cases', () ->
+			@AuthenticationController.getLoggedInUserId.returns('some_id')
+			expect(@AuthenticationController.isUserLoggedIn(@req)).to.equal true
+			@AuthenticationController.getLoggedInUserId.returns(null)
+			expect(@AuthenticationController.isUserLoggedIn(@req)).to.equal false
+			@AuthenticationController.getLoggedInUserId.returns(false)
+			expect(@AuthenticationController.isUserLoggedIn(@req)).to.equal false
+			@AuthenticationController.getLoggedInUserId.returns(undefined)
+			expect(@AuthenticationController.isUserLoggedIn(@req)).to.equal false
+
 	describe 'setInSessionUser', () ->
 
 		beforeEach ->
@@ -361,7 +379,7 @@ describe "AuthenticationController", ->
 		describe "with a user session", ->
 			beforeEach ->
 				@req.session =
-					user: {"mock": "user"}
+					user: {"mock": "user", "_id": "some_id"}
 				@AuthenticationController.requireGlobalLogin @req, @res, @next
 
 			it "should call next() directly", ->