def test_definition_sparse(self): target = MessagePact(self.consumer, self.provider) (target.given('there is an alligator named John').expects_to_receive( 'an alligator message').with_content({ 'name': 'John', 'document_name': 'sample_document.doc' }).with_metadata({ 'contentType': 'application/json', 'source': 'legacy_api' })) self.assertEqual(len(target._messages), 1) self.assertEqual(target._messages[0]['providerStates'], [{ 'name': 'there is an alligator named John' }]) self.assertEqual(target._messages[0]['description'], 'an alligator message') self.assertEqual(target._messages[0]['contents'], { 'name': 'John', 'document_name': 'sample_document.doc' }) self.assertEqual(target._messages[0]['metaData'], { 'contentType': 'application/json', 'source': 'legacy_api' })
def test_call_pact_message_to_generate_pact_file(self): target = MessagePact(self.consumer, self.provider, pact_dir='/pacts', version='3.0.0', file_write_mode='merge', publish_to_broker=True) (target.given('There is an alligator named John').expects_to_receive( 'an alligator message').with_content({ 'name': 'John', 'document_name': 'sample_document.doc' }).with_metadata({ 'contentType': 'application/json', 'source': 'legacy_api' })) target.write_to_pact_file() self.mock_Popen.assert_called_once_with([ MESSAGE_PATH, 'update', json.dumps(target._messages[0]), '--pact-dir', '/pacts', '--pact-specification-version=3.0.0', '--consumer', 'TestConsumer_message', '--provider', 'TestProvider_message', ])
def test_successful(self): pact = MessagePact( self.consumer, self.provider, publish_to_broker=True, broker_base_url='http://localhost', broker_username='******', broker_password='******') with pact: pass self.write_to_pact_file.assert_called_once() self.mock_publish.assert_called_once()
def test_init_defaults(self): target = MessagePact(self.consumer, self.provider) self.assertIs(target.broker_base_url, None) self.assertIs(target.broker_username, None) self.assertIs(target.broker_password, None) self.assertIs(target.consumer, self.consumer) self.assertEqual(target.pact_dir, os.getcwd()) self.assertIs(target.provider, self.provider) self.assertIs(target.publish_to_broker, False) self.assertEqual(target.version, '3.0.0') self.assertEqual(len(target._messages), 0)
def test_init_publish_to_broker(self): target = MessagePact( self.consumer, self.provider, publish_to_broker=True, broker_base_url='http://localhost', broker_username='******', broker_password='******', broker_token='token') self.assertEqual(target.broker_base_url, 'http://localhost') self.assertEqual(target.broker_username, 'username') self.assertEqual(target.broker_password, 'password') self.assertEqual(target.broker_token, 'token') self.assertIs(target.publish_to_broker, True)
def test_init_custom_mock_service(self): target = MessagePact( self.consumer, self.provider, pact_dir='/pacts', version='3.0.0', file_write_mode='merge') self.assertIs(target.consumer, self.consumer) self.assertEqual(target.pact_dir, '/pacts') self.assertIs(target.provider, self.provider) self.assertEqual(target.version, '3.0.0') self.assertEqual(target.file_write_mode, 'merge') self.assertEqual(len(target._messages), 0)
def test_context_raises_error(self): pact = MessagePact( self.consumer, self.provider, publish_to_broker=True, broker_base_url='http://localhost', broker_username='******', broker_password='******') with self.assertRaises(RuntimeError): with pact: raise RuntimeError self.write_to_pact_file.assert_not_called() self.mock_publish.assert_not_called()
def test_definition_without_given(self): target = MessagePact(self.consumer, self.provider) (target.expects_to_receive('an crocodile message').with_content({ 'name': 'Mary' }).with_metadata({'source': 'legacy_api'})) self.assertEqual(len(target._messages), 1) self.assertIsNone(target._messages[0].get('providerStates')) self.assertEqual(target._messages[0]['description'], 'an crocodile message') self.assertEqual(target._messages[0]['contents'], {'name': 'Mary'}) self.assertEqual(target._messages[0]['metaData'], {'source': 'legacy_api'})
def test_insert_new_message_once_required_attributes_provided(self): target = MessagePact(self.consumer, self.provider) (target.given('there is an alligator named John').with_content({ 'name': 'John', 'document_name': 'sample_document.doc' }).with_metadata({'contentType': 'application/json'})) self.assertEqual(len(target._messages), 1) (target.expects_to_receive('an alligator message')) self.assertEqual(len(target._messages), 1) self.assertEqual(target._messages[0]['description'], 'an alligator message') (target.expects_to_receive('a new message description')) self.assertEqual(len(target._messages), 2) self.assertEqual(target._messages[0]['description'], 'a new message description')