Exemple #1
0
    def test_givenFilterInstance_whenGettingFilters_thenReturnFilterInstanceAsIs(self):
        instance = mock.create_autospec(Filter)
        rule = FilteringRule("/*", [instance])

        filters = rule.get_filters(ServiceLocator())

        self.assertEqual(1, len(filters))
        self.assertEqual(instance, filters[0])
Exemple #2
0
    def test_givenSavedFilterClass_whenGettingFilters_thenGetInstanceFromServiceLocator(self):
        rule = FilteringRule("/*", [Filter])
        service_locator = ServiceLocator()
        filter_instance = object()
        service_locator.bind(Filter, filter_instance)

        filters = rule.get_filters(service_locator)

        self.assertEqual(1, len(filters))
        self.assertEqual(filter_instance, filters[0])
Exemple #3
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
Exemple #4
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'])))
Exemple #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': '*'}))
Exemple #6
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)))
Exemple #7
0
from jivago.config.router.filtering.filtering_rule import FilteringRule

# Applies to all subpaths of "/users/". DOES NOT apply to "/users" itself.
FilteringRule("/users/*", [MyFilter])

# Only applies to "/users", and nothing else.
FilteringRule("/users", [MyFilter])

# Applies to "/users" and subpaths of "/users/...".
FilteringRule("/users*", [MyFilter])

# Applies to all requests matching regexp.
# First parameter is not used when regex_pattern is supplied.
FilteringRule(None, [MySpecialFilter], regex_pattern=r"^/users.*$")
Exemple #8
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)))
Exemple #9
0
    def test_givenRuleWithPeriod_whenMatchingRule_thenTreatAsLiteralPeriod(self):
        rule = FilteringRule("/users.hello", [])

        self.assertTrue(rule.matches("/users.hello"))
        self.assertFalse(rule.matches("/users_hello"))
Exemple #10
0
    def test_givenRegexString_whenMatchingRule_thenUseRegexpAsIs(self):
        rule = FilteringRule("", [], regex_pattern=r"^/users/.*/delete$")

        self.assertTrue(rule.matches("/users/foo/delete"))
        self.assertFalse(rule.matches("/users/foo"))
Exemple #11
0
    def test_givenSpecificPath_whenMatchingRule_thenPathMustMatchRuleExactly(self):
        rule = FilteringRule("/users", [])

        self.assertTrue(rule.matches("/users"))
        self.assertFalse(rule.matches("/users/foobar"))
Exemple #12
0
    def test_givenTrailingWildcardPattern_whenMatchingRule_thenMatchForAllPathsWhichStartWithPrefix(self):
        rule = FilteringRule("/users/*", [])

        self.assertTrue(rule.matches("/users/foo/bar"))
        self.assertFalse(rule.matches("/users"))
Exemple #13
0
    def test_givenWildcardPattern_thenMatchAnyLevelsOfDepth(self):
        rule = FilteringRule("/users/*/delete", [])

        self.assertTrue(rule.matches("/users/foo/bar/delete"))
        self.assertFalse(rule.matches("/users/foo/bar"))
        self.assertFalse(rule.matches("/users"))
Exemple #14
0
 def setUp(self):
     self.route_handler_factory_mock = mock.create_autospec(RouteHandlerFactory)
     self.filter_chain_factory = FilterChainFactory([
         FilteringRule("*", [DEFAULT_FILTER]),
         FilteringRule("/foo/bar*", [SPECIFIC_FILTER])
     ], ServiceLocator(), self.route_handler_factory_mock)