Skip to content

Commit d112a4a

Browse files
Merge pull request #134 from elliottmurray/multiple-custom-provider-header
Added multiple click options for custom headers
2 parents 254ffc5 + 58f8e6b commit d112a4a

File tree

2 files changed

+32
-20
lines changed

2 files changed

+32
-20
lines changed

pact/verify.py

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,9 @@
7777
default='',
7878
help='Retrieve the latest pacts for this provider')
7979
@click.option(
80-
'header', '--custom-provider-header',
80+
'headers', '--custom-provider-header',
8181
envvar='CUSTOM_PROVIDER_HEADER',
82+
multiple=True,
8283
help='Header to add to provider state set up and '
8384
'pact verification requests. '
8485
'eg \'Authorization: Basic cGFjdDpwYWN0\'. '
@@ -105,7 +106,7 @@
105106
help='Toggle verbose logging, defaults to False.')
106107
def main(pacts, base_url, pact_url, pact_urls, states_url, states_setup_url,
107108
username, broker_base_url, consumer_version_tag, provider_version_tag,
108-
password, token, provider, header, timeout, provider_app_version,
109+
password, token, provider, headers, timeout, provider_app_version,
109110
publish_verification_results, verbose):
110111
"""
111112
Verify one or more contracts against a provider service.
@@ -150,30 +151,22 @@ def main(pacts, base_url, pact_url, pact_urls, states_url, states_setup_url,
150151
'--pact-broker-base-url': broker_base_url,
151152
'--provider': provider,
152153
'--broker-password': password,
153-
'--broker-token': token,
154-
'--custom-provider-header': header,
154+
'--broker-token': token
155155
}
156156

157157
command = [VERIFIER_PATH]
158158
command.extend(all_pact_urls)
159159
command.extend(['{}={}'.format(k, v) for k, v in options.items() if v])
160160

161161
for tag in consumer_version_tag:
162-
command.extend(['--consumer-version-tag', tag])
162+
command.extend(["--consumer-version-tag={}".format(tag)])
163163
for tag in provider_version_tag:
164-
command.extend(['--provider-version-tag', tag])
164+
command.extend(["--provider-version-tag={}".format(tag)])
165+
for header in headers:
166+
command.extend(["--custom-provider-header={}".format(header)])
165167

166168
if publish_verification_results:
167-
if not provider_app_version:
168-
click.echo(
169-
error
170-
+ 'Provider application version is required '
171-
+ 'to publish verification results to broker'
172-
)
173-
raise click.Abort()
174-
command.extend(["--provider-app-version",
175-
provider_app_version,
176-
"--publish-verification-results"])
169+
publish_results(error, provider_app_version, command)
177170

178171
if verbose:
179172
command.extend(['--verbose'])
@@ -188,6 +181,20 @@ def main(pacts, base_url, pact_url, pact_urls, states_url, states_setup_url,
188181
sys.exit(p.returncode)
189182

190183

184+
def publish_results(error, provider_app_version, command):
185+
"""Publish results to broker."""
186+
if not provider_app_version:
187+
click.echo(
188+
error
189+
+ 'Provider application version is required '
190+
+ 'to publish verification results to broker'
191+
)
192+
raise click.Abort()
193+
command.extend(["--provider-app-version",
194+
provider_app_version,
195+
"--publish-verification-results"])
196+
197+
191198
def broker_not_provided(broker_base_url, provider):
192199
"""Check if broker not provided."""
193200
return (broker_base_url == '' or provider == '')

tests/test_verify.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ def setUp(self):
6060
def assertProcess(self, *expected):
6161
self.assertEqual(self.mock_Popen.call_count, 1)
6262
call = self.mock_Popen.mock_calls[0]
63+
6364
actual = call[1][0]
6465
self.assertEqual(actual[0], VERIFIER_PATH)
6566
self.assertEqual(len(actual), len(expected) + 1)
@@ -148,6 +149,8 @@ def test_all_url_options(self):
148149
'./pacts/consumer-provider2.json',
149150
'--pact-url=./pacts/consumer-provider3.json',
150151
'--pact-url=./pacts/consumer-provider4.json',
152+
'--custom-provider-header=Authorization: Basic cGFj',
153+
'--custom-provider-header=CustomHeader: somevalue',
151154
'--provider-states-setup-url=http://localhost/provider-states/set',
152155
'--pact-broker-username=user',
153156
'--pact-broker-password=pass',
@@ -168,6 +171,8 @@ def test_all_url_options(self):
168171
'./pacts/consumer-provider4.json',
169172
'./pacts/consumer-provider.json',
170173
'./pacts/consumer-provider2.json',
174+
'--custom-provider-header=Authorization: Basic cGFj',
175+
'--custom-provider-header=CustomHeader: somevalue',
171176
'--provider-base-url=http://localhost',
172177
'--provider-states-setup-url=http://localhost/provider-states/set',
173178
'--broker-username=user',
@@ -204,10 +209,10 @@ def test_all_broker_options(self):
204209
self.assertEqual(self.mock_Popen.call_count, 1)
205210
self.assertProcess(
206211
'--pact-broker-base-url=http://localhost/broker',
207-
'--consumer-version-tag', 'prod',
208-
'--consumer-version-tag', 'dev',
209-
'--provider-version-tag', 'dev',
210-
'--provider-version-tag', 'qa',
212+
'--consumer-version-tag=prod',
213+
'--consumer-version-tag=dev',
214+
'--provider-version-tag=dev',
215+
'--provider-version-tag=qa',
211216
'--provider=provider_app',
212217
'--provider-base-url=http://localhost',
213218
'--provider-states-setup-url=http://localhost/provider-states/set',

0 commit comments

Comments
 (0)