def test_success_response(self, post_method): event = { "name": "event:name", "version": 1, "payload": { "test": "test" }, } response_event = ResponseEvent( name="event:name:response", version=1, payload={"test": "test"}, ) post_method.return_value = response_event.to_json() response = self.client.send_event(**event) self.assertTrue(response.is_success) self.assertEqual(response, response_event)
def test_error_response(self, post_method): event = { "name": "event:name", "version": 1, "payload": { "test": "test" }, } response_event = ResponseEvent( name="event:name:error", version=1, payload={"test": "test"}, ) post_method.return_value = response_event.to_json() response = self.client.send_event(**event) self.assertTrue(response.is_error) self.assertEqual(EventErrorType.GENERIC, response.error_type) self.assertEqual(response, response_event)
async def test_process_event_founding_none_event(self): test_event = Event(name="event:test", version="2", id=str(uuid4()), flow_id=str(uuid4())) test_json = test_event.to_json() event_processor = AsyncEventProcessor() event = await event_processor.process_event(test_json) response: ResponseEvent = ResponseEvent.from_json(event) self.assertTrue(response.is_error) self.assertEqual(response.event_type, EventErrorType.NOT_FOUND)
def response_for( cls, event: Event, payload: PayloadType, event_type: EventSuccessType = EventSuccessType.SUCCESS, loggable=True, ) -> ResponseEvent: response_event = ResponseEvent.from_object(event) response_event.name = f"{response_event.name}:{event_type}" response_event.payload = payload return response_event
def response_for( cls, event: Event, payload: PayloadType, event_type: EventSuccessType = EventSuccessType.SUCCESS, loggable=True, ) -> ResponseEvent: response_event = ResponseEvent.from_object(event) response_event.name = f"{response_event.name}:{event_type}" response_event.payload = payload if loggable: cls.logger.info("Event finished with success", extra=response_event.json()) return response_event
def error_for( cls, exception: typing.Union[EventException], event: typing.Optional[Event] = Event(name="", version=1, id=str(uuid4())), id_flow=str(uuid4()), loggable=True, ) -> ResponseEvent: event_name = ( f"{event.name}:{exception.event_error_type}" if event.name else f"{exception.event_error_type}" ) event_message = EventMessage(code=exception.code, parameters=exception.parameters).to_dict() response_event = ResponseEvent.from_object(event) response_event.name = event_name response_event.payload = event_message if loggable: cls.logger.error("Event finished with error", extra=response_event.json()) return response_event