@@ -52,7 +52,7 @@ import Servant.API ((:<|>) (..), (:>), AuthProtect,
52 Raw, RemoteHost, ReqBody,
52 Raw, RemoteHost, ReqBody,
53 StdMethod (..), Verb, addHeader)
53 StdMethod (..), Verb, addHeader)
54import Servant.API.Internal.Test.ComprehensiveAPI
54import Servant.API.Internal.Test.ComprehensiveAPI
55−import Servant.Server (ServantErr (..), Server, err401, err404,
55+import Servant.Server (ServantErr (..), Server, err401, err403, err404,
56 serve, serveWithContext, Context((:.), EmptyContext))
56 serve, serveWithContext, Context((:.), EmptyContext))
57import Test.Hspec (Spec, context, describe, it,
57import Test.Hspec (Spec, context, describe, it,
58 shouldBe, shouldContain)
58 shouldBe, shouldContain)
@@ -606,11 +606,10 @@ type instance AuthServerData (AuthProtect "auth") = ()
607genAuthContext :: Context '[AuthHandler Request ()]
607genAuthContext :: Context '[AuthHandler Request ()]
608genAuthContext =
608genAuthContext =
609− let authHandler = (\req ->
609+ let authHandler = \req -> case lookup "Auth" (requestHeaders req) of
610− if elem ("Auth", "secret") (requestHeaders req)
611− then return ()
610+ Just "secret" -> return ()
611+ Just _ -> throwE err403
612− else throwE err401
612+ Nothing -> throwE err401
614 in mkAuthHandler authHandler :. EmptyContext
613 in mkAuthHandler authHandler :. EmptyContext
616genAuthSpec :: Spec
615genAuthSpec :: Spec
@@ -622,6 +621,9 @@ genAuthSpec = do
622 it "returns 401 when missing headers" $ do
621 it "returns 401 when missing headers" $ do
623 get "/auth" `shouldRespondWith` 401
622 get "/auth" `shouldRespondWith` 401
624+ it "returns 403 on wrong passwords" $ do
625+ THW.request methodGet "/auth" [("Auth","wrong")] "" `shouldRespondWith` 403
625 it "returns 200 with the right header" $ do
627 it "returns 200 with the right header" $ do
626 THW.request methodGet "/auth" [("Auth","secret")] "" `shouldRespondWith` 200
628 THW.request methodGet "/auth" [("Auth","secret")] "" `shouldRespondWith` 200