@@ -17,10 +17,8 @@ import Prelude.Compat
1717
1818import Control.Monad
1919 (forM_, unless, when)
20−import Control.Monad.Reader (runReaderT, ask)
2120import Control.Monad.Error.Class
2221 (MonadError (..))
23−import Control.Monad.IO.Class (MonadIO(..))
2422import Data.Aeson
2523 (FromJSON, ToJSON, decode', encode)
2624import Data.Acquire
@@ -56,19 +54,19 @@ import Servant.API
5654 Delete, EmptyAPI, Fragment, Get, HasStatus (StatusOf), Header,
5755 Headers, HttpVersion, IsSecure (..), JSON, Lenient,
5856 NoContent (..), NoContentVerb, NoFraming, OctetStream, Patch,
59− PlainText, Post, Put, QueryFlag, QueryParam, QueryParams, Raw, RawM,
57+ PlainText, Post, Put, QueryFlag, QueryParam, QueryParams, Raw,
6058 RemoteHost, ReqBody, SourceIO, StdMethod (..), Stream, Strict,
6159 UVerb, Union, Verb, WithStatus (..), addHeader)
6260import Servant.Server
63− (Context ((:.), EmptyContext), Handler, Server, ServerT, Tagged (..),
64− emptyServer, err401, err403, err404, hoistServer, respond, serve,
61+ (Context ((:.), EmptyContext), Handler, Server, Tagged (..),
62+ emptyServer, err401, err403, err404, respond, serve,
6563 serveWithContext)
6664import Servant.Test.ComprehensiveAPI
6765import qualified Servant.Types.SourceT as S
6866import Test.Hspec
6967 (Spec, context, describe, it, shouldBe, shouldContain)
7068import Test.Hspec.Wai
71− (get, matchHeaders, matchStatus, shouldRespondWith,
69+ (get, liftIO, matchHeaders, matchStatus, shouldRespondWith,
7270 with, (<:>))
7371import qualified Test.Hspec.Wai as THW
7472
@@ -104,7 +102,6 @@ spec = do
104102 reqBodySpec
105103 headerSpec
106104 rawSpec
107− rawMSpec
108105 alternativeSpec
109106 responseHeadersSpec
110107 uverbResponseHeadersSpec
@@ -613,46 +610,6 @@ rawSpec = do
613610
614611-- }}}
615612------------------------------------------------------------------------------
616−-- * rawMSpec {{{
617−------------------------------------------------------------------------------
618−
619−type RawMApi = "foo" :> RawM
620−
621−rawMApi :: Proxy RawMApi
622−rawMApi = Proxy
623−
624−rawMServer :: (Monad m, MonadIO m, Show a) => (Request -> m a) -> ServerT RawMApi m
625−rawMServer f req resp = liftIO . resp . responseLBS ok200 [] . cs . show =<< f req
626−
627−rawMSpec :: Spec
628−rawMSpec = do
629− describe "Servant.API.RawM" $ do
630− it "gives access to monadic context" $ do
631− flip runSession (serve rawMApi
632− (hoistServer rawMApi (flip runReaderT (42 :: Integer)) (rawMServer (const ask)))) $ do
633− response <- Network.Wai.Test.request defaultRequest{
634− pathInfo = ["foo"]
635− }
636− liftIO $ do
637− simpleBody response `shouldBe` "42"
638−
639− it "lets users throw servant errors" $ do
640− flip runSession (serve rawMApi (rawMServer (const $ throwError err404 >> pure (42 :: Integer)))) $ do
641− response <- Network.Wai.Test.request defaultRequest{
642− pathInfo = ["foo"]
643− }
644− liftIO $ do
645− statusCode (simpleStatus response) `shouldBe` 404
646−
647− it "gets the pathInfo modified" $ do
648− flip runSession (serve rawMApi (rawMServer (pure . pathInfo))) $ do
649− response <- Network.Wai.Test.request defaultRequest{
650− pathInfo = ["foo", "bar"]
651− }
652− liftIO $ do
653− simpleBody response `shouldBe` cs (show ["bar" :: String])
654−-- }}}
655−------------------------------------------------------------------------------
656613-- * alternativeSpec {{{
657614------------------------------------------------------------------------------
658615type AlternativeApi =