git.iko.soy/typeable/servant
on master help sign in
add one more auth test

just to clarify on how to use it properly

commit8bf81190b2ff8581d7dad028bb48f3600f3e1eaa authorSönke Hahn <soenkehahn@gmail.com> dateThu 7 Apr 2016, 18:04 (11 years ago) parentc2c9bef
2 files changed+8−7
servant-server/src/Servant/Server/Experimental/Auth.hs−1 servant-server/test/Servant/ServerSpec.hs+8−6
servant-server/src/Servant/Server/Experimental/Auth.hs−1
@@ -63,4 +63,3 @@ instance ( HasServer api context
6363 where
6464 authHandler = unAuthHandler (getContextEntry context)
6565 authCheck = fmap (either FailFatal Route) . runExceptT . authHandler
66−
servant-server/test/Servant/ServerSpec.hs+8−6
@@ -52,7 +52,7 @@ import Servant.API ((:<|>) (..), (:>), AuthProtect,
5252 Raw, RemoteHost, ReqBody,
5353 StdMethod (..), Verb, addHeader)
5454import Servant.API.Internal.Test.ComprehensiveAPI
55−import Servant.Server (ServantErr (..), Server, err401, err404,
55+import Servant.Server (ServantErr (..), Server, err401, err403, err404,
5656 serve, serveWithContext, Context((:.), EmptyContext))
5757import Test.Hspec (Spec, context, describe, it,
5858 shouldBe, shouldContain)
@@ -606,11 +606,10 @@ type instance AuthServerData (AuthProtect "auth") = ()
606606
607607genAuthContext :: Context '[AuthHandler Request ()]
608608genAuthContext =
609− let authHandler = (\req ->
610− if elem ("Auth", "secret") (requestHeaders req)
611− then return ()
612− else throwE err401
613− )
609+ let authHandler = \req -> case lookup "Auth" (requestHeaders req) of
610+ Just "secret" -> return ()
611+ Just _ -> throwE err403
612+ Nothing -> throwE err401
614613 in mkAuthHandler authHandler :. EmptyContext
615614
616615genAuthSpec :: Spec
@@ -622,6 +621,9 @@ genAuthSpec = do
622621 it "returns 401 when missing headers" $ do
623622 get "/auth" `shouldRespondWith` 401
624623
624+ it "returns 403 on wrong passwords" $ do
625+ THW.request methodGet "/auth" [("Auth","wrong")] "" `shouldRespondWith` 403
626+
625627 it "returns 200 with the right header" $ do
626628 THW.request methodGet "/auth" [("Auth","secret")] "" `shouldRespondWith` 200
627629