Safe Haskell | None |
---|---|
Language | Haskell2010 |
- withServantServer :: HasServer a `[]` => Proxy a -> IO (Server a) -> (BaseUrl -> IO r) -> IO r
- withServantServerAndContext :: HasServer a ctx => Proxy a -> Context ctx -> IO (Server a) -> (BaseUrl -> IO r) -> IO r
- serversEqual :: HasGenRequest a => Proxy a -> BaseUrl -> BaseUrl -> Args -> ResponseEquality ByteString -> Expectation
- serverSatisfies :: HasGenRequest a => Proxy a -> BaseUrl -> Args -> Predicates [Text] [Text] -> Expectation
- serverDoesntSatisfy :: HasGenRequest a => Proxy a -> BaseUrl -> Args -> Predicates [Text] [Text] -> Expectation
- noCheckStatus :: Request -> Request
- defManager :: Manager
Documentation
withServantServer :: HasServer a `[]` => Proxy a -> IO (Server a) -> (BaseUrl -> IO r) -> IO r Source
Start a servant application on an open port, run the provided function, then stop the application.
Since 0.0.0.0
withServantServerAndContext :: HasServer a ctx => Proxy a -> Context ctx -> IO (Server a) -> (BaseUrl -> IO r) -> IO r Source
Like withServantServer
, but allows passing in a Context
to the
application.
Since 0.0.0.0
serversEqual :: HasGenRequest a => Proxy a -> BaseUrl -> BaseUrl -> Args -> ResponseEquality ByteString -> Expectation Source
Check that the two servers running under the provided BaseUrl
s behave
identically by randomly generating arguments (captures, query params, request bodies,
headers, etc.) expected by the server. If, given the same request, the
response is not the same (according to the definition of ==
for the return
datatype), the Expectation
fails, printing the counterexample.
The Int
argument specifies maximum number of test cases to generate and
run.
Evidently, if the behaviour of the server is expected to be non-deterministic, this function may produce spurious failures
Since 0.0.0.0
serverSatisfies :: HasGenRequest a => Proxy a -> BaseUrl -> Args -> Predicates [Text] [Text] -> Expectation Source
Check that a server satisfies the set of properties specified.
Note that, rather than having separate tests for each property you'd like to test, you should generally prefer to combine all properties into a single test. This enables a more parsimonious generation of requests and responses with the same testing depth.
Example usage:
goodAPISpec = describe "my server" $ do it "follows best practices" $ do withServantServer api server $ \burl -> serverSatisfies api burl stdArgs (not500 <%> onlyJsonObjects <%> notAllowedContainsAllowHeader <%> mempty)
Since 0.0.0.0
serverDoesntSatisfy :: HasGenRequest a => Proxy a -> BaseUrl -> Args -> Predicates [Text] [Text] -> Expectation Source
noCheckStatus :: Request -> Request Source