예제 #1
0
    async def test_get_periodic_event(self):
        handlers = self.builder.get_periodic_event()
        self.assertEqual(1, len(handlers))

        expected = {Response("_newsletter sent!_"), Response("_checked inactive users!_")}
        # noinspection PyTypeChecker
        observed = set(await handlers[PeriodicEventEnrouteDecorator("@daily")](self.request))
        self.assertEqual(expected, observed)
예제 #2
0
    async def test_get_rest_command_query(self):
        handlers = self.builder.get_rest_command_query()
        self.assertEqual(3, len(handlers))

        expected = Response("_(Get Tickets: test)_")
        observed = await handlers[RestQueryEnrouteDecorator("tickets/", "GET")](self.request)
        self.assertEqual(expected, observed)

        expected = Response("_Create Ticket_")
        observed = await handlers[RestCommandEnrouteDecorator("orders/", "GET")](self.request)
        self.assertEqual(expected, observed)

        expected = None
        observed = await handlers[RestCommandEnrouteDecorator("orders/", "DELETE")](self.request)
        self.assertEqual(expected, observed)
예제 #3
0
    async def test_get_broker_event(self):
        handlers = self.builder.get_broker_event()
        self.assertEqual(1, len(handlers))

        expected = Response("_Ticket Added: [test]_")
        observed = await handlers[BrokerEventEnrouteDecorator("TicketAdded")](self.request)
        self.assertEqual(expected, observed)
예제 #4
0
async def fake_middleware(request: Request,
                          inner: Callable) -> Optional[Response]:
    """For testing purposes."""
    response = await inner(request)
    if response is not None:
        return Response(f"_{await response.content()}_")
    return response
예제 #5
0
    async def test_get_broker_command_query(self):
        handlers = self.builder.get_broker_command_query()
        self.assertEqual(4, len(handlers))

        expected = Response("_(Get Tickets: test)_")
        observed = await handlers[BrokerQueryEnrouteDecorator("GetTickets")](self.request)
        self.assertEqual(expected, observed)

        expected = Response("_Create Ticket_")
        observed = await handlers[BrokerCommandEnrouteDecorator("CreateTicket")](self.request)
        self.assertEqual(expected, observed)

        expected = Response("_Create Ticket_")
        observed = await handlers[BrokerCommandEnrouteDecorator("AddTicket")](self.request)
        self.assertEqual(expected, observed)

        expected = None
        observed = await handlers[BrokerCommandEnrouteDecorator("DeleteTicket")](self.request)
        self.assertEqual(expected, observed)
예제 #6
0
    async def test_dispatch(self):
        callback_mock = AsyncMock(return_value=Response("add_order"))
        lookup_mock = MagicMock(return_value=callback_mock)
        entry = BrokerHandlerEntry(1,
                                   "AddOrder",
                                   0,
                                   self.message.avro_bytes,
                                   1,
                                   callback_lookup=lookup_mock)

        send_mock = AsyncMock()
        self.publisher.send = send_mock

        await self.handler.dispatch_one(entry)

        self.assertEqual(1, lookup_mock.call_count)
        self.assertEqual(call("AddOrder"), lookup_mock.call_args)

        self.assertEqual(
            [
                call(
                    "add_order",
                    topic="UpdateTicket",
                    identifier=self.message.identifier,
                    status=BrokerMessageStatus.SUCCESS,
                    user=self.user,
                    headers={"foo": "bar"},
                )
            ],
            send_mock.call_args_list,
        )

        self.assertEqual(1, callback_mock.call_count)
        observed = callback_mock.call_args[0][0]
        self.assertIsInstance(observed, BrokerRequest)
        self.assertEqual(FakeModel("foo"), await observed.content())
 async def test_eq_false(self):
     self.assertNotEqual(Response(self.data[0]), Response(self.data[1]))
예제 #8
0
 async def test_async_function_call(self):
     wrapper = self.decorator(_async_fn)
     self.assertEqual(Response("Async Fn: test"), await
                      wrapper(self.request))
 async def test_eq_true(self):
     self.assertEqual(Response(self.data), Response(self.data))
async def _async_fn(request: Request) -> Response:
    """For testing purposes."""
    return Response(f"Async Fn: {await request.content()}")
def _fn(request: Request) -> Response:
    """For testing purposes."""
    return Response("Fn")
예제 #12
0
 def test_function_call(self):
     wrapper = self.decorator(_fn)
     self.assertEqual(Response("Fn"), wrapper(self.request))
 def test_wrapper_sync_call(self):
     meta = HandlerMeta(_fn)
     with patch("minos.networks.CheckerMeta.run_sync") as mock:
         self.assertEqual(Response("Fn"), meta.wrapper(InMemoryRequest("foo")))
         self.assertEqual([call(meta.decorators, InMemoryRequest("foo"))], mock.call_args_list)
 async def test_content_simple(self):
     response = Response(1234)
     self.assertEqual(1234, await response.content())
 async def test_raw_content_single(self):
     response = Response(self.data[0])
     self.assertEqual(self.data[0].avro_data, await response.raw_content())
 async def test_repr(self):
     response = Response(self.data)
     self.assertEqual(f"Response({self.data!r})", repr(response))
 async def test_content(self):
     response = Response(self.data)
     self.assertEqual(self.data, await response.content())
예제 #18
0
 def bar(self, request: Request):
     """For testing purposes."""
     return Response("bar")
예제 #19
0
 async def check_inactive_users(self, request: Request):
     """For testing purposes."""
     return Response("checked inactive users!")
예제 #20
0
 async def send_newsletter(self, request: Request):
     """For testing purposes."""
     return Response("newsletter sent!")
예제 #21
0
 async def ticket_added(request: Request) -> Response:
     """For testing purposes."""
     return Response(": ".join((
         "Ticket Added",
         await request.content(),
     )))
예제 #22
0
 async def get_tickets(self, request: Request) -> Response:
     """For testing purposes."""
     return Response(": ".join((
         "Get Tickets",
         await request.content(),
     )))
 def test_hash(self):
     self.assertIsInstance(hash(Response("test")), int)
예제 #24
0
 async def _post_query_handle(response: Response) -> Response:
     return Response(f"({await response.content()})")
 async def test_content_single(self):
     response = Response(self.data[0])
     self.assertEqual(self.data[0], await response.content())
예제 #26
0
 def create_ticket(self, request: Request) -> Response:
     """For testing purposes."""
     return Response("Create Ticket")
 async def test_raw_content(self):
     response = Response(self.data)
     self.assertEqual([item.avro_data for item in self.data], await
                      response.raw_content())
 def add_ticket(self, request: Request) -> Response:
     return Response("ticket_added")
 def get_order_rest(self, request: Request) -> Response:
     return Response("get_order")
예제 #30
0
 def _fn2(self, request):
     return Response("bar")