@@ -40,7 +40,7 @@ import Data.Aeson
4040import Data.Char
4141 (chr, isPrint)
4242import Data.Foldable
43− (forM_)
43+ (forM_, toList)
4444import Data.Maybe
4545 (listToMaybe)
4646import Data.Monoid ()
@@ -336,9 +336,16 @@ sucessSpec = beforeAll (startWaiApp server) $ afterAll endWaiApp $ do
336336 let p = Person "Clara" 42
337337 left show <$> runClient (getBody p) baseUrl `shouldReturn` Right p
338338
339+ it "Servant.API FailureResponse" $ \(_, baseUrl) -> do
340+ left show <$> runClient (getQueryParam (Just "alice")) baseUrl `shouldReturn` Right alice
341+ Left (FailureResponse req _) <- runClient (getQueryParam (Just "bob")) baseUrl
342+ Req.requestPath req `shouldBe` (baseUrl, "/param")
343+ toList (Req.requestQueryString req) `shouldBe` [("name", Just "bob")]
344+ Req.requestMethod req `shouldBe` HTTP.methodGet
345+
339346 it "Servant.API.QueryParam" $ \(_, baseUrl) -> do
340347 left show <$> runClient (getQueryParam (Just "alice")) baseUrl `shouldReturn` Right alice
341− Left (FailureResponse r) <- runClient (getQueryParam (Just "bob")) baseUrl
348+ Left (FailureResponse _ r) <- runClient (getQueryParam (Just "bob")) baseUrl
342349 responseStatusCode r `shouldBe` HTTP.Status 400 "bob not found"
343350
344351 it "Servant.API.QueryParam.QueryParams" $ \(_, baseUrl) -> do
@@ -362,7 +369,7 @@ sucessSpec = beforeAll (startWaiApp server) $ afterAll endWaiApp $ do
362369 res <- runClient (getRawFailure HTTP.methodGet) baseUrl
363370 case res of
364371 Right _ -> assertFailure "expected Left, but got Right"
365− Left (FailureResponse r) -> do
372+ Left (FailureResponse _ r) -> do
366373 responseStatusCode r `shouldBe` HTTP.status400
367374 responseBody r `shouldBe` "rawFailure"
368375 Left e -> assertFailure $ "expected FailureResponse, but got " ++ show e
@@ -399,7 +406,7 @@ wrappedApiSpec = describe "error status codes" $ do
399406 it desc $ bracket (startWaiApp $ serveW api) endWaiApp $ \(_, baseUrl) -> do
400407 let getResponse :: ClientM ()
401408 getResponse = client api
402− Left (FailureResponse r) <- runClient getResponse baseUrl
409+ Left (FailureResponse _ r) <- runClient getResponse baseUrl
403410 responseStatusCode r `shouldBe` (HTTP.Status 500 "error message")
404411 in mapM_ test $
405412 (WrappedApi (Proxy :: Proxy (Delete '[JSON] ())), "Delete") :
@@ -416,7 +423,7 @@ failSpec = beforeAll (startWaiApp failServer) $ afterAll endWaiApp $ do
416423 let (_ :<|> _ :<|> getDeleteEmpty :<|> _) = client api
417424 Left res <- runClient getDeleteEmpty baseUrl
418425 case res of
419− FailureResponse r | responseStatusCode r == HTTP.status404 -> return ()
426+ FailureResponse _ r | responseStatusCode r == HTTP.status404 -> return ()
420427 _ -> fail $ "expected 404 response, but got " <> show res
421428
422429 it "reports DecodeFailure" $ \(_, baseUrl) -> do
@@ -466,7 +473,7 @@ basicAuthSpec = beforeAll (startWaiApp basicAuthServer) $ afterAll endWaiApp $ d
466473 it "Authenticates a BasicAuth protected server appropriately" $ \(_,baseUrl) -> do
467474 let getBasic = client basicAuthAPI
468475 let basicAuthData = BasicAuthData "not" "password"
469− Left (FailureResponse r) <- runClient (getBasic basicAuthData) baseUrl
476+ Left (FailureResponse _ r) <- runClient (getBasic basicAuthData) baseUrl
470477 responseStatusCode r `shouldBe` HTTP.Status 403 "Forbidden"
471478
472479genAuthSpec :: Spec
@@ -483,7 +490,7 @@ genAuthSpec = beforeAll (startWaiApp genAuthServer) $ afterAll endWaiApp $ do
483490 it "Authenticates a AuthProtect protected server appropriately" $ \(_, baseUrl) -> do
484491 let getProtected = client genAuthAPI
485492 let authRequest = Auth.mkAuthenticatedRequest () (\_ req -> Req.addHeader "Wrong" ("header" :: String) req)
486− Left (FailureResponse r) <- runClient (getProtected authRequest) baseUrl
493+ Left (FailureResponse _ r) <- runClient (getProtected authRequest) baseUrl
487494 responseStatusCode r `shouldBe` (HTTP.Status 401 "Unauthorized")
488495
489496genericClientSpec :: Spec