Skip to content

Commit

Permalink
feat: some work on preparing verify call
Browse files Browse the repository at this point in the history
  • Loading branch information
elliottmurray committed Jul 24, 2021
1 parent cd85969 commit 2b67e39
Show file tree
Hide file tree
Showing 7 changed files with 54 additions and 51 deletions.
2 changes: 1 addition & 1 deletion pact/cli/verify.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
13 changes: 13 additions & 0 deletions pact/ffi/ffi_verifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
4 changes: 2 additions & 2 deletions pact/verifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down
12 changes: 1 addition & 11 deletions pact/verify_wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
):
Expand Down Expand Up @@ -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'
28 changes: 14 additions & 14 deletions tests/cli/test_verify.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'])
Expand All @@ -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',
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -169,17 +169,17 @@ 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

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
Expand All @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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, [
Expand Down
28 changes: 14 additions & 14 deletions tests/test_verifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand All @@ -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')
Expand Down Expand Up @@ -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')
Expand All @@ -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):
Expand All @@ -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):
Expand All @@ -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')
Expand All @@ -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'
Expand All @@ -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')
Expand All @@ -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')
Expand All @@ -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')
Expand Down Expand Up @@ -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')
Expand All @@ -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):
Expand All @@ -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')
Expand Down
Loading

0 comments on commit 2b67e39

Please sign in to comment.