Exemplo n.º 1
0
    async def setUp(self):
        self.signal_handler = SSE()

        handler1 = Mock(return_value=CoroutineMock())
        handler2 = Mock(return_value=CoroutineMock())
        handler3 = Mock(return_value=CoroutineMock())

        self.routes_registry = RoutesRegistry(
            {
                handler1: {
                    "type": RouteTypes.SSE,
                    "routes": ["Xablau"],
                    "options": {},
                    "default_options": {},
                },
                handler2: {
                    "type": RouteTypes.SSE,
                    "routes": ["Xena", "sse"],
                    "options": MagicMock(),
                    "default_options": {},
                },
                handler3: {
                    "type": RouteTypes.AMQP_RABBITMQ,
                    "routes": ["invalid route"],
                    "options": MagicMock(),
                    "default_options": {},
                },
            }
        )
Exemplo n.º 2
0
    def test_it_raise_an_error_if_the_route_has_an_invalid_type(self):
        routes_registry = RoutesRegistry()

        handler = CoroutineMock()
        route_data = {
            "type": "Xablau",
            "routes": ["/"],
            "methods": ["POST"],
            "handler": handler,
            "default_options": {},
        }

        with self.assertRaises(ValueError):
            routes_registry[handler] = route_data
Exemplo n.º 3
0
    def __init__(self) -> None:
        self.loop = asyncio.get_event_loop()
        self.routes_registry = RoutesRegistry()
        self.default_route_options: dict = {}

        self._state: dict = {}
        self._frozen = False
        self._on_startup: Signal = Signal(self)
        self._on_shutdown: Signal = Signal(self)

        for handler in self.handlers:
            self._on_startup.append(handler.startup)
            self._on_shutdown.append(handler.shutdown)

        for signal in self.shutdown_os_signals:
            self.loop.add_signal_handler(signal, self.shutdown)
Exemplo n.º 4
0
    async def setUp(self):
        self.signal_handler = HTTPServer()

        handler1 = Mock(return_value=CoroutineMock())
        handler2 = Mock(return_value=CoroutineMock())

        self.routes_registry = RoutesRegistry({
            handler1: {
                "type": RouteTypes.HTTP,
                "routes": ["/xablau"],
                "methods": ["GET"],
            },
            handler2: {
                "type": RouteTypes.HTTP,
                "routes": ["/xena"],
                "methods": ["GET", "POST"],
            },
        })
        self.app = App("localhost", "guest", "guest", 1)
Exemplo n.º 5
0
    async def setUp(self):
        self.signal_handler = RabbitMQ()

        handler1 = Mock(return_value=CoroutineMock())
        handler2 = Mock(return_value=CoroutineMock())

        self.routes_registry = RoutesRegistry({
            handler1: {
                "type": RouteTypes.AMQP_RABBITMQ,
                "routes": ["Xablau"],
                "options": {},
            },
            handler2: {
                "type": RouteTypes.AMQP_RABBITMQ,
                "routes": ["Xena"],
                "options": {},
                "vhost": "k9",
            },
        })
Exemplo n.º 6
0
    def __init__(self,
                 connections: Optional[Iterable[Connection]] = None) -> None:
        Freezable.__init__(self)
        self.loop = asyncio.get_event_loop()
        self.routes_registry = RoutesRegistry()
        self.default_route_options: dict = {}

        self._state: Dict[Any, Any] = self._get_initial_state()
        self.connections = ConnectionsMapping()
        if connections:
            self.connections.add(connections)

        self._on_startup: Signal = Signal(self)
        self._on_shutdown: Signal = Signal(self)

        for handler in self.handlers:
            self._on_startup.append(handler.startup)
            self._on_shutdown.append(handler.shutdown)

        for signal in self.shutdown_os_signals:
            self.loop.add_signal_handler(signal, self.shutdown)
Exemplo n.º 7
0
 def setUp(self):
     self.routes_registry = RoutesRegistry()
Exemplo n.º 8
0
class RoutesRegistryTests(TestCase):
    def setUp(self):
        self.routes_registry = RoutesRegistry()

    def test_it_registers_routes(self):
        handler = CoroutineMock()

        route = HTTPRoute(routes=["/"],
                          methods=["POST"],
                          handler=handler,
                          default_options={})

        self.routes_registry.add_route(route)

        self.assertEqual(route, self.routes_registry.route_for(handler))

    def test_route_for(self):
        handler = CoroutineMock()

        route = HTTPRoute(routes=["/"],
                          methods=["POST"],
                          handler=handler,
                          default_options={})

        self.routes_registry[handler] = route

        self.assertEqual(self.routes_registry.route_for(handler), route)

    def test_it_raise_an_error_if_the_route_has_an_invalid_type(self):
        routes_registry = RoutesRegistry()

        handler = CoroutineMock()
        route_data = {
            "type": "Xablau",
            "routes": ["/"],
            "methods": ["POST"],
            "handler": handler,
            "default_options": {},
        }

        with self.assertRaises(ValueError):
            routes_registry[handler] = route_data

    def test_it_raises_an_error_if_route_dict_dosnt_have_a_type(self):
        handler = CoroutineMock()
        route_data = {
            "routes": ["/"],
            "methods": ["POST"],
            "handler": handler,
            "default_options": {},
        }

        with self.assertRaises(ValueError):
            self.routes_registry[handler] = route_data

    def test_routes_are_subscriptables(self):
        handler = CoroutineMock()
        route = HTTPRoute(routes=["/"],
                          methods=["POST"],
                          handler=handler,
                          default_options={})

        self.routes_registry.add_route(route)

        self.assertEqual(route["type"], RouteTypes.HTTP)
        with self.assertRaises(KeyError):
            _ = route["Invalid key"]

    def test_routes_get_method(self):
        handler = CoroutineMock()
        route = HTTPRoute(routes=["/"],
                          methods=["POST"],
                          handler=handler,
                          default_options={})

        self.routes_registry.add_route(route)

        self.assertEqual(route.get("type"), RouteTypes.HTTP)
        self.assertEqual(route.get("Invalid key", "Default"), "Default")

    def test_register_http_handler(self):
        route = HTTPRoute(handler=CoroutineMock(),
                          routes=["/foo"],
                          methods=["GET"])
        self.routes_registry.add_http_route(route)

        self.assertEqual(len(self.routes_registry.http_routes), 1)
        self.assertEqual(self.routes_registry.http_routes[0], route)

    def test_register_amqp_handler(self):
        route = AMQPRoute(
            handler=CoroutineMock(),
            routes=["queue1", "queue2"],
            options=AMQPRouteOptions(),
        )

        self.routes_registry.add_amqp_route(route)

        self.assertEqual(len(self.routes_registry.amqp_routes), 1)
        self.assertEqual(self.routes_registry.amqp_routes[0], route)