Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)