From 73689cb3d3e51023fd30c4714c2c540b4b6c932e Mon Sep 17 00:00:00 2001 From: p1c2u <maciag.artur@gmail.com> Date: Fri, 27 Jan 2023 03:31:32 +0000 Subject: [PATCH] Fix Requests request dont allow fragments --- openapi_core/contrib/requests/requests.py | 2 +- .../requests/test_requests_requests.py | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/openapi_core/contrib/requests/requests.py b/openapi_core/contrib/requests/requests.py index d543fec9..90feaad8 100644 --- a/openapi_core/contrib/requests/requests.py +++ b/openapi_core/contrib/requests/requests.py @@ -34,7 +34,7 @@ def __init__(self, request: Union[Request, PreparedRequest]): self.request = request if request.url is None: raise RuntimeError("Request URL is missing") - self._url_parsed = urlparse(request.url) + self._url_parsed = urlparse(request.url, allow_fragments=False) cookie = {} if isinstance(self.request, SupportsCookieJar) and isinstance( diff --git a/tests/unit/contrib/requests/test_requests_requests.py b/tests/unit/contrib/requests/test_requests_requests.py index 6d3a7982..45bfbdf8 100644 --- a/tests/unit/contrib/requests/test_requests_requests.py +++ b/tests/unit/contrib/requests/test_requests_requests.py @@ -88,3 +88,30 @@ def test_url_rule(self, request_factory, request): assert openapi_request.path == "/browse/12/" assert openapi_request.body == prepared.body assert openapi_request.mimetype == "application/json" + + def test_hash_param(self, request_factory, request): + request = request_factory("GET", "/browse/#12", subdomain="kb") + + openapi_request = RequestsOpenAPIRequest(request) + + # empty when not bound to spec + path = {} + query = ImmutableMultiDict([]) + headers = Headers( + { + "Content-Type": "application/json", + } + ) + cookies = {} + assert openapi_request.parameters == RequestParameters( + path=path, + query=query, + header=headers, + cookie=cookies, + ) + prepared = request.prepare() + assert openapi_request.method == request.method.lower() + assert openapi_request.host_url == "http://localhost" + assert openapi_request.path == "/browse/#12" + assert openapi_request.body == prepared.body + assert openapi_request.mimetype == "application/json"