Ejemplo n.º 1
0
    def test_givenPathWhichDoesNotMatchRule_whenGettingRouteRegistrations_thenReturnEmptyList(
            self):
        rule = RoutingRule("/users", None)

        routes = rule.get_route_registrations("/foobar")

        self.assertEqual(0, len(routes))
Ejemplo n.º 2
0
    def test_whenCreatingRouteHandlers_thenRewritePaths(self):
        request = RequestBuilder().path("/users/path").build()
        rule = RoutingRule("/users", self.routing_table, rewrite_path=True)

        handlers = [x for x in rule.create_route_handlers(request, None, None)]

        self.assertIsInstance(handlers[0], PathRewritingRouteHandlerDecorator)
Ejemplo n.º 3
0
 def create_router_config(self) -> RouterBuilder:
     return RouterBuilder() \
         .add_rule(FilteringRule("*", self.get_default_filters())) \
         .add_rule(AutoDiscoveringFilteringRule("*", self.registry, self.root_package_name)) \
         .add_rule(RoutingRule("/api", AutoDiscoveringRoutingTable(self.registry, self.root_package_name))) \
         .add_rule(RoutingRule("/static", StaticFileRoutingTable(os.path.dirname(e2e_test.app.static.__file__),
                                                                 allowed_extensions=['.txt'])))
Ejemplo n.º 4
0
    def test_givenShouldNotRewritePath_whenCreatingRouteHandlers_thenReturnStandardResourceInvokers(
            self):
        request = RequestBuilder().path("/users/path").build()
        rule = RoutingRule("/users", self.routing_table, rewrite_path=False)

        handlers = [x for x in rule.create_route_handlers(request, None, None)]

        self.assertIsInstance(handlers[0], ResourceInvoker)
Ejemplo n.º 5
0
 def create_router_config(self) -> RouterBuilder:
     return RouterBuilder() \
         .add_rule(FilteringRule("*", JIVAGO_DEFAULT_FILTERS)) \
         .add_rule(RoutingRule("/api", AutoDiscoveringRoutingTable(self.registry, self.root_package_name))) \
         .add_rule(RoutingRule("/static", StaticFileRoutingTable(os.path.dirname(e2e_test.app.static.__file__),
                                                                 allowed_extensions=['.txt']))) \
         .add_rule(CorsRule("/", {'Access-Control-Allow-Origin': 'http://jivago.io',
                                  'Access-Control-Allow-Headers': '*',
                                  'Access-Control-Allow-Methods': '*'}))
    def invoke(self, request: Request) -> Response:
        response = ResourceClass.the_response
        FilterChain(
            [],
            RouteHandlerFactory(self.service_locator, self.deserializer,
                                [RoutingRule("", self.routing_table)],
                                CorsHandler([]))).doFilter(request, response)

        return response
    def setUp(self):
        self.routing_table = TreeRoutingTable()
        self.routing_table.register_route(GET, PATH, RESOURCE_CLASS,
                                          ROUTE_METHOD)
        self.route_handler_factory = RouteHandlerFactory(
            ServiceLocator(), Deserializer(Registry()),
            [RoutingRule("/", self.routing_table)],
            CorsRequestHandlerFactory([CorsRule("/", {})]))

        self.request_builder = RequestBuilder().method("GET").path(PATH)
Ejemplo n.º 8
0
    def create_router_config(self) -> RouterBuilder:
        config = super().create_router_config() \
            .add_rule(FilteringRule("*", [TemporaryFileCleanupFilter])) \
            .add_rule(RoutingRule("/static/",
                                  StaticFileRoutingTable(os.path.dirname(static.__file__),
                                                         allowed_extensions=[".png", ".ico", ".html", ".css"])))

        prometheus_endpoint = os.environ.get("PROMETHEUS_GATEWAY_ENDPOINT")
        if prometheus_endpoint:
            InvertPdfContext.LOGGER.info(
                f"Using prometheus pushgateway endpoint {prometheus_endpoint}")
            config.add_rule(FilteringRule("*", [RequestMetricsFilter]))

        return config
Ejemplo n.º 9
0
    def test_givenPrefixedRule_whenCreatingRouteHandlers_thenCreateResourceInvokerWithTruncatedPathForEveryRoute(
            self):
        request = self.request_builder.path("/prefix" + PATH).build()
        rule = RoutingRule("/prefix", self.routing_table)
        self.route_handler_factory = RouteHandlerFactory(
            ServiceLocator(), Deserializer(Registry()), [rule],
            CorsHandler([CorsRule("/", {})]))

        handlers: List[PathRewritingRouteHandlerDecorator] = [
            x
            for x in self.route_handler_factory.create_route_handlers(request)
        ]

        self.assertEqual(1, len(handlers))
        self.assertEqual(PATH, handlers[0].new_path)
Ejemplo n.º 10
0
 def create_router_config(self) -> RouterBuilder:
     return RouterBuilder() \
         .add_rule(FilteringRule("*", JIVAGO_DEFAULT_FILTERS)) \
         .add_rule(AutoDiscoveringFilteringRule("*", self.registry, self.root_package_name)) \
         .add_rule(RoutingRule("/", AutoDiscoveringRoutingTable(self.registry, self.root_package_name)))
Ejemplo n.º 11
0
    def test_matchingPrefixRootPrefix(self):
        rule = RoutingRule("/", None)

        self.assertTrue(rule.matches("/foo"))
        self.assertTrue(rule.matches("/"))
Ejemplo n.º 12
0
 def create_router_config(self) -> RouterBuilder:
     return super().create_router_config() \
         .add_rule(RoutingRule("/", my_routing_table))
Ejemplo n.º 13
0
 def create_router_config(self) -> RouterBuilder:
     return super().create_router_config() \
         .add_rule(RoutingRule("/static", StaticFileRoutingTable("/var/www")))
Ejemplo n.º 14
0
 def create_router_config(self) -> RouterBuilder:
     return RouterBuilder() \
         .add_rule(FilteringRule("*", self.get_default_filters())) \
         .add_rule(AutoDiscoveringFilteringRule("*", self.registry, self.root_package_name)) \
         .add_rule(RoutingRule("/api", AutoDiscoveringRoutingTable(self.registry, self.root_package_name)))
Ejemplo n.º 15
0
 def create_router_config(self) -> RouterBuilder:
     return super().create_router_config() \
         .add_rule(RoutingRule("/", StaticFileRoutingTable("/var/www"))) \
         .add_rule(RoutingRule("/", StaticFileRoutingTable("/var/www", allowed_extensions=['.html', '.xml'])))
Ejemplo n.º 16
0
from jivago.wsgi.methods import GET
from jivago.wsgi.routing.routing_rule import RoutingRule
from jivago.wsgi.routing.serving.static_file_routing_table import StaticFileRoutingTable
from jivago.wsgi.routing.table.tree_routing_table import TreeRoutingTable

my_routing_table = TreeRoutingTable()
my_routing_table.register_route(GET, "/hello", HelloClass,
                                HelloClass.get_hello)

root_rule = RoutingRule("/", my_routing_table)
my_rule = RoutingRule("/static",
                      StaticFileRoutingTable("/var/www"),
                      rewrite_path=True)
Ejemplo n.º 17
0
    def test_matchingPrefix(self):
        rule = RoutingRule("/users", None)

        self.assertTrue(rule.matches("/users"))
        self.assertTrue(rule.matches("/users/foo/bar/delete"))
        self.assertFalse(rule.matches("/admin"))