Introduction¶
> Simple server to provide an endpoint used by pact to generate a provider state
Installation¶
Install the package:
pip install pact_state_provider
Client¶
Entrypoint pact-state-provider
:
Usage: pact-state-provider [OPTIONS]
Start the state provider server on the specified host and port.
Options:
--base-module TEXT Module containing the state providers.
--host TEXT Host for the endpoint. Default: 127.0.0.1
--port INTEGER Port for the endpoint. Default: 1235
--log-level TEXT Log Level Name (DEBUG, INFO, ...). Default: INFO
--help Show this message and exit.
TL;DR¶
Example:
$ pact-state-provider --base-module my_provider.states
$ http http://127.0.0.1:1235 consumer=TestConsumer state="user exists" --json
DEBUG: Importing my_provider.states
DEBUG: Getting function "user_exists"
-> "my_provider.states.user_exists('TestConsumer')" is called
Not Long Enough;Will Read¶
When verifying contracts with Pact a
state provider is called for the particular consumer with the state requested. A consumer
TestConsumer
with a contract starting with given('user exists')
requests the
configured endpoint with the payload:
{
'consumer': 'TestConsumer',
'state': 'user exists'
}
In order to execute the specific provider functions without having to implement a dedicated
endpoint on the provider or a dedicated application with provider specific code
pact-state-provider
provides a simple http server endpoint which calls an existing
module function based on the request payload.
In the given example a function called user_exists
(invalid characters are translated to
underscores) will be executed on the specified base module (--base-module
parameter).
This gives the user to maintain the state provider code in the actual provider codebase, but easily have an endpoint to use with pact.