| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Servant.QuickCheck.Internal.QuickCheck
- 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 BaseUrls 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