]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
test[curl_httpclient]: add test case for ISO8859-1 header values
authorFlorian Best <best@univention.de>
Fri, 28 Jan 2022 20:00:58 +0000 (21:00 +0100)
committerFlorian Best <best@univention.de>
Fri, 28 Jan 2022 20:34:12 +0000 (21:34 +0100)
tornado/test/httpclient_test.py

index 6b6aced0574ea7bad775c3c21210ad8f6894ff23..af5e018970272987f1522fc3f4fbc29dc0c29219 100644 (file)
@@ -151,6 +151,11 @@ class InvalidGzipHandler(RequestHandler):
         self.write(body)
 
 
+class HeaderEncodingHandler(RequestHandler):
+    def get(self):
+        self.finish(self.request.headers["Foo"].encode("ISO8859-1"))
+
+
 # These tests end up getting run redundantly: once here with the default
 # HTTPClient implementation, and then again in each implementation's own
 # test suite.
@@ -175,6 +180,7 @@ class HTTPClientCommonTestCase(AsyncHTTPTestCase):
                 url("/patch", PatchHandler),
                 url("/set_header", SetHeaderHandler),
                 url("/invalid_gzip", InvalidGzipHandler),
+                url("/header-encoding", HeaderEncodingHandler),
             ],
             gzip=True,
         )
@@ -537,6 +543,16 @@ X-XSS-Protection: 1;
             finally:
                 self.io_loop.remove_handler(sock.fileno())
 
+    @gen_test
+    def test_header_encoding(self):
+        response = yield self.http_client.fetch(
+            self.get_url("/header-encoding"),
+            headers={
+                "Foo": "b\xe4r",
+            },
+        )
+        self.assertEqual(response.body, u"b\xe4r".encode("ISO8859-1"))
+
     def test_304_with_content_length(self):
         # According to the spec 304 responses SHOULD NOT include
         # Content-Length or other entity headers, but some servers do it