django/tests/test_client/test_conditional_content_re...

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

57 lines
1.9 KiB
Python
Raw Normal View History

import gzip
from django.http import HttpRequest, HttpResponse, StreamingHttpResponse
from django.test import SimpleTestCase
from django.test.client import conditional_content_removal
class ConditionalContentTests(SimpleTestCase):
def test_conditional_content_removal(self):
"""
Content is removed from regular and streaming responses with a
status_code of 100-199, 204, 304, or a method of "HEAD".
"""
req = HttpRequest()
# Do nothing for 200 responses.
res = HttpResponse("abc")
conditional_content_removal(req, res)
self.assertEqual(res.content, b"abc")
res = StreamingHttpResponse(["abc"])
conditional_content_removal(req, res)
self.assertEqual(b"".join(res), b"abc")
# Strip content for some status codes.
for status_code in (100, 150, 199, 204, 304):
res = HttpResponse("abc", status=status_code)
conditional_content_removal(req, res)
self.assertEqual(res.content, b"")
res = StreamingHttpResponse(["abc"], status=status_code)
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"
res = HttpResponse("abc")
conditional_content_removal(req, res)
self.assertEqual(res.content, b"")
res = StreamingHttpResponse(["abc"])
conditional_content_removal(req, res)
self.assertEqual(b"".join(res), b"")