Merge pull request #236 from p1c2u/fix/case-insensitive-headers-fix

Case insensitive headers fix
This commit is contained in:
A 2020-04-11 13:09:07 +01:00 committed by GitHub
commit 2680b62ce7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 6 deletions

View file

@ -39,7 +39,7 @@ class DjangoOpenAPIRequestFactory(object):
parameters = RequestParameters(
path=path,
query=request.GET,
header=request.headers,
header=request.headers.items(),
cookie=request.COOKIES,
)
full_url_pattern = urljoin(

View file

@ -1,6 +1,6 @@
"""OpenAPI core validation request datatypes module"""
import attr
from werkzeug.datastructures import ImmutableMultiDict
from werkzeug.datastructures import ImmutableMultiDict, Headers
from openapi_core.validation.datatypes import BaseValidationResult
@ -13,14 +13,14 @@ class RequestParameters(object):
query
Query string parameters as MultiDict. Must support getlist method.
header
Request headers as dict.
Request headers as Headers.
cookie
Request cookies as dict.
path
Path parameters as dict. Gets resolved against spec if empty.
"""
query = attr.ib(factory=ImmutableMultiDict)
header = attr.ib(factory=dict)
header = attr.ib(factory=Headers, converter=Headers)
cookie = attr.ib(factory=dict)
path = attr.ib(factory=dict)

View file

@ -15,13 +15,17 @@ class TestHttpProvider(object):
def provider(self, scheme):
return HttpProvider(scheme)
def test_issue29427(self, provider):
@pytest.mark.parametrize(
'header',
['authorization', 'Authorization', 'AUTHORIZATION'],
)
def test_header(self, provider, header):
"""Tests HttpProvider against Issue29427
https://bugs.python.org/issue29427
"""
jwt = 'MQ'
headers = {
'Authorization': 'Bearer {0}'.format(jwt),
header: 'Bearer {0}'.format(jwt),
}
request = MockRequest(
'http://localhost', 'GET', '/pets',