mirror of
https://github.com/django/django.git
synced 2025-10-17 22:07:29 +00:00
Fixed #26447 -- Deprecated settings.USE_ETAGS in favor of ConditionalGetMiddleware.
This commit is contained in:
parent
46a3d7604e
commit
a840710e1e
15 changed files with 126 additions and 24 deletions
|
@ -20,8 +20,11 @@ from django.middleware.common import (
|
|||
)
|
||||
from django.middleware.gzip import GZipMiddleware
|
||||
from django.middleware.http import ConditionalGetMiddleware
|
||||
from django.test import RequestFactory, SimpleTestCase, override_settings
|
||||
from django.test import (
|
||||
RequestFactory, SimpleTestCase, ignore_warnings, override_settings,
|
||||
)
|
||||
from django.utils import six
|
||||
from django.utils.deprecation import RemovedInDjango21Warning
|
||||
from django.utils.encoding import force_str
|
||||
from django.utils.six.moves import range
|
||||
from django.utils.six.moves.urllib.parse import quote
|
||||
|
@ -256,12 +259,14 @@ class CommonMiddlewareTest(SimpleTestCase):
|
|||
|
||||
# ETag + If-Not-Modified support tests
|
||||
|
||||
@ignore_warnings(category=RemovedInDjango21Warning)
|
||||
@override_settings(USE_ETAGS=True)
|
||||
def test_etag(self):
|
||||
req = HttpRequest()
|
||||
res = HttpResponse('content')
|
||||
self.assertTrue(CommonMiddleware().process_response(req, res).has_header('ETag'))
|
||||
|
||||
@ignore_warnings(category=RemovedInDjango21Warning)
|
||||
@override_settings(USE_ETAGS=True)
|
||||
def test_etag_streaming_response(self):
|
||||
req = HttpRequest()
|
||||
|
@ -269,12 +274,14 @@ class CommonMiddlewareTest(SimpleTestCase):
|
|||
res['ETag'] = 'tomatoes'
|
||||
self.assertEqual(CommonMiddleware().process_response(req, res).get('ETag'), 'tomatoes')
|
||||
|
||||
@ignore_warnings(category=RemovedInDjango21Warning)
|
||||
@override_settings(USE_ETAGS=True)
|
||||
def test_no_etag_streaming_response(self):
|
||||
req = HttpRequest()
|
||||
res = StreamingHttpResponse(['content'])
|
||||
self.assertFalse(CommonMiddleware().process_response(req, res).has_header('ETag'))
|
||||
|
||||
@ignore_warnings(category=RemovedInDjango21Warning)
|
||||
@override_settings(USE_ETAGS=True)
|
||||
def test_no_etag_no_store_cache(self):
|
||||
req = HttpRequest()
|
||||
|
@ -282,6 +289,7 @@ class CommonMiddlewareTest(SimpleTestCase):
|
|||
res['Cache-Control'] = 'No-Cache, No-Store, Max-age=0'
|
||||
self.assertFalse(CommonMiddleware().process_response(req, res).has_header('ETag'))
|
||||
|
||||
@ignore_warnings(category=RemovedInDjango21Warning)
|
||||
@override_settings(USE_ETAGS=True)
|
||||
def test_etag_extended_cache_control(self):
|
||||
req = HttpRequest()
|
||||
|
@ -289,6 +297,7 @@ class CommonMiddlewareTest(SimpleTestCase):
|
|||
res['Cache-Control'] = 'my-directive="my-no-store"'
|
||||
self.assertTrue(CommonMiddleware().process_response(req, res).has_header('ETag'))
|
||||
|
||||
@ignore_warnings(category=RemovedInDjango21Warning)
|
||||
@override_settings(USE_ETAGS=True)
|
||||
def test_if_none_match(self):
|
||||
first_req = HttpRequest()
|
||||
|
@ -502,6 +511,30 @@ class ConditionalGetMiddlewareTest(SimpleTestCase):
|
|||
|
||||
# Tests for the ETag header
|
||||
|
||||
def test_middleware_calculates_etag(self):
|
||||
self.assertNotIn('ETag', self.resp)
|
||||
self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp)
|
||||
self.assertEqual(self.resp.status_code, 200)
|
||||
self.assertNotEqual('', self.resp['ETag'])
|
||||
|
||||
def test_middleware_wont_overwrite_etag(self):
|
||||
self.resp['ETag'] = 'eggs'
|
||||
self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp)
|
||||
self.assertEqual(self.resp.status_code, 200)
|
||||
self.assertEqual('eggs', self.resp['ETag'])
|
||||
|
||||
def test_no_etag_streaming_response(self):
|
||||
res = StreamingHttpResponse(['content'])
|
||||
self.assertFalse(ConditionalGetMiddleware().process_response(self.req, res).has_header('ETag'))
|
||||
|
||||
def test_no_etag_no_store_cache(self):
|
||||
self.resp['Cache-Control'] = 'No-Cache, No-Store, Max-age=0'
|
||||
self.assertFalse(ConditionalGetMiddleware().process_response(self.req, self.resp).has_header('ETag'))
|
||||
|
||||
def test_etag_extended_cache_control(self):
|
||||
self.resp['Cache-Control'] = 'my-directive="my-no-store"'
|
||||
self.assertTrue(ConditionalGetMiddleware().process_response(self.req, self.resp).has_header('ETag'))
|
||||
|
||||
def test_if_none_match_and_no_etag(self):
|
||||
self.req.META['HTTP_IF_NONE_MATCH'] = 'spam'
|
||||
self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp)
|
||||
|
@ -796,6 +829,7 @@ class GZipMiddlewareTest(SimpleTestCase):
|
|||
self.assertIsNone(r.get('Content-Encoding'))
|
||||
|
||||
|
||||
@ignore_warnings(category=RemovedInDjango21Warning)
|
||||
@override_settings(USE_ETAGS=True)
|
||||
class ETagGZipMiddlewareTest(SimpleTestCase):
|
||||
"""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue