def test_throws_when_credentials_are_rejected(self, m: Mocker): m.post('/trigger', text=RESPONSE_AUTH_REJECTED, status_code=401) with self.assertRaises(piazza.Unauthorized): piazza.create_trigger( data_inputs={'foo': 'bar'}, event_type_id='test-event-type-id', name='test-name', service_id='test-service-id', )
def test_gracefully_handles_errors(self, m: Mocker): m.post('/trigger', text=RESPONSE_ERROR_GENERIC, status_code=500) with self.assertRaises(piazza.ServerError): piazza.create_trigger( data_inputs={'foo': 'bar'}, event_type_id='test-event-type-id', name='test-name', service_id='test-service-id', )
def test_calls_correct_url(self, m: Mocker): m.post('/trigger', text=RESPONSE_TRIGGER, status_code=201) piazza.create_trigger( data_inputs={}, event_type_id='test-event-type-id', name='test-name', service_id='test-service-id', ) self.assertEqual('https://test-piazza-host.localdomain/trigger', m.request_history[0].url)
def test_throws_when_piazza_is_unreachable(self, _): with unittest.mock.patch('requests.post') as mock: mock.side_effect = ConnectionError(request=unittest.mock.Mock()) with self.assertRaises(piazza.Unreachable): piazza.create_trigger( data_inputs={'foo': 'bar'}, event_type_id='test-event-type-id', name='test-name', service_id='test-service-id', )
def test_sends_correct_api_key(self, m: Mocker): m.post('/trigger', text=RESPONSE_TRIGGER, status_code=201) piazza.create_trigger( data_inputs={}, event_type_id='test-event-type-id', name='test-name', service_id='test-service-id', ) self.assertEqual( 'Basic YWFhYWFhYWEtYmJiYi1jY2NjLWRkZGQtZWVlZWVlZWVlZWVlOg==', m.request_history[0].headers['Authorization'])
def test_throws_when_data_is_missing(self, m: Mocker): mangled_response = json.loads(RESPONSE_TRIGGER) mangled_response.pop('data') m.post('/trigger', json=mangled_response, status_code=201) with self.assertRaisesRegex(piazza.InvalidResponse, 'missing `data`'): piazza.create_trigger( data_inputs={'foo': 'bar'}, event_type_id='test-event-type-id', name='test-name', service_id='test-service-id', )
def test_returns_trigger_id(self, m: Mocker): m.post('/trigger', text=RESPONSE_TRIGGER, status_code=201) trigger_id = piazza.create_trigger( data_inputs={'foo': 'bar'}, event_type_id='test-event-type-id', name='test-name', service_id='test-service-id', ) self.assertEqual('test-trigger-id', trigger_id)
def test_sends_correct_payload(self, m: Mocker): m.post('/trigger', text=RESPONSE_TRIGGER, status_code=201) piazza.create_trigger( data_inputs={'lorem': 'ipsum dolor'}, event_type_id='test-event-type-id', name='test-name', service_id='test-service-id', ) self.assertEqual( { 'name': 'test-name', 'eventTypeId': 'test-event-type-id', 'condition': { 'query': { 'query': { 'match_all': {} } }, }, 'job': { 'jobType': { 'type': 'execute-service', 'data': { 'serviceId': 'test-service-id', 'dataInputs': { 'lorem': 'ipsum dolor' }, 'dataOutput': [{ 'mimeType': 'text/plain', 'type': 'text' }], }, }, }, 'enabled': True, }, m.request_history[0].json())