@@ -19,8 +19,10 @@ import Control.Applicative ((<$>))
1919import Control.Monad (forM_, when, unless)
2020import Control.Monad.Trans.Except (ExceptT, throwE)
2121import Data.Aeson (FromJSON, ToJSON, decode', encode)
22+import qualified Data.ByteString.Base64 as Base64
2223import Data.ByteString.Conversion ()
2324import Data.Char (toUpper)
25+import Data.Monoid
2426import Data.Proxy (Proxy (Proxy))
2527import Data.String (fromString)
2628import Data.String.Conversions (cs)
@@ -569,17 +571,17 @@ basicAuthSpec = do
569571 with (return (serveWithContext basicAuthApi basicAuthContext basicAuthServer)) $ do
570572
571573 context "Basic Authentication" $ do
574+ let basicAuthHeaders user password =
575+ [("Authorization", "Basic " <> Base64.encode (user <> ":" <> password))]
572576 it "returns 401 when no credentials given" $ do
573577 get "/basic" `shouldRespondWith` 401
574578
575579 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") ""
578581 `shouldRespondWith` 403
579582
580583 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") ""
583585 `shouldRespondWith` 200
584586
585587 it "plays nice with subsequent Raw endpoints" $ do