def test_parse_event_with_valid_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 = event_processor.parse_event(test_json) self.assertEqual(event, test_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)
async def test_process_event_founding_fake_event(self): FakeRegister.register_event() test_event = Event( name=FakeRegister.event_name, version=FakeRegister.event_version, id=str(uuid4()), flow_id=str(uuid4()), payload={}, ) test_json = test_event.to_json() event_processor = AsyncEventProcessor() response = await event_processor.process_event(test_json) self.assertEqual(test_json, response)
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
def parse_event(cls, event: Event) -> CamelPydanticMixin: try: return event.payload_as(cls._SCHEMA) except ValidationError as exception: raise MissingEventInformationException( parameters=exception.to_dict())