From c6b4c652c91b57ae69aa320762591113ee6a58dc Mon Sep 17 00:00:00 2001 From: B3nnyL <13126965+B3nnyL@users.noreply.github.com> Date: Wed, 24 Aug 2022 12:08:12 +1000 Subject: [PATCH 1/4] feat: support verify with provider branch --- pact/cli/verify.py | 7 ++++++- pact/verifier.py | 4 +++- pact/verify_wrapper.py | 4 ++++ tests/cli/test_verify.py | 4 +++- tests/test_verify_wrapper.py | 8 ++++++-- 5 files changed, 22 insertions(+), 5 deletions(-) diff --git a/pact/cli/verify.py b/pact/cli/verify.py index 128b92a30..b388a5300 100644 --- a/pact/cli/verify.py +++ b/pact/cli/verify.py @@ -63,6 +63,10 @@ multiple=True, help='Tag to apply to the provider application version. ' 'May be specified multiple times.') +@click.option( + 'provider_version_branch', '--provider-version-branch', + default='', + help='The name of the branch the provider version belongs to.') @click.option( 'password', '--pact-broker-password', envvar='PACT_BROKER_PASSWORD', @@ -125,7 +129,7 @@ def main(pacts, base_url, pact_url, pact_urls, states_url, states_setup_url, username, broker_base_url, consumer_version_tag, consumer_version_selector, provider_version_tag, password, token, provider, headers, timeout, provider_app_version, publish_verification_results, verbose, log_dir, - log_level, enable_pending, include_wip_pacts_since): + log_level, enable_pending, include_wip_pacts_since, provider_version_branch): """ Verify one or more contracts against a provider service. @@ -181,6 +185,7 @@ def main(pacts, base_url, pact_url, pact_urls, states_url, states_setup_url, 'consumer_tags': list(consumer_version_tag), 'consumer_selectors': list(consumer_version_selector), 'provider_tags': list(provider_version_tag), + 'provider_version_branch': provider_version_branch, 'provider_states_setup_url': states_setup_url, } diff --git a/pact/verifier.py b/pact/verifier.py index 447a756e3..bd73c5d28 100644 --- a/pact/verifier.py +++ b/pact/verifier.py @@ -108,6 +108,7 @@ def extract_params(self, **kwargs): publish_verification_results = kwargs.get('publish_verification_results', None) raw_consumer_selectors = kwargs.get('consumer_version_selectors', []) consumer_selectors = self._build_consumer_selectors(raw_consumer_selectors) + provider_version_branch = kwargs.get('provider_version_branch') options = { 'log_dir': log_dir, @@ -121,7 +122,8 @@ def extract_params(self, **kwargs): 'verbose': verbose, 'provider_app_version': provider_app_version, 'consumer_selectors': consumer_selectors, - 'publish_verification_results': publish_verification_results + 'publish_verification_results': publish_verification_results, + 'provider_version_branch': provider_version_branch } return self.filter_empty_options(**options) diff --git a/pact/verify_wrapper.py b/pact/verify_wrapper.py index 565e38f45..1f27b0459 100644 --- a/pact/verify_wrapper.py +++ b/pact/verify_wrapper.py @@ -143,6 +143,7 @@ def call_verify( self._validate_input(pacts, **kwargs) provider_app_version = kwargs.get('provider_app_version') + provider_version_branch = kwargs.get('provider_version_branch') options = { '--provider-base-url': provider_base_url, '--provider': provider, @@ -180,6 +181,9 @@ def call_verify( if include_wip_pacts_since: command.extend(['--include-wip-pacts-since={}'.format(include_wip_pacts_since)]) + if provider_version_branch: + command.extend(["--provider-version-branch={}".format(provider_version_branch)]) + headers = kwargs.get('custom_provider_headers', []) for header in headers: command.extend(['{}={}'.format('--custom-provider-header', header)]) diff --git a/tests/cli/test_verify.py b/tests/cli/test_verify.py index b95c92a36..3c242a941 100644 --- a/tests/cli/test_verify.py +++ b/tests/cli/test_verify.py @@ -294,6 +294,7 @@ def test_all_broker_options(self, mock_wrapper): '--verbose', '--enable-pending', '--include-wip-pacts-since=2018-01-01', + '--provider-version-branch=provider-branch' ]) self.assertEqual(result.exit_code, 0, result.output) @@ -315,7 +316,8 @@ def test_all_broker_options(self, mock_wrapper): timeout=60, verbose=True, enable_pending=True, - include_wip_pacts_since='2018-01-01') + include_wip_pacts_since='2018-01-01', + provider_version_branch='provider-branch') @patch("pact.verify_wrapper.isfile", return_value=True) def test_publishing_missing_version(self, mock_isfile): diff --git a/tests/test_verify_wrapper.py b/tests/test_verify_wrapper.py index 181439ea1..46873d24f 100644 --- a/tests/test_verify_wrapper.py +++ b/tests/test_verify_wrapper.py @@ -55,7 +55,8 @@ def setUp(self): '--consumer-version-tag=dev', '--no-enable-pending', '--provider-version-tag=dev', - '--provider-version-tag=qa'] + '--provider-version-tag=qa', + '--provider-version-branch=provider-branch'] def assertProcess(self, *expected): self.assertEqual(self.mock_Popen.call_count, 1) @@ -63,6 +64,8 @@ def assertProcess(self, *expected): actual = process_call[1][0] self.assertEqual(actual[0], VERIFIER_PATH) + print(actual) + print(expected) self.assertEqual(len(actual), len(expected) + 1) self.assertEqual(set(actual[1:]), set(expected)) self.assertEqual(set(expected), set(actual[1:])) @@ -154,7 +157,8 @@ def test_uses_broker_if_no_pacts_and_provider_required(self): broker_token='token', broker_url='http://broker', consumer_tags=['prod', 'dev'], - provider_tags=['dev', 'qa']) + provider_tags=['dev', 'qa'], + provider_version_branch='provider-branch') self.assertProcess(*self.broker_call) self.assertEqual(result, 0) From eee7f1ffe7abf62bc8c919af7d73311896d07edf Mon Sep 17 00:00:00 2001 From: B3nnyL <13126965+B3nnyL@users.noreply.github.com> Date: Wed, 24 Aug 2022 12:08:24 +1000 Subject: [PATCH 2/4] chore: update lint setting --- .flake8 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.flake8 b/.flake8 index 52bdc4fba..2a063f543 100644 --- a/.flake8 +++ b/.flake8 @@ -1,5 +1,5 @@ [flake8] ignore = E226,E302,E41,W503 max-line-length = 160 -max-complexity = 10 +max-complexity = 15 exclude = .git,venv,.venv,.tox,.pytest_cache,.direnv \ No newline at end of file From 03b9a8c3e84f81fcc374ea2f10a91cff22f77e67 Mon Sep 17 00:00:00 2001 From: B3nnyL <13126965+B3nnyL@users.noreply.github.com> Date: Wed, 24 Aug 2022 13:07:25 +1000 Subject: [PATCH 3/4] chore: cleanup --- tests/test_verify_wrapper.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/test_verify_wrapper.py b/tests/test_verify_wrapper.py index 46873d24f..8ec63eaf7 100644 --- a/tests/test_verify_wrapper.py +++ b/tests/test_verify_wrapper.py @@ -64,8 +64,6 @@ def assertProcess(self, *expected): actual = process_call[1][0] self.assertEqual(actual[0], VERIFIER_PATH) - print(actual) - print(expected) self.assertEqual(len(actual), len(expected) + 1) self.assertEqual(set(actual[1:]), set(expected)) self.assertEqual(set(expected), set(actual[1:])) From 59e07077b84247df56675475244b224db7ce22db Mon Sep 17 00:00:00 2001 From: B3nnyL <13126965+B3nnyL@users.noreply.github.com> Date: Wed, 24 Aug 2022 13:11:06 +1000 Subject: [PATCH 4/4] chore: update readme verifier section --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index f53125ca8..bdb604c54 100644 --- a/README.md +++ b/README.md @@ -381,6 +381,10 @@ May be specified multiple times. Read more about selectors [here](https://docs.p Tag to apply to the provider application version. May be specified multiple times. +###### --provider-version-branch + +Branch to apply to the provider application version. + ###### --custom-provider-header Header to add to provider state set up and pact verification requests e.g.`Authorization: Basic cGFjdDpwYWN0`