Island: Remove trailing slashes before registering a URL

Strict slashes seems to not handle a case when URL is defined with a trailing slash, but request is sent without one. Removing trailing slashes before registering a URL will solve the burden of remembering to register URLS without slashes
This commit is contained in:
vakaris_zilius 2022-08-12 14:54:28 +00:00
parent 74ca26657e
commit 5d36b7a981
2 changed files with 9 additions and 1 deletions

View File

@ -128,7 +128,7 @@ class FlaskDIWrapper:
raise ValueError(f"Resource {resource.__name__} has no defined URLs")
self._reserve_urls(resource.urls)
resource.urls = map(lambda url: url.rstrip("/"), resource.urls)
dependencies = self._container.resolve_dependencies(resource)
self._api.add_resource(resource, *resource.urls, resource_class_args=dependencies)

View File

@ -81,3 +81,11 @@ def test_url_check_slash_stripping__path_separation(resource_manager):
# Following shouldn't raise and exception
resource_manager.add_resource(resource3)
resource_manager.add_resource(resource4)
def test_trailing_slash_removal(resource_manager):
bogus_endpoint = "/beef/face"
resource3 = get_mock_resource("res3", [f"{bogus_endpoint}/"])
resource_manager.add_resource(resource3)
registered_rules = resource_manager._api.app.url_map._rules
assert any([rule.rule == bogus_endpoint for rule in registered_rules])