def test_givenPathWhichDoesNotMatchRule_whenGettingRouteRegistrations_thenReturnEmptyList( self): rule = RoutingRule("/users", None) routes = rule.get_route_registrations("/foobar") self.assertEqual(0, len(routes))
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)
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'])))
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)
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)
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
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)
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)))
def test_matchingPrefixRootPrefix(self): rule = RoutingRule("/", None) self.assertTrue(rule.matches("/foo")) self.assertTrue(rule.matches("/"))
def create_router_config(self) -> RouterBuilder: return super().create_router_config() \ .add_rule(RoutingRule("/", my_routing_table))
def create_router_config(self) -> RouterBuilder: return super().create_router_config() \ .add_rule(RoutingRule("/static", StaticFileRoutingTable("/var/www")))
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)))
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'])))
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)
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"))