Loading django/http/utils.py +2 −2 Original line number Diff line number Diff line Loading @@ -31,13 +31,13 @@ def conditional_content_removal(request, response): if response.streaming: response.streaming_content = [] else: response.content = '' response.content = b'' response['Content-Length'] = '0' if request.method == 'HEAD': if response.streaming: response.streaming_content = [] else: response.content = '' response.content = b'' return response Loading tests/http_utils/tests.py +24 −0 Original line number Diff line number Diff line from __future__ import unicode_literals import io import gzip from django.http import HttpRequest, HttpResponse, StreamingHttpResponse from django.http.utils import conditional_content_removal from django.test import TestCase # based on Python 3.3's gzip.compress def gzip_compress(data): buf = io.BytesIO() with gzip.GzipFile(fileobj=buf, mode='wb', compresslevel=0) as f: f.write(data) return buf.getvalue() class HttpUtilTests(TestCase): def test_conditional_content_removal(self): Loading Loading @@ -33,6 +44,19 @@ class HttpUtilTests(TestCase): conditional_content_removal(req, res) self.assertEqual(b''.join(res), b'') # Issue #20472 abc = gzip_compress(b'abc') res = HttpResponse(abc, status=304) res['Content-Encoding'] = 'gzip' conditional_content_removal(req, res) self.assertEqual(res.content, b'') res = StreamingHttpResponse([abc], status=304) res['Content-Encoding'] = 'gzip' conditional_content_removal(req, res) self.assertEqual(b''.join(res), b'') # Strip content for HEAD requests. req.method = 'HEAD' Loading Loading
django/http/utils.py +2 −2 Original line number Diff line number Diff line Loading @@ -31,13 +31,13 @@ def conditional_content_removal(request, response): if response.streaming: response.streaming_content = [] else: response.content = '' response.content = b'' response['Content-Length'] = '0' if request.method == 'HEAD': if response.streaming: response.streaming_content = [] else: response.content = '' response.content = b'' return response Loading
tests/http_utils/tests.py +24 −0 Original line number Diff line number Diff line from __future__ import unicode_literals import io import gzip from django.http import HttpRequest, HttpResponse, StreamingHttpResponse from django.http.utils import conditional_content_removal from django.test import TestCase # based on Python 3.3's gzip.compress def gzip_compress(data): buf = io.BytesIO() with gzip.GzipFile(fileobj=buf, mode='wb', compresslevel=0) as f: f.write(data) return buf.getvalue() class HttpUtilTests(TestCase): def test_conditional_content_removal(self): Loading Loading @@ -33,6 +44,19 @@ class HttpUtilTests(TestCase): conditional_content_removal(req, res) self.assertEqual(b''.join(res), b'') # Issue #20472 abc = gzip_compress(b'abc') res = HttpResponse(abc, status=304) res['Content-Encoding'] = 'gzip' conditional_content_removal(req, res) self.assertEqual(res.content, b'') res = StreamingHttpResponse([abc], status=304) res['Content-Encoding'] = 'gzip' conditional_content_removal(req, res) self.assertEqual(b''.join(res), b'') # Strip content for HEAD requests. req.method = 'HEAD' Loading