def test_get_placeholder_cache_key(self): version, vary_on_list = _get_placeholder_cache_version(self.placeholder, 'en', 1) desired_key = '{prefix}|render_placeholder|id:{id}|lang:{lang}|site:{site}|tz:{tz}|v:{version}|country-code:{cc}'.format( # noqa prefix=get_cms_setting('CACHE_PREFIX'), id=self.placeholder.pk, lang='en', site=1, tz=get_timezone_name(), version=version, cc='_', ) _set_placeholder_cache_version(self.placeholder, 'en', 1, version, vary_on_list=vary_on_list, duration=1) actual_key = _get_placeholder_cache_key(self.placeholder, 'en', 1, self.en_request) self.assertEqual(actual_key, desired_key) en_key = _get_placeholder_cache_key(self.placeholder, 'en', 1, self.en_request) de_key = _get_placeholder_cache_key(self.placeholder, 'de', 1, self.de_request) self.assertNotEqual(en_key, de_key) en_us_key = _get_placeholder_cache_key(self.placeholder, 'en', 1, self.en_us_request) self.assertNotEqual(en_key, en_us_key) desired_key = '{prefix}|render_placeholder|id:{id}|lang:{lang}|site:{site}|tz:{tz}|v:{version}|country-code:{cc}'.format( # noqa prefix=get_cms_setting('CACHE_PREFIX'), id=self.placeholder.pk, lang='en', site=1, tz=get_timezone_name(), version=version, cc='US', ) self.assertEqual(en_us_key, desired_key)
def test_set_get_placeholder_cache_with_long_prefix(self): """ This is for testing that everything continues to work even when the cache-keys are hashed. """ # Use an absurdly long cache prefix to get us in the right neighborhood... with self.settings(CMS_CACHE_PREFIX="super_lengthy_prefix" * 9): # 180 chars en_crazy_request = self.get_request('/en/') en_crazy_renderer = self.get_content_renderer(self.de_request) # Use a ridiculously long "country code" (80 chars), already we're at 260 chars. en_crazy_request.META['HTTP_COUNTRY_CODE'] = 'US' * 40 # 80 chars en_crazy_context = Context({'request': en_crazy_request}) en_crazy_content = en_crazy_renderer.render_placeholder( self.placeholder, en_crazy_context, language='en', width=350, ) set_placeholder_cache(self.placeholder, 'en', 1, en_crazy_content, en_crazy_request) # Prove that it is hashed... crazy_cache_key = _get_placeholder_cache_key( self.placeholder, 'en', 1, en_crazy_request) key_length = len(crazy_cache_key) # 221 = 180 (prefix length) + 1 (separator) + 40 (sha1 hash) self.assertTrue('render_placeholder' not in crazy_cache_key and key_length == 221) # Prove it still works as expected cached_en_crazy_content = get_placeholder_cache( self.placeholder, 'en', 1, en_crazy_request) self.assertEqual(en_crazy_content, cached_en_crazy_content)
def test_set_get_placeholder_cache_with_long_prefix(self): """ This is for testing that everything continues to work even when the cache-keys are hashed. """ # Use an absurdly long cache prefix to get us in the right neighborhood... with self.settings(CMS_CACHE_PREFIX="super_lengthy_prefix" * 9): # 180 chars en_crazy_request = self.get_request('/en/') # Use a ridiculously long "country code" (80 chars), already we're at 260 chars. en_crazy_request.META['HTTP_COUNTRY_CODE'] = 'US' * 40 # 80 chars en_crazy_context = Context({'request': en_crazy_request}) en_crazy_content = self.placeholder.render(en_crazy_context, 350, lang='en') set_placeholder_cache(self.placeholder, 'en', 1, en_crazy_content, en_crazy_request) # Prove that it is hashed... crazy_cache_key = _get_placeholder_cache_key(self.placeholder, 'en', 1, en_crazy_request) key_length = len(crazy_cache_key) # 213 = 180 (prefix length) + 1 (separator) + 32 (md5 hash) self.assertTrue('render_placeholder' not in crazy_cache_key and key_length == 213) # Prove it still works as expected cached_en_crazy_content = get_placeholder_cache(self.placeholder, 'en', 1, en_crazy_request) self.assertEqual(en_crazy_content, cached_en_crazy_content)