diff options
Diffstat (limited to 'tests/regressiontests/cache')
| -rw-r--r-- | tests/regressiontests/cache/tests.py | 34 | ||||
| -rw-r--r-- | tests/regressiontests/cache/urls.py | 5 | ||||
| -rw-r--r-- | tests/regressiontests/cache/views.py | 4 |
3 files changed, 31 insertions, 12 deletions
diff --git a/tests/regressiontests/cache/tests.py b/tests/regressiontests/cache/tests.py index edd6fbf724..f109e39f00 100644 --- a/tests/regressiontests/cache/tests.py +++ b/tests/regressiontests/cache/tests.py @@ -19,6 +19,7 @@ from django.test.utils import get_warnings_state, restore_warnings_state from django.utils import translation from django.utils.cache import patch_vary_headers, get_cache_key, learn_cache_key from django.utils.hashcompat import md5_constructor +from django.views.decorators.cache import cache_page from regressiontests.cache.models import Poll, expensive_calculation # functions/classes for complex data type tests @@ -653,15 +654,18 @@ def hello_world_view(request, value): class CacheMiddlewareTest(unittest.TestCase): def setUp(self): + from django.middleware import cache as cache_middleware_module + + self.cache_middleware_module = cache_middleware_module + self.orig_cache = self.cache_middleware_module.cache self.orig_cache_middleware_anonymous_only = getattr(settings, 'CACHE_MIDDLEWARE_ANONYMOUS_ONLY', False) - self._orig_cache_backend = settings.CACHE_BACKEND + cache_middleware_module.cache = get_cache("locmem://") settings.CACHE_MIDDLEWARE_ANONYMOUS_ONLY = False - settings.CACHE_BACKEND = "locmem://" def tearDown(self): + self.cache_middleware_module.cache = self.orig_cache settings.CACHE_MIDDLEWARE_ANONYMOUS_ONLY = self.orig_cache_middleware_anonymous_only - settings.CACHE_BACKEND = self._orig_cache_backend def test_cache_middleware_anonymous_only_wont_cause_session_access(self): """ The cache middleware shouldn't cause a session access due to @@ -694,6 +698,30 @@ class CacheMiddlewareTest(unittest.TestCase): self.assertEqual(request.session.accessed, False) + def test_cache_middleware_anonymous_only_with_cache_page(self): + """CACHE_MIDDLEWARE_ANONYMOUS_ONLY should still be effective when used + with the cache_page decorator: the response to a request from an + authenticated user should not be cached.""" + settings.CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True + + request = HttpRequest() + request.path = '/view/' + request.method = 'GET' + + class MockAuthenticatedUser(object): + def is_authenticated(self): + return True + + class MockAccessedSession(object): + accessed = True + + request.user = MockAuthenticatedUser() + request.session = MockAccessedSession() + + response = cache_page(hello_world_view)(request, '1') + + self.assertFalse("Cache-Control" in response) + if __name__ == '__main__': unittest.main() diff --git a/tests/regressiontests/cache/urls.py b/tests/regressiontests/cache/urls.py deleted file mode 100644 index b98447bfa3..0000000000 --- a/tests/regressiontests/cache/urls.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.conf.urls.defaults import patterns - -urlpatterns = patterns('regressiontests.cache.views', - (r'^$', 'home'), -) diff --git a/tests/regressiontests/cache/views.py b/tests/regressiontests/cache/views.py deleted file mode 100644 index 9b72f03f56..0000000000 --- a/tests/regressiontests/cache/views.py +++ /dev/null @@ -1,4 +0,0 @@ -from django.http import HttpResponse - -def home(request): - return HttpResponse('Hello World!') |
