Fix WrappedRequest.get_header raising TypeError if default is None (#6310)

This commit is contained in:
Víctor Ruiz 2024-04-08 11:47:53 +02:00 committed by Adrián Chaves
parent 8c0bc1b698
commit 915f40fa81
2 changed files with 9 additions and 1 deletions

View File

@ -166,7 +166,8 @@ class WrappedRequest:
return name in self.request.headers
def get_header(self, name, default=None):
return to_unicode(self.request.headers.get(name, default), errors="replace")
value = self.request.headers.get(name, default)
return to_unicode(value, errors="replace") if value is not None else None
def header_items(self):
return [

View File

@ -43,6 +43,13 @@ class WrappedRequestTest(TestCase):
def test_get_header(self):
self.assertEqual(self.wrapped.get_header("content-type"), "text/html")
self.assertEqual(self.wrapped.get_header("xxxxx", "def"), "def")
self.assertEqual(self.wrapped.get_header("xxxxx"), None)
wrapped = WrappedRequest(
Request(
"http://www.example.com/page.html", headers={"empty-binary-header": b""}
)
)
self.assertEqual(wrapped.get_header("empty-binary-header"), "")
def test_header_items(self):
self.assertEqual(self.wrapped.header_items(), [("Content-Type", ["text/html"])])