Skip to content

Commit 2680b62

Browse files
authored
Merge pull request #236 from p1c2u/fix/case-insensitive-headers-fix
Case insensitive headers fix
2 parents 753637d + ac5c676 commit 2680b62

File tree

3 files changed

+10
-6
lines changed

3 files changed

+10
-6
lines changed

openapi_core/contrib/django/requests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def create(cls, request):
3939
parameters = RequestParameters(
4040
path=path,
4141
query=request.GET,
42-
header=request.headers,
42+
header=request.headers.items(),
4343
cookie=request.COOKIES,
4444
)
4545
full_url_pattern = urljoin(

openapi_core/validation/request/datatypes.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""OpenAPI core validation request datatypes module"""
22
import attr
3-
from werkzeug.datastructures import ImmutableMultiDict
3+
from werkzeug.datastructures import ImmutableMultiDict, Headers
44

55
from openapi_core.validation.datatypes import BaseValidationResult
66

@@ -13,14 +13,14 @@ class RequestParameters(object):
1313
query
1414
Query string parameters as MultiDict. Must support getlist method.
1515
header
16-
Request headers as dict.
16+
Request headers as Headers.
1717
cookie
1818
Request cookies as dict.
1919
path
2020
Path parameters as dict. Gets resolved against spec if empty.
2121
"""
2222
query = attr.ib(factory=ImmutableMultiDict)
23-
header = attr.ib(factory=dict)
23+
header = attr.ib(factory=Headers, converter=Headers)
2424
cookie = attr.ib(factory=dict)
2525
path = attr.ib(factory=dict)
2626

tests/unit/security/test_providers.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,17 @@ def scheme(self):
1515
def provider(self, scheme):
1616
return HttpProvider(scheme)
1717

18-
def test_issue29427(self, provider):
18+
@pytest.mark.parametrize(
19+
'header',
20+
['authorization', 'Authorization', 'AUTHORIZATION'],
21+
)
22+
def test_header(self, provider, header):
1923
"""Tests HttpProvider against Issue29427
2024
https://bugs.python.org/issue29427
2125
"""
2226
jwt = 'MQ'
2327
headers = {
24-
'Authorization': 'Bearer {0}'.format(jwt),
28+
header: 'Bearer {0}'.format(jwt),
2529
}
2630
request = MockRequest(
2731
'http://localhost', 'GET', '/pets',

0 commit comments

Comments
 (0)