summaryrefslogtreecommitdiff
path: root/tests/cache
diff options
context:
space:
mode:
authorRinat Khabibiev <srenskiy@gmail.com>2016-09-12 17:19:36 +0300
committerTim Graham <timograham@gmail.com>2016-09-14 19:37:18 -0400
commitf9702977b72003c17db87d6e4fdaa36415f13a38 (patch)
tree8fd57ca3176ba2e5427e59210877eef4ba70c10b /tests/cache
parent9459ec82aa12cad9b859c54c2f33f50bec057f2e (diff)
Fixed #27211 -- Made UpdateCacheMiddleware include caching headers for "304 Not Modified" responses.
Diffstat (limited to 'tests/cache')
-rw-r--r--tests/cache/tests.py17
1 files changed, 16 insertions, 1 deletions
diff --git a/tests/cache/tests.py b/tests/cache/tests.py
index b6d37148ad..4bd882e791 100644
--- a/tests/cache/tests.py
+++ b/tests/cache/tests.py
@@ -22,7 +22,9 @@ from django.core.cache import (
)
from django.core.cache.utils import make_template_fragment_key
from django.db import connection, connections
-from django.http import HttpRequest, HttpResponse, StreamingHttpResponse
+from django.http import (
+ HttpRequest, HttpResponse, HttpResponseNotModified, StreamingHttpResponse,
+)
from django.middleware.cache import (
CacheMiddleware, FetchFromCacheMiddleware, UpdateCacheMiddleware,
)
@@ -2147,6 +2149,19 @@ class CacheMiddlewareTest(SimpleTestCase):
# Inserting a CSRF cookie in a cookie-less request prevented caching.
self.assertIsNone(cache_middleware.process_request(request))
+ def test_304_response_has_http_caching_headers_but_not_cached(self):
+ original_view = mock.Mock(return_value=HttpResponseNotModified())
+ view = cache_page(2)(original_view)
+ request = self.factory.get('/view/')
+ # The view shouldn't be cached on the second call.
+ view(request).close()
+ response = view(request)
+ response.close()
+ self.assertEqual(original_view.call_count, 2)
+ self.assertIsInstance(response, HttpResponseNotModified)
+ self.assertIn('Cache-Control', response)
+ self.assertIn('Expires', response)
+
@override_settings(
CACHE_MIDDLEWARE_KEY_PREFIX='settingsprefix',