Include the request that failed in FailureResponse.

This commit is contained in:
Stevan Andjelkovic 2017-05-05 15:31:38 +02:00
parent c84e650495
commit b8de9c8527
2 changed files with 10 additions and 9 deletions

View file

@ -48,7 +48,8 @@ import Web.HttpApiData
data ServantError data ServantError
= FailureResponse = FailureResponse
{ responseStatus :: Status { failingRequest :: Request
, responseStatus :: Status
, responseContentType :: MediaType , responseContentType :: MediaType
, responseBody :: ByteString , responseBody :: ByteString
} }
@ -71,8 +72,8 @@ data ServantError
deriving (Show, Typeable) deriving (Show, Typeable)
instance Eq ServantError where instance Eq ServantError where
FailureResponse a b c == FailureResponse x y z = FailureResponse a b c d == FailureResponse w x y z =
(a, b, c) == (x, y, z) (show a, b, c, d) == (show w, x, y, z)
DecodeFailure a b c == DecodeFailure x y z = DecodeFailure a b c == DecodeFailure x y z =
(a, b, c) == (x, y, z) (a, b, c) == (x, y, z)
UnsupportedContentType a b == UnsupportedContentType x y = UnsupportedContentType a b == UnsupportedContentType x y =
@ -250,7 +251,7 @@ performRequest reqMethod req = do
Nothing -> throwError $ InvalidContentTypeHeader (cs t) body Nothing -> throwError $ InvalidContentTypeHeader (cs t) body
Just t' -> pure t' Just t' -> pure t'
unless (status_code >= 200 && status_code < 300) $ unless (status_code >= 200 && status_code < 300) $
throwError $ FailureResponse status ct body throwError $ FailureResponse request status ct body
return (status_code, body, ct, hdrs, response) return (status_code, body, ct, hdrs, response)
performRequestCT :: MimeUnrender ct result => Proxy ct -> Method -> Req performRequestCT :: MimeUnrender ct result => Proxy ct -> Method -> Req

View file

@ -372,7 +372,7 @@ failSpec = beforeAll (startWaiApp failServer) $ afterAll endWaiApp $ do
let (_ :<|> getDeleteEmpty :<|> _) = client api let (_ :<|> getDeleteEmpty :<|> _) = client api
Left res <- runClientM getDeleteEmpty (ClientEnv manager baseUrl) Left res <- runClientM getDeleteEmpty (ClientEnv manager baseUrl)
case res of case res of
FailureResponse (HTTP.Status 404 "Not Found") _ _ -> return () FailureResponse _ (HTTP.Status 404 "Not Found") _ _ -> return ()
_ -> fail $ "expected 404 response, but got " <> show res _ -> fail $ "expected 404 response, but got " <> show res
it "reports DecodeFailure" $ \(_, baseUrl) -> do it "reports DecodeFailure" $ \(_, baseUrl) -> do