Пример #1
0
 def test_bypass_cache(self):
     req = mock.Mock()
     req.META = {'HTTP_CACHE_CONTROL': 'max-age=0'}
     cm = CachingMixin()
     self.assertFalse(cm.should_bypass_cache(req))
     req.META['HTTP_CACHE_CONTROL'] = 'max-age=0, no-cache'
     self.assertTrue(cm.should_bypass_cache(req))
Пример #2
0
 def test_bypass_cache(self):
     req = mock.Mock()
     req.META = {'HTTP_CACHE_CONTROL' : 'max-age=0'}
     cm = CachingMixin()
     self.assertFalse(cm.should_bypass_cache(req))
     req.META['HTTP_CACHE_CONTROL'] = 'max-age=0, no-cache'
     self.assertTrue(cm.should_bypass_cache(req))
Пример #3
0
 def test_should_regenerate(self, mocktime):
     now = 1319128343
     mocktime.time.return_value = now
     cm = CachingMixin()
     response = HttpResponse()
     response['Last-Modified'] = http_date(now)
     self.assertFalse(cm.should_regenerate(response))
     response['Last-Modified'] = http_date(now - (100 + settings.BETTERCACHE_LOCAL_POSTCHECK))
     self.assertTrue(cm.should_regenerate(response))
Пример #4
0
 def test_should_regenerate(self, mocktime):
     now = 1319128343
     mocktime.time.return_value = now
     cm = CachingMixin()
     response = HttpResponse()
     response['Last-Modified'] = http_date(now)
     self.assertFalse(cm.should_regenerate(response))
     response['Last-Modified'] = http_date(
         now - (100 + settings.BETTERCACHE_LOCAL_POSTCHECK))
     self.assertTrue(cm.should_regenerate(response))
Пример #5
0
 def test_patch_headers(self, settings):
     resp = HttpResponse()
     resp['Vary'] = 'cookie, accept-encoding'
     self.set_settings(settings)
     cm = CachingMixin()
     cm.patch_headers(resp)
     self.assertEqual(resp['Vary'], 'accept-encoding')
     self.assertEqual(resp['Edge-Control'], 'cache-maxage=1d')
     ccdict = get_header_dict(resp, 'Cache-Control')
     self.assertEqual(ccdict['pre-check'], '60')
     self.assertEqual(ccdict['post-check'], '6')
     self.assertEqual(ccdict['max-age'], '60')
Пример #6
0
 def test_patch_headers(self, settings):
     resp = HttpResponse()
     resp['Vary'] = 'cookie, accept-encoding'
     self.set_settings(settings)
     cm = CachingMixin()
     cm.patch_headers(resp)
     self.assertEqual(resp['Vary'], 'accept-encoding')
     self.assertEqual(resp['Edge-Control'], 'cache-maxage=1d')
     ccdict = get_header_dict(resp, 'Cache-Control')
     self.assertEqual(ccdict['pre-check'], '60')
     self.assertEqual(ccdict['post-check'], '6')
     self.assertEqual(ccdict['max-age'], '60')
Пример #7
0
 def test_should_cache(self, settings):
     self.set_settings(settings)
     req = HttpRequest()
     req._cache_update_cache = True
     req.session = mock.Mock()
     req.session.accessed = False
     req.user = mock.Mock()
     req.user.is_authenticated = False
     resp = HttpResponse()
     resp.status_code = 200
     settings.BETTERCACHE_ANONYMOUS_ONLY = False
     cm = CachingMixin()
     self.assertTrue(cm.should_cache(req, resp))
     settings.BETTERCACHE_ANONYMOUS_ONLY = True
     self.assertTrue(cm.should_cache(req, resp))
     req.session.accessed = True
     self.assertTrue(cm.should_cache(req, resp))
     req.user.is_authenticated = True
     self.assertFalse(cm.should_cache(req, resp))
     settings.BETTERCACHE_ANONYMOUS_ONLY = False
     resp.status_code = 500
     self.assertFalse(cm.should_cache(req, resp))
     resp.status_code = 200
     req._cache_update_cache = False
     self.assertFalse(cm.should_cache(req, resp))
Пример #8
0
 def test_should_cache(self, settings):
     self.set_settings(settings)
     req = HttpRequest()
     req._cache_update_cache = True
     req.session = mock.Mock()
     req.session.accessed = False
     req.user = mock.Mock()
     req.user.is_authenticated = False
     resp = HttpResponse()
     resp.status_code = 200
     settings.BETTERCACHE_ANONYMOUS_ONLY = False
     cm = CachingMixin()
     self.assertTrue(cm.should_cache(req, resp))
     settings.BETTERCACHE_ANONYMOUS_ONLY = True
     self.assertTrue(cm.should_cache(req, resp))
     req.session.accessed = True
     self.assertTrue(cm.should_cache(req, resp))
     req.user.is_authenticated = True
     self.assertFalse(cm.should_cache(req, resp))
     settings.BETTERCACHE_ANONYMOUS_ONLY = False
     resp.status_code=500
     self.assertFalse(cm.should_cache(req, resp))
     resp.status_code=200
     req._cache_update_cache = False 
     self.assertFalse(cm.should_cache(req, resp))
 def process_request(self, request):
     if not request.method in ('GET', 'HEAD',) or CachingMixin.should_bypass_cache(request):
         return None
     if hasattr(request, '_cache_update_cache'):
         return None
     request._cache_update_cache = False
     result = GeneratePage.apply_async((strip_wsgi(request),))
     response = result.get()
     return response
Пример #10
0
 def process_request(self, request):
     if not request.method in ('GET', 'HEAD',) or CachingMixin.should_bypass_cache(request):
         return None
     if hasattr(request, '_cache_update_cache'):
         return None
     request._cache_update_cache = False
     result = GeneratePage.apply_async((strip_wsgi(request),))
     response = result.get()
     return response
Пример #11
0
 def test_get_cache(self, settings):
     fake_cache.clear()
     self.set_settings(settings)
     req = HttpRequest()
     cm = CachingMixin()
     cm.cache_key = lambda x: 'notcachedyet'
     self.assertEquals(cm.get_cache(req), (None, None))
     cm.cache_key = lambda x: 'test_key'
     self.assertEquals(cm.get_cache(req), (None, None))
     fake_cache.set('test_key', ('resp', time.time() - 3600))
     self.assertEquals(cm.get_cache(req), ('resp', True))
     fake_cache.set('test_key', ('resp', time.time() + 3600))
     self.assertEquals(cm.get_cache(req), ('resp', False))
Пример #12
0
 def test_set_cache(self, settings, cache):
     resp = mock.Mock()
     req = mock.Mock()
     cm = CachingMixin()
     cm.cache_key = lambda x: 'test'
     resp.render = False
     cm.set_cache(req, resp)
     self.assertTrue(cache.set.called)
     resp.render = lambda: 1
     cm.set_cache(req, resp)
     self.assertTrue(resp.add_post_render_callback.called)
Пример #13
0
 def test_get_cache(self, settings):
     fake_cache.clear()
     self.set_settings(settings)
     req = HttpRequest()
     cm = CachingMixin()
     cm.cache_key = lambda x: 'notcachedyet'
     self.assertEquals(cm.get_cache(req), (None, None))
     cm.cache_key = lambda x: 'test_key'
     self.assertEquals(cm.get_cache(req), (None, None))
     fake_cache.set('test_key', ('resp', time.time() - 3600)) 
     self.assertEquals(cm.get_cache(req), ('resp', True))
     fake_cache.set('test_key', ('resp', time.time() + 3600)) 
     self.assertEquals(cm.get_cache(req), ('resp', False))
Пример #14
0
 def test_set_cache(self, settings,  cache):
     resp = mock.Mock()
     req = mock.Mock()
     cm = CachingMixin()
     cm.cache_key = lambda x: 'test'
     resp.render = False
     cm.set_cache(req, resp)
     self.assertTrue(cache.set.called)
     resp.render = lambda : 1
     cm.set_cache(req, resp)
     self.assertTrue(resp.add_post_render_callback.called)
Пример #15
0
 def test_uncacheable_headers(self):
     resp = HttpResponse()
     cm = CachingMixin()
     self.assertFalse(cm.has_uncacheable_headers(resp))
     resp['Expires'] = http_date(time.time() - 100)
     self.assertTrue(cm.has_uncacheable_headers(resp))
     resp['Expires'] = http_date(time.time() + 100000)
     self.assertFalse(cm.has_uncacheable_headers(resp))
     cc_dict = {
         'max-age': 0,
     }
     set_header_dict(resp, 'Cache-Control', cc_dict)
     self.assertTrue(cm.has_uncacheable_headers(resp))
     cc_dict['max-age'] = 100
     set_header_dict(resp, 'Cache-Control', cc_dict)
     self.assertFalse(cm.has_uncacheable_headers(resp))
     cc_dict['no-cache'] = True
     set_header_dict(resp, 'Cache-Control', cc_dict)
     self.assertTrue(cm.has_uncacheable_headers(resp))
     cc_dict.pop('no-cache')
     cc_dict['private'] = True
     set_header_dict(resp, 'Cache-Control', cc_dict)
     self.assertTrue(cm.has_uncacheable_headers(resp))
Пример #16
0
 def test_uncacheable_headers(self):
     resp = HttpResponse()
     cm = CachingMixin()
     self.assertFalse(cm.has_uncacheable_headers(resp))
     resp['Expires'] = http_date(time.time()-100)
     self.assertTrue(cm.has_uncacheable_headers(resp))
     resp['Expires'] = http_date(time.time()+100000)
     self.assertFalse(cm.has_uncacheable_headers(resp))
     cc_dict = { 'max-age' : 0,}
     set_header_dict(resp, 'Cache-Control', cc_dict)
     self.assertTrue(cm.has_uncacheable_headers(resp))
     cc_dict['max-age'] = 100
     set_header_dict(resp, 'Cache-Control', cc_dict)
     self.assertFalse(cm.has_uncacheable_headers(resp))
     cc_dict['no-cache'] = True
     set_header_dict(resp, 'Cache-Control', cc_dict)
     self.assertTrue(cm.has_uncacheable_headers(resp))
     cc_dict.pop('no-cache')
     cc_dict['private'] = True
     set_header_dict(resp, 'Cache-Control', cc_dict)
     self.assertTrue(cm.has_uncacheable_headers(resp))