Skip to content

Commit c778c71

Browse files
Merge pull request #212 from pact-foundation/fix/verify_in_provider
2 parents 2c8779b + ea0b64a commit c778c71

File tree

6 files changed

+55
-18
lines changed

6 files changed

+55
-18
lines changed

examples/e2e/conftest.py

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ def pytest_addoption(parser):
1414
help="The url to our provider."
1515
)
1616

17+
parser.addoption(
18+
"--run-broker", type=bool, action="store",
19+
help="Whether to run broker in this test or not."
20+
)
21+
1722
# This fixture is to simulate a managed Pact Broker or Pactflow account
1823
# Do not do this yourself but setup one of the above
1924
# https://github.com/pact-foundation/pact_broker
@@ -27,13 +32,19 @@ def broker(request):
2732
yield
2833
return
2934

30-
print('Starting broker')
31-
with DockerCompose("../broker",
32-
compose_file_name=["docker-compose.yml"],
33-
pull=True) as compose:
35+
run_broker = request.config.getoption('--run-broker')
3436

35-
stdout, stderr = compose.get_logs()
36-
if stderr:
37-
print("Errors\\n:{}".format(stderr))
38-
print(stdout)
37+
if not run_broker:
3938
yield
39+
return
40+
else:
41+
print('Starting broker')
42+
with DockerCompose("../broker",
43+
compose_file_name=["docker-compose.yml"],
44+
pull=True) as compose:
45+
46+
stdout, stderr = compose.get_logs()
47+
if stderr:
48+
print("Errors\\n:{}".format(stderr))
49+
print(stdout)
50+
yield

examples/e2e/run_pytest.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ trap teardown EXIT
1313

1414
sleep 3
1515

16-
pytest contract_tests --publish-pact 1
16+
pytest tests --run-broker True --publish-pact 1
1717

1818
teardown
1919

examples/e2e/tests/provider/test_provider.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ def default_opts():
2929
return {
3030
'broker_username': PACT_BROKER_USERNAME,
3131
'broker_password': PACT_BROKER_PASSWORD,
32-
'broker_url': PACT_BROKER_URL
32+
'broker_url': PACT_BROKER_URL,
33+
'publish_version': '3',
34+
'publish_verification_results': True
3335
}
3436

3537

pact/cli/verify.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ def main(pacts, base_url, pact_url, pact_urls, states_url, states_setup_url,
164164
raise click.Abort()
165165

166166
if publish_verification_results:
167-
publish_results(error, provider_app_version)
167+
validate_publish(error, provider_app_version)
168168

169169
options = {
170170
'broker_password': password,
@@ -196,7 +196,7 @@ def main(pacts, base_url, pact_url, pact_urls, states_url, states_setup_url,
196196
sys.exit(success)
197197

198198

199-
def publish_results(error, provider_app_version):
199+
def validate_publish(error, provider_app_version):
200200
"""Publish results to broker."""
201201
if not provider_app_version:
202202
click.echo(

pact/verifier.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ def verify_with_broker(self, enable_pending=False, include_wip_pacts_since=None,
7070
broker_url ([String]): url of broker
7171
enable_pending ([Boolean])
7272
include_wip_pacts_since ([String])
73+
publish_version ([String])
7374
7475
"""
7576
broker_username = kwargs.get('broker_username', None)
@@ -103,8 +104,8 @@ def extract_params(self, **kwargs):
103104
provider_tags = kwargs.get('provider_tags', [])
104105
states_setup_url = kwargs.get('provider_states_setup_url', None)
105106
verbose = kwargs.get('verbose', False)
106-
publish_version = kwargs.get('publish_version', None)
107-
107+
provider_app_version = kwargs.get('publish_version', None)
108+
publish_verification_results = kwargs.get('publish_verification_results', None)
108109
raw_consumer_selectors = kwargs.get('consumer_version_selectors', [])
109110
consumer_selectors = self._build_consumer_selectors(raw_consumer_selectors)
110111

@@ -118,8 +119,9 @@ def extract_params(self, **kwargs):
118119
'provider_tags': list(provider_tags),
119120
'provider_states_setup_url': states_setup_url,
120121
'verbose': verbose,
121-
'publish_version': publish_version,
122-
'consumer_selectors': consumer_selectors
122+
'provider_app_version': provider_app_version,
123+
'consumer_selectors': consumer_selectors,
124+
'publish_verification_results': publish_verification_results
123125
}
124126
return self.filter_empty_options(**options)
125127

tests/test_verifier.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def test_publish_on_success(self, mock_path_exists, mock_wrapper):
8989
provider_base_url='http://localhost:8888',
9090
log_level='INFO',
9191
verbose=False,
92-
publish_version='1.0.0',
92+
provider_app_version='1.0.0',
9393
enable_pending=False,
9494
include_wip_pacts_since=None)
9595

@@ -171,6 +171,28 @@ def test_verifier_with_broker(self, mock_wrapper):
171171
enable_pending=False,
172172
include_wip_pacts_since=None)
173173

174+
@patch("pact.verify_wrapper.VerifyWrapper.call_verify")
175+
def test_verifier_and_pubish_with_broker(self, mock_wrapper):
176+
177+
mock_wrapper.return_value = (True, 'some value')
178+
179+
self.default_opts['publish_verification_results'] = True
180+
output, _ = self.verifier.verify_with_broker(**self.default_opts)
181+
182+
self.assertTrue(output)
183+
assertVerifyCalled(mock_wrapper,
184+
provider='test_provider',
185+
provider_base_url='http://localhost:8888',
186+
broker_password=self.broker_password,
187+
broker_username=self.broker_username,
188+
broker_token='token',
189+
broker_url=self.broker_url,
190+
log_level='INFO',
191+
verbose=False,
192+
enable_pending=False,
193+
include_wip_pacts_since=None,
194+
publish_verification_results=True)
195+
174196
@patch("pact.verify_wrapper.VerifyWrapper.call_verify")
175197
def test_verifier_with_broker_passes_consumer_selctors(self, mock_wrapper):
176198

@@ -216,7 +238,7 @@ def test_publish_on_success(self, mock_path_exists, mock_wrapper):
216238
broker_url=self.broker_url,
217239
log_level='INFO',
218240
verbose=False,
219-
publish_version='1.0.0',
241+
provider_app_version='1.0.0',
220242
enable_pending=False,
221243
include_wip_pacts_since=None)
222244

0 commit comments

Comments
 (0)