Skip to content

Commit 73689cb

Browse files
committed
Fix Requests request dont allow fragments
1 parent c5bb182 commit 73689cb

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

Diff for: openapi_core/contrib/requests/requests.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def __init__(self, request: Union[Request, PreparedRequest]):
3434
self.request = request
3535
if request.url is None:
3636
raise RuntimeError("Request URL is missing")
37-
self._url_parsed = urlparse(request.url)
37+
self._url_parsed = urlparse(request.url, allow_fragments=False)
3838

3939
cookie = {}
4040
if isinstance(self.request, SupportsCookieJar) and isinstance(

Diff for: tests/unit/contrib/requests/test_requests_requests.py

+27
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,30 @@ def test_url_rule(self, request_factory, request):
8888
assert openapi_request.path == "/browse/12/"
8989
assert openapi_request.body == prepared.body
9090
assert openapi_request.mimetype == "application/json"
91+
92+
def test_hash_param(self, request_factory, request):
93+
request = request_factory("GET", "/browse/#12", subdomain="kb")
94+
95+
openapi_request = RequestsOpenAPIRequest(request)
96+
97+
# empty when not bound to spec
98+
path = {}
99+
query = ImmutableMultiDict([])
100+
headers = Headers(
101+
{
102+
"Content-Type": "application/json",
103+
}
104+
)
105+
cookies = {}
106+
assert openapi_request.parameters == RequestParameters(
107+
path=path,
108+
query=query,
109+
header=headers,
110+
cookie=cookies,
111+
)
112+
prepared = request.prepare()
113+
assert openapi_request.method == request.method.lower()
114+
assert openapi_request.host_url == "http://localhost"
115+
assert openapi_request.path == "/browse/#12"
116+
assert openapi_request.body == prepared.body
117+
assert openapi_request.mimetype == "application/json"

0 commit comments

Comments
 (0)