@@ -19,8 +19,10 @@ import Control.Applicative ((<$>))
19import Control.Monad (forM_, when, unless)
19import Control.Monad (forM_, when, unless)
20import Control.Monad.Trans.Except (ExceptT, throwE)
20import Control.Monad.Trans.Except (ExceptT, throwE)
21import Data.Aeson (FromJSON, ToJSON, decode', encode)
21import Data.Aeson (FromJSON, ToJSON, decode', encode)
22+import qualified Data.ByteString.Base64 as Base64
22import Data.ByteString.Conversion ()
23import Data.ByteString.Conversion ()
23import Data.Char (toUpper)
24import Data.Char (toUpper)
24import Data.Proxy (Proxy (Proxy))
26import Data.Proxy (Proxy (Proxy))
25import Data.String (fromString)
27import Data.String (fromString)
26import Data.String.Conversions (cs)
28import Data.String.Conversions (cs)
@@ -569,17 +571,17 @@ basicAuthSpec = do
569 with (return (serveWithContext basicAuthApi basicAuthContext basicAuthServer)) $ do
571 with (return (serveWithContext basicAuthApi basicAuthContext basicAuthServer)) $ do
571 context "Basic Authentication" $ do
573 context "Basic Authentication" $ do
574+ let basicAuthHeaders user password =
575+ [("Authorization", "Basic " <> Base64.encode (user <> ":" <> password))]
572 it "returns 401 when no credentials given" $ do
576 it "returns 401 when no credentials given" $ do
573 get "/basic" `shouldRespondWith` 401
577 get "/basic" `shouldRespondWith` 401
575 it "returns 403 when invalid credentials given" $ do
579 it "returns 403 when invalid credentials given" $ do
576− let invalid = [("Authorization", "Basic bbbbbbbbbDpzZXJ2ZXI=")] -- fixme: how do I create basic auth tokens?
577− THW.request methodGet "/basic" invalid ""
580+ THW.request methodGet "/basic" (basicAuthHeaders "servant" "wrong") ""
578 `shouldRespondWith` 403
581 `shouldRespondWith` 403
580 it "returns 200 with the right password" $ do
583 it "returns 200 with the right password" $ do
581− let validCredentials = [("Authorization", "Basic c2VydmFudDpzZXJ2ZXI=")]
582− THW.request methodGet "/basic" validCredentials ""
584+ THW.request methodGet "/basic" (basicAuthHeaders "servant" "server") ""
583 `shouldRespondWith` 200
585 `shouldRespondWith` 200
585 it "plays nice with subsequent Raw endpoints" $ do
587 it "plays nice with subsequent Raw endpoints" $ do