Skip to content

Commit d5f9c30

Browse files
authored
Merge pull request #553 from jitka/master
strip Request mimetype
2 parents 7456c4b + 218d07f commit d5f9c30

File tree

3 files changed

+36
-3
lines changed

3 files changed

+36
-3
lines changed

openapi_core/contrib/requests/requests.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def mimetype(self) -> str:
8080
return str(
8181
self.request.headers.get("Content-Type")
8282
or self.request.headers.get("Accept")
83-
)
83+
).split(";")[0]
8484

8585

8686
class RequestsOpenAPIWebhookRequest(RequestsOpenAPIRequest):

tests/unit/contrib/requests/conftest.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,18 @@ def request_factory():
1414
schema = "http"
1515
server_name = "localhost"
1616

17-
def create_request(method, path, subdomain=None, query_string=""):
17+
def create_request(
18+
method,
19+
path,
20+
subdomain=None,
21+
query_string="",
22+
content_type="application/json",
23+
):
1824
base_url = "://".join([schema, server_name])
1925
url = urljoin(base_url, path)
2026
params = parse_qs(query_string)
2127
headers = {
22-
"Content-Type": "application/json",
28+
"Content-Type": content_type,
2329
}
2430
return Request(method, url, params=params, headers=headers)
2531

tests/unit/contrib/requests/test_requests_requests.py

+27
Original file line numberDiff line numberDiff line change
@@ -115,3 +115,30 @@ def test_hash_param(self, request_factory, request):
115115
assert openapi_request.path == "/browse/#12"
116116
assert openapi_request.body == prepared.body
117117
assert openapi_request.mimetype == "application/json"
118+
119+
def test_content_type_with_charset(self, request_factory, request):
120+
request = request_factory(
121+
"GET",
122+
"/",
123+
subdomain="www",
124+
content_type="application/json; charset=utf-8",
125+
)
126+
127+
openapi_request = RequestsOpenAPIRequest(request)
128+
129+
path = {}
130+
query = ImmutableMultiDict([])
131+
headers = Headers(dict(request.headers))
132+
cookies = {}
133+
prepared = request.prepare()
134+
assert openapi_request.parameters == RequestParameters(
135+
path=path,
136+
query=query,
137+
header=headers,
138+
cookie=cookies,
139+
)
140+
assert openapi_request.method == request.method.lower()
141+
assert openapi_request.host_url == "http://localhost"
142+
assert openapi_request.path == "/"
143+
assert openapi_request.body == prepared.body
144+
assert openapi_request.mimetype == "application/json"

0 commit comments

Comments
 (0)