git.iko.soy/typeable/servant
on master help sign in
Try to add test for root client request
commitbd7f6edb8b5e8f851fcec0bb30d67b969838c9ae authorOleg Grenrus <oleg.grenrus@iki.fi> dateMon 6 Nov 2017, 14:11 (9 years ago) parentc9ddd9b
1 file changed+16−7
servant-client/test/Servant/ClientSpec.hs+16−7
servant-client/test/Servant/ClientSpec.hs+16−7
@@ -106,10 +106,14 @@ instance FromForm Person
106106alice :: Person
107107alice = Person "Alice" 42
108108
109+carol :: Person
110+carol = Person "Carol" 17
111+
109112type TestHeaders = '[Header "X-Example1" Int, Header "X-Example2" String]
110113
111114type Api =
112− "get" :> Get '[JSON] Person
115+ Get '[JSON] Person
116+ :<|> "get" :> Get '[JSON] Person
113117 :<|> "deleteEmpty" :> DeleteNoContent '[JSON] NoContent
114118 :<|> "capture" :> Capture "name" String :> Get '[JSON,FormUrlEncoded] Person
115119 :<|> "captureAll" :> CaptureAll "names" String :> Get '[JSON] [Person]
@@ -132,6 +136,7 @@ type Api =
132136api :: Proxy Api
133137api = Proxy
134138
139+getRoot :: ClientM Person
135140getGet :: ClientM Person
136141getDeleteEmpty :: ClientM NoContent
137142getCapture :: String -> ClientM Person
@@ -147,7 +152,8 @@ getMultiple :: String -> Maybe Int -> Bool -> [(String, [Rational])]
147152getRespHeaders :: ClientM (Headers TestHeaders Bool)
148153getDeleteContentType :: ClientM NoContent
149154
150−getGet
155+getRoot
156+ :<|> getGet
151157 :<|> getDeleteEmpty
152158 :<|> getCapture
153159 :<|> getCaptureAll
@@ -164,7 +170,8 @@ getGet
164170
165171server :: Application
166172server = serve api (
167− return alice
173+ return carol
174+ :<|> return alice
168175 :<|> return NoContent
169176 :<|> (\ name -> return $ Person name 0)
170177 :<|> (\ names -> return (zipWith Person names [0..]))
@@ -299,6 +306,8 @@ runClient x baseUrl' = runClientM x (ClientEnv manager' baseUrl')
299306
300307sucessSpec :: Spec
301308sucessSpec = beforeAll (startWaiApp server) $ afterAll endWaiApp $ do
309+ it "Servant.API.Get root" $ \(_, baseUrl) -> do
310+ left show <$> runClient getRoot baseUrl `shouldReturn` Right carol
302311
303312 it "Servant.API.Get" $ \(_, baseUrl) -> do
304313 left show <$> runClient getGet baseUrl `shouldReturn` Right alice
@@ -390,14 +399,14 @@ failSpec = beforeAll (startWaiApp failServer) $ afterAll endWaiApp $ do
390399
391400 context "client returns errors appropriately" $ do
392401 it "reports FailureResponse" $ \(_, baseUrl) -> do
393− let (_ :<|> getDeleteEmpty :<|> _) = client api
402+ let (_ :<|> _ :<|> getDeleteEmpty :<|> _) = client api
394403 Left res <- runClient getDeleteEmpty baseUrl
395404 case res of
396405 FailureResponse r | responseStatusCode r == HTTP.status404 -> return ()
397406 _ -> fail $ "expected 404 response, but got " <> show res
398407
399408 it "reports DecodeFailure" $ \(_, baseUrl) -> do
400− let (_ :<|> _ :<|> getCapture :<|> _) = client api
409+ let (_ :<|> _ :<|> _ :<|> getCapture :<|> _) = client api
401410 Left res <- runClient (getCapture "foo") baseUrl
402411 case res of
403412 DecodeFailure _ _ -> return ()
@@ -411,14 +420,14 @@ failSpec = beforeAll (startWaiApp failServer) $ afterAll endWaiApp $ do
411420 _ -> fail $ "expected ConnectionError, but got " <> show res
412421
413422 it "reports UnsupportedContentType" $ \(_, baseUrl) -> do
414− let (getGet :<|> _ ) = client api
423+ let (_ :<|> getGet :<|> _ ) = client api
415424 Left res <- runClient getGet baseUrl
416425 case res of
417426 UnsupportedContentType ("application/octet-stream") _ -> return ()
418427 _ -> fail $ "expected UnsupportedContentType, but got " <> show res
419428
420429 it "reports InvalidContentTypeHeader" $ \(_, baseUrl) -> do
421− let (_ :<|> _ :<|> _ :<|> _ :<|> getBody :<|> _) = client api
430+ let (_ :<|> _ :<|> _ :<|> _ :<|> _ :<|> getBody :<|> _) = client api
422431 Left res <- runClient (getBody alice) baseUrl
423432 case res of
424433 InvalidContentTypeHeader _ -> return ()