Add a test for receiving duplicate headers

This commit is contained in:
Adrián Chaves 2023-01-11 15:59:45 +01:00
parent 517ed0749b
commit d9f6de6bf5
1 changed files with 17 additions and 0 deletions

View File

@ -214,6 +214,12 @@ class LargeChunkedFileResource(resource.Resource):
return server.NOT_DONE_YET
class DuplicateHeaderResource(resource.Resource):
def render(self, request):
request.responseHeaders.setRawHeaders(b"Set-Cookie", [b"a=b", b"c=d"])
return b""
class HttpTestCase(unittest.TestCase):
scheme = 'http'
download_handler_cls: Type = HTTPDownloadHandler
@ -239,6 +245,7 @@ class HttpTestCase(unittest.TestCase):
r.putChild(b"contentlength", ContentLengthHeaderResource())
r.putChild(b"nocontenttype", EmptyContentTypeHeaderResource())
r.putChild(b"largechunkedfile", LargeChunkedFileResource())
r.putChild(b"duplicate-header", DuplicateHeaderResource())
r.putChild(b"echo", Echo())
self.site = server.Site(r, timeout=None)
self.wrapper = WrappingFactory(self.site)
@ -407,6 +414,16 @@ class HttpTestCase(unittest.TestCase):
HtmlResponse,
)
def test_get_duplicate_header(self):
def _test(response):
self.assertEqual(
response.headers.getlist(b'Set-Cookie'),
[b'a=b', b'c=d'],
)
request = Request(self.getURL('duplicate-header'))
return self.download_request(request, Spider('foo')).addCallback(_test)
class Http10TestCase(HttpTestCase):
"""HTTP 1.0 test case"""