summaryrefslogtreecommitdiff
path: root/tests/regressiontests/middleware/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/regressiontests/middleware/tests.py')
-rw-r--r--tests/regressiontests/middleware/tests.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/tests/regressiontests/middleware/tests.py b/tests/regressiontests/middleware/tests.py
index 138ee50e43..87b19fb6da 100644
--- a/tests/regressiontests/middleware/tests.py
+++ b/tests/regressiontests/middleware/tests.py
@@ -514,6 +514,7 @@ class GZipMiddlewareTest(TestCase):
short_string = "This string is too short to be worth compressing."
compressible_string = 'a' * 500
uncompressible_string = ''.join(chr(random.randint(0, 255)) for _ in xrange(500))
+ iterator_as_content = iter(compressible_string)
def setUp(self):
self.req = HttpRequest()
@@ -589,6 +590,18 @@ class GZipMiddlewareTest(TestCase):
self.assertEqual(r.content, self.uncompressible_string)
self.assertEqual(r.get('Content-Encoding'), None)
+ def test_streaming_compression(self):
+ """
+ Tests that iterators as response content return a compressed stream without consuming
+ the whole response.content while doing so.
+ See #24158.
+ """
+ self.resp.content = self.iterator_as_content
+ r = GZipMiddleware().process_response(self.req, self.resp)
+ self.assertEqual(self.decompress(''.join(r.content)), self.compressible_string)
+ self.assertEqual(r.get('Content-Encoding'), 'gzip')
+ self.assertEqual(r.get('Content-Length'), None)
+
class ETagGZipMiddlewareTest(TestCase):
"""