示例#1
0
 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)
示例#2
0
 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)
示例#3
0
 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)
示例#4
0
    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
示例#5
0
 def parse_event(cls, event: Event) -> CamelPydanticMixin:
     try:
         return event.payload_as(cls._SCHEMA)
     except ValidationError as exception:
         raise MissingEventInformationException(
             parameters=exception.to_dict())