diff --git a/pact/cli/verify.py b/pact/cli/verify.py index b3fa87091..7d4e64c16 100644 --- a/pact/cli/verify.py +++ b/pact/cli/verify.py @@ -188,7 +188,7 @@ def main(pacts, base_url, pact_url, pact_urls, states_url, states_setup_url, options = dict(filter(lambda item: item[1] != '', options.items())) options = dict(filter(lambda item: is_empty_list(item), options.items())) - success, logs = VerifyWrapper().call_verify(*all_pact_urls, + success, logs = VerifyWrapper().verify(*all_pact_urls, provider=provider, provider_base_url=base_url, enable_pending=enable_pending, diff --git a/pact/ffi/ffi_verifier.py b/pact/ffi/ffi_verifier.py index 4b034b601..6381123e0 100644 --- a/pact/ffi/ffi_verifier.py +++ b/pact/ffi/ffi_verifier.py @@ -15,6 +15,19 @@ def version(self): result = lib.pactffi_version() return ffi.string(result).decode('utf-8') + + def verify(self): + """Call verify method.""" + ffi = FFI() + ffi.cdef(""" + char *pactffi_verify(void); + """) + lib = self._load_ffi_library(ffi) + result = lib.pactffi_version() + return ffi.string(result).decode('utf-8') + +# pactffi_verify + def _load_ffi_library(self, ffi): """Load the right library.""" target_platform = platform.platform().lower() diff --git a/pact/verifier.py b/pact/verifier.py index 135f609b7..285225585 100644 --- a/pact/verifier.py +++ b/pact/verifier.py @@ -56,7 +56,7 @@ def verify_pacts(self, *pacts, enable_pending=False, include_wip_pacts_since=Non # rerun_command() # env = options = self.extract_params(**kwargs) - success, logs = VerifyWrapper().call_verify(*pacts, + success, logs = VerifyWrapper().verify(*pacts, provider=self.provider, provider_base_url=self.provider_base_url, enable_pending=enable_pending, @@ -90,7 +90,7 @@ def verify_with_broker(self, enable_pending=False, include_wip_pacts_since=None, } options.update(self.extract_params(**kwargs)) - success, logs = VerifyWrapper().call_verify(provider=self.provider, + success, logs = VerifyWrapper().verify(provider=self.provider, provider_base_url=self.provider_base_url, enable_pending=enable_pending, include_wip_pacts_since=include_wip_pacts_since, diff --git a/pact/verify_wrapper.py b/pact/verify_wrapper.py index 9443d874a..88955c0ee 100644 --- a/pact/verify_wrapper.py +++ b/pact/verify_wrapper.py @@ -133,7 +133,7 @@ def _validate_input(self, pacts, **kwargs): if len(pacts) == 0 and not self._broker_present(**kwargs): raise PactException('Pact urls or Pact broker required') - def call_verify( + def verify( self, *pacts, provider_base_url, provider, enable_pending=False, include_wip_pacts_since=None, **kwargs ): @@ -196,16 +196,6 @@ def call_verify( return result.returncode, logs - def publish_results(self, provider_app_version, command): - """Publish results to broker.""" - if not provider_app_version: - # todo implement - raise Exception('todo') - - command.extend(["--provider-app-version", - provider_app_version, - "--publish-verification-results"]) - def version(self): """Publish version info.""" return '0.0.0' diff --git a/tests/cli/test_verify.py b/tests/cli/test_verify.py index b95c92a36..70ddc6861 100644 --- a/tests/cli/test_verify.py +++ b/tests/cli/test_verify.py @@ -69,7 +69,7 @@ def test_provider_base_url_is_required(self): self.assertEqual(result.exit_code, 2) self.assertIn('--provider-base-url', result.output) - @patch("pact.verify_wrapper.VerifyWrapper.call_verify") + @patch("pact.verify_wrapper.VerifyWrapper.verify") def test_pact_urls_or_broker_are_required(self, mock_wrapper): result = self.runner.invoke( verify.main, ['--provider-base-url=http://localhost']) @@ -78,7 +78,7 @@ def test_pact_urls_or_broker_are_required(self, mock_wrapper): self.assertIn('at least one', result.output) mock_wrapper.assert_not_called() - @patch("pact.verify_wrapper.VerifyWrapper.call_verify") + @patch("pact.verify_wrapper.VerifyWrapper.verify") def test_broker_url_but_no_provider_required(self, mock_wrapper): result = self.runner.invoke( verify.main, ['--provider-base-url=http://localhost', @@ -87,17 +87,17 @@ def test_broker_url_but_no_provider_required(self, mock_wrapper): mock_wrapper.assert_not_called() self.assertEqual(result.exit_code, 1) - @patch("pact.verify_wrapper.VerifyWrapper.call_verify") + @patch("pact.verify_wrapper.VerifyWrapper.verify") @patch("pact.verify_wrapper.isfile", return_value=True) def test_wrapper_error_code_returned(self, mock_isfile, mock_wrapper): mock_wrapper.return_value = 8, None # rnd number to indicate retval returned result = self.runner.invoke(verify.main, self.all_url_opts) - self.assertFalse(mock_wrapper.call_verify.called) + self.assertFalse(mock_wrapper.verify.called) self.assertEqual(result.exit_code, 8) - @patch("pact.verify_wrapper.VerifyWrapper.call_verify") + @patch("pact.verify_wrapper.VerifyWrapper.verify") @patch("pact.verify_wrapper.isfile", return_value=True) def test_successful_verification(self, mock_isfile, mock_wrapper): mock_wrapper.return_value = 0, None # rnd number to indicate retval returned @@ -115,7 +115,7 @@ def test_successful_verification(self, mock_isfile, mock_wrapper): publish_verification_results=False, include_wip_pacts_since=None) - @patch("pact.verify_wrapper.VerifyWrapper.call_verify") + @patch("pact.verify_wrapper.VerifyWrapper.verify") @patch("pact.verify_wrapper.isfile", return_value=True) def test_broker_url_and_provider_required(self, mock_isfile, mock_wrapper): mock_wrapper.return_value = 0, None @@ -125,7 +125,7 @@ def test_broker_url_and_provider_required(self, mock_isfile, mock_wrapper): mock_wrapper.assert_called() self.assertEqual(result.exit_code, 0) - @patch("pact.verify_wrapper.VerifyWrapper.call_verify") + @patch("pact.verify_wrapper.VerifyWrapper.verify") @patch("pact.verify_wrapper.isfile", return_value=True) def test_pact_url_param_supported(self, mock_isfile, mock_wrapper): mock_wrapper.return_value = 0, None @@ -146,7 +146,7 @@ def test_pact_url_param_supported(self, mock_isfile, mock_wrapper): include_wip_pacts_since=None) self.assertEqual(result.exit_code, 0) - @patch("pact.verify_wrapper.VerifyWrapper.call_verify") + @patch("pact.verify_wrapper.VerifyWrapper.verify") @patch("pact.verify_wrapper.isfile", return_value=True) def test_pact_urls_param_supported(self, mock_isfile, mock_wrapper): mock_wrapper.return_value = 0, None @@ -169,7 +169,7 @@ def test_pact_urls_param_supported(self, mock_isfile, mock_wrapper): include_wip_pacts_since=None) self.assertEqual(result.exit_code, 0) - @patch("pact.verify_wrapper.VerifyWrapper.call_verify") + @patch("pact.verify_wrapper.VerifyWrapper.verify") @patch("pact.verify_wrapper.isfile", return_value=False) def test_local_pact_urls_must_exist(self, mock_isfile, mock_wrapper): mock_wrapper.return_value = 0, None @@ -177,9 +177,9 @@ def test_local_pact_urls_must_exist(self, mock_isfile, mock_wrapper): result = self.runner.invoke(verify.main, self.all_url_opts) self.assertEqual(result.exit_code, 1) self.assertIn('./pacts/consumer-provider.json', result.output) - mock_wrapper.call_verify.assert_not_called + mock_wrapper.verify.assert_not_called - @patch("pact.verify_wrapper.VerifyWrapper.call_verify") + @patch("pact.verify_wrapper.VerifyWrapper.verify") @patch("pact.verify_wrapper.isfile", return_value=True) def test_failed_verification(self, mock_isfile, mock_wrapper): mock_wrapper.return_value = 3, None @@ -198,7 +198,7 @@ def test_failed_verification(self, mock_isfile, mock_wrapper): @patch.dict(os.environ, {'PACT_BROKER_PASSWORD': 'pwd', 'PACT_BROKER_USERNAME': 'broker_user', 'PACT_BROKER_BASE_URL': 'http://broker/'}) - @patch("pact.verify_wrapper.VerifyWrapper.call_verify") + @patch("pact.verify_wrapper.VerifyWrapper.verify") @patch("pact.verify_wrapper.isfile", return_value=True) def test_broker_creds_from_env_var(self, mock_isfile, mock_wrapper): mock_wrapper.return_value = 0, None @@ -219,7 +219,7 @@ def test_broker_creds_from_env_var(self, mock_isfile, mock_wrapper): publish_verification_results=False, include_wip_pacts_since=None) - @patch("pact.verify_wrapper.VerifyWrapper.call_verify") + @patch("pact.verify_wrapper.VerifyWrapper.verify") @patch("pact.verify_wrapper.isfile", return_value=True) def test_all_url_options(self, mock_isfile, mock_wrapper): mock_wrapper.return_value = 0, None @@ -270,7 +270,7 @@ def test_all_url_options(self, mock_isfile, mock_wrapper): publish_verification_results=False, include_wip_pacts_since=None) - @patch("pact.verify_wrapper.VerifyWrapper.call_verify") + @patch("pact.verify_wrapper.VerifyWrapper.verify") def test_all_broker_options(self, mock_wrapper): mock_wrapper.return_value = 0, None result = self.runner.invoke(verify.main, [ diff --git a/tests/test_verifier.py b/tests/test_verifier.py index 0398c689e..961ad63aa 100644 --- a/tests/test_verifier.py +++ b/tests/test_verifier.py @@ -22,12 +22,12 @@ def setUp(self): provider_base_url="http://localhost:8888") self.mock_wrapper = patch.object( - VerifyWrapper, 'call_verify').start() + VerifyWrapper, 'verify').start() def test_version(self): self.assertEqual(self.verifier.version(), "0.0.0") - @patch("pact.verify_wrapper.VerifyWrapper.call_verify") + @patch("pact.verify_wrapper.VerifyWrapper.verify") @patch('pact.verifier.path_exists', return_value=True) def test_verifier_with_provider_and_files(self, mock_path_exists, mock_wrapper): mock_wrapper.return_value = (True, 'some logs') @@ -47,7 +47,7 @@ def test_verifier_with_provider_and_files(self, mock_path_exists, mock_wrapper): enable_pending=False, include_wip_pacts_since=None) - @patch("pact.verify_wrapper.VerifyWrapper.call_verify") + @patch("pact.verify_wrapper.VerifyWrapper.verify") @patch('pact.verifier.path_exists', return_value=True) def test_verifier_with_provider_and_files_passes_consumer_selctors(self, mock_path_exists, mock_wrapper): mock_wrapper.return_value = (True, 'some logs') @@ -79,7 +79,7 @@ def test_verifier_with_provider_and_files_passes_consumer_selctors(self, mock_pa def test_validate_on_publish_results(self): self.assertRaises(Exception, self.verifier.verify_pacts, 'path/to/pact1', publish=True) - @patch("pact.verify_wrapper.VerifyWrapper.call_verify") + @patch("pact.verify_wrapper.VerifyWrapper.verify") @patch('pact.verifier.path_exists', return_value=True) def test_publish_on_success(self, mock_path_exists, mock_wrapper): mock_wrapper.return_value = (True, 'some logs') @@ -104,7 +104,7 @@ def test_raises_error_on_missing_pact_files(self, mock_path_exists): mock_path_exists.assert_called_with('path/to/pact2') - @patch("pact.verify_wrapper.VerifyWrapper.call_verify", return_value=(0, None)) + @patch("pact.verify_wrapper.VerifyWrapper.verify", return_value=(0, None)) @patch('pact.verifier.expand_directories', return_value=['./pacts/pact1', './pacts/pact2']) @patch('pact.verifier.path_exists', return_value=True) def test_expand_directories_called_for_pacts(self, mock_path_exists, mock_expand_dir, mock_wrapper): @@ -113,7 +113,7 @@ def test_expand_directories_called_for_pacts(self, mock_path_exists, mock_expand mock_expand_dir.assert_called_once() - @patch('pact.verify_wrapper.VerifyWrapper.call_verify', return_value=(0, None)) + @patch('pact.verify_wrapper.VerifyWrapper.verify', return_value=(0, None)) def test_passes_enable_pending_flag_value(self, mock_wrapper): for value in (True, False): with self.subTest(value=value): @@ -124,7 +124,7 @@ def test_passes_enable_pending_flag_value(self, mock_wrapper): mock_wrapper.call_args.kwargs, ) - @patch('pact.verify_wrapper.VerifyWrapper.call_verify', return_value=(0, None)) + @patch('pact.verify_wrapper.VerifyWrapper.verify', return_value=(0, None)) @patch('pact.verifier.path_exists', return_value=True) def test_passes_include_wip_pacts_since_value(self, mock_path_exists, mock_wrapper): self.verifier.verify_pacts('any.json', include_wip_pacts_since='2018-01-01') @@ -142,7 +142,7 @@ def setUp(self): provider_base_url="http://localhost:8888") self.mock_wrapper = patch.object( - VerifyWrapper, 'call_verify').start() + VerifyWrapper, 'verify').start() self.broker_username = 'broker_username' self.broker_password = 'broker_password' self.broker_url = 'http://broker' @@ -154,7 +154,7 @@ def setUp(self): 'broker_token': 'token' } - @patch("pact.verify_wrapper.VerifyWrapper.call_verify") + @patch("pact.verify_wrapper.VerifyWrapper.verify") def test_verifier_with_broker(self, mock_wrapper): mock_wrapper.return_value = (True, 'some value') @@ -174,7 +174,7 @@ def test_verifier_with_broker(self, mock_wrapper): enable_pending=False, include_wip_pacts_since=None) - @patch("pact.verify_wrapper.VerifyWrapper.call_verify") + @patch("pact.verify_wrapper.VerifyWrapper.verify") def test_verifier_and_pubish_with_broker(self, mock_wrapper): mock_wrapper.return_value = (True, 'some value') @@ -197,7 +197,7 @@ def test_verifier_and_pubish_with_broker(self, mock_wrapper): provider_app_version='1.0.0', ) - @patch("pact.verify_wrapper.VerifyWrapper.call_verify") + @patch("pact.verify_wrapper.VerifyWrapper.verify") def test_verifier_with_broker_passes_consumer_selctors(self, mock_wrapper): mock_wrapper.return_value = (True, 'some value') @@ -226,7 +226,7 @@ def test_verifier_with_broker_passes_consumer_selctors(self, mock_wrapper): consumer_selectors=['{"tag": "main", "latest": true}', '{"tag": "test", "latest": false}']) - @patch("pact.verify_wrapper.VerifyWrapper.call_verify") + @patch("pact.verify_wrapper.VerifyWrapper.verify") @patch('pact.verifier.path_exists', return_value=True) def test_publish_on_success(self, mock_path_exists, mock_wrapper): mock_wrapper.return_value = (True, 'some logs') @@ -246,7 +246,7 @@ def test_publish_on_success(self, mock_path_exists, mock_wrapper): enable_pending=False, include_wip_pacts_since=None) - @patch('pact.verify_wrapper.VerifyWrapper.call_verify', return_value=(0, None)) + @patch('pact.verify_wrapper.VerifyWrapper.verify', return_value=(0, None)) def test_passes_enable_pending_flag_value(self, mock_wrapper): for value in (True, False): with self.subTest(value=value): @@ -257,7 +257,7 @@ def test_passes_enable_pending_flag_value(self, mock_wrapper): mock_wrapper.call_args.kwargs, ) - @patch('pact.verify_wrapper.VerifyWrapper.call_verify', return_value=(0, None)) + @patch('pact.verify_wrapper.VerifyWrapper.verify', return_value=(0, None)) @patch('pact.verifier.path_exists', return_value=True) def test_passes_include_wip_pacts_since_value(self, mock_path_exists, mock_wrapper): self.verifier.verify_with_broker(include_wip_pacts_since='2018-01-01') diff --git a/tests/test_verify_wrapper.py b/tests/test_verify_wrapper.py index 3a9be04f1..029504cc4 100644 --- a/tests/test_verify_wrapper.py +++ b/tests/test_verify_wrapper.py @@ -78,14 +78,14 @@ def test_pact_urls_or_broker_required(self): wrapper = VerifyWrapper() with self.assertRaises(PactException) as context: - wrapper.call_verify(provider='provider', provider_base_url='http://localhost') + wrapper.verify(provider='provider', provider_base_url='http://localhost') self.assertTrue('Pact urls or Pact broker required' in context.exception.message) def test_broker_without_authentication_can_be_used(self): self.mock_Popen.return_value.returncode = 0 wrapper = VerifyWrapper() - wrapper.call_verify( + wrapper.verify( provider='provider', provider_base_url='http://localhost', broker_url='http://broker.example.com' ) self.assertProcess(*[ @@ -98,7 +98,7 @@ def test_pact_urls_provided(self): self.mock_Popen.return_value.returncode = 0 wrapper = VerifyWrapper() - result, output = wrapper.call_verify('./pacts/consumer-provider.json', + result, output = wrapper.verify('./pacts/consumer-provider.json', './pacts/consumer-provider2.json', provider='test_provider', provider_base_url='http://localhost') @@ -111,7 +111,7 @@ def test_all_url_options(self, mock_isfile): self.mock_Popen.return_value.returncode = 0 wrapper = VerifyWrapper() - result, output = wrapper.call_verify('./pacts/consumer-provider5.json', + result, output = wrapper.verify('./pacts/consumer-provider5.json', './pacts/consumer-provider3.json', provider_base_url='http://localhost', provider_states_setup_url='http://localhost/provider-states/set', @@ -148,7 +148,7 @@ def test_uses_broker_if_no_pacts_and_provider_required(self): self.mock_Popen.return_value.returncode = 0 wrapper = VerifyWrapper() - result, output = wrapper.call_verify(provider='test_provider', + result, output = wrapper.verify(provider='test_provider', provider_base_url='http://localhost', broker_username='username', broker_password='pwd', @@ -168,7 +168,7 @@ def test_rerun_command_called(self, mock_rerun_cmd, mock_expand_dirs, mock_sanit self.mock_Popen.return_value.returncode = 0 wrapper = VerifyWrapper() - result, output = wrapper.call_verify('path/to/pact1', + result, output = wrapper.verify('path/to/pact1', 'path/to/pact2', provider_base_url='http://localhost', provider='provider') @@ -183,7 +183,7 @@ def test_sanitize_called(self, mock_rerun_cmd, mock_expand_dirs, mock_sanitize_l self.mock_Popen.return_value.returncode = 0 wrapper = VerifyWrapper() - result, output = wrapper.call_verify('path/to/pact1', + result, output = wrapper.verify('path/to/pact1', 'path/to/pact2', provider_base_url='http://localhost', provider='provider') @@ -196,7 +196,7 @@ def test_publishing_with_version(self, mock_sanitize_logs, mock_path_exists): self.mock_Popen.return_value.returncode = 0 wrapper = VerifyWrapper() - result, output = wrapper.call_verify('./pacts/consumer-provider.json', + result, output = wrapper.verify('./pacts/consumer-provider.json', './pacts/consumer-provider2.json', provider='test_provider', provider_base_url='http://localhost', @@ -216,7 +216,7 @@ def test_expand_dirs_called(self, mock_rerun_cmd, mock_expand_dirs, mock_sanitiz self.mock_Popen.return_value.returncode = 0 wrapper = VerifyWrapper() - result, output = wrapper.call_verify('path/to/pact1', + result, output = wrapper.verify('path/to/pact1', 'path/to/pact2', provider_base_url='http://localhost', provider='provider')