source: products/vendor/Products.CacheSetup/current/Products/CacheSetup/tests/unused/test_tool.py @ 3296

Last change on this file since 3296 was 3296, checked in by fenix, 13 years ago

Load Products.CacheSetup?-1.2.1 into vendor/Products.CacheSetup?/current.

  • Property svn:eol-style set to native
File size: 4.9 KB
Line 
1import unittest
2
3from base import CacheFuTestCase
4
5from Products.CMFCore.utils  import getToolByName
6import Products.CacheSetup.config as config
7
8# util for making content in a container
9def makeContent(container, id, portal_type, title=None):
10    container.invokeFactory(id=id, type_name=portal_type)
11    o = getattr(container, id)
12    if title is not None:
13        o.setTitle(title)
14    return o
15
16
17# This is the test case. You will have to add test_<methods> to your
18# class inorder to assert things about your Product.
19class CacheManagerTest(CacheFuTestCase):
20    USER1 = 'user1'
21   
22    def afterSetUp(self):
23        CacheFuTestCase.afterSetUp(self)
24       
25        # Add a couple of users
26        self.portal.acl_users._doAddUser('manager', 'secret', ['Manager'], [])
27        self.portal.acl_users._doAddUser(self.USER1, 'secret', ['Member'], [])
28        self.login('manager')
29
30        self.portal.portal_quickinstaller.installProducts(['CacheSetup'])
31
32        # We have added a skin so we need to rebuild the skin object
33        # (since the object is cached in the current request)
34        self._refreshSkinData()
35
36    def test_rule_and_header_set(self):
37        d = makeContent(self.folder, 'doc', 'Document', 'My document')
38        pcs = self.portal.portal_cache_settings
39        member = self.portal.portal_membership.getAuthenticatedMember()
40
41        # these aren't comprehensive -- there is better coverage in test_functional
42        (rule, header_set) = pcs.getRuleAndHeaderSet(d.REQUEST, d, 'document_view', None)
43        self.assertEqual(rule.getId(), 'plone-content-types')
44        self.assertEqual(header_set.getId(), 'cache-in-memory')
45        (rule, header_set) = pcs.getRuleAndHeaderSet(d.REQUEST, d, 'document_view', member)
46        self.assertEqual(rule.getId(), 'plone-content-types')
47        self.assertEqual(header_set.getId(), 'cache-with-etag')
48
49        (rule, header_set) = pcs.getRuleAndHeaderSet(self.portal.REQUEST, self.portal, 'sitemap', None)
50        self.assertEqual(rule.getId(), 'plone-templates')
51        self.assertEqual(header_set.getId(), 'cache-in-memory')
52        (rule, header_set) = pcs.getRuleAndHeaderSet(self.portal.REQUEST, self.portal, 'sitemap', member)
53        self.assertEqual(rule.getId(), 'plone-templates')
54        self.assertEqual(header_set.getId(), 'cache-with-etag')
55       
56        (rule, header_set) = pcs.getRuleAndHeaderSet(self.portal.REQUEST, self.folder, 'folder_contents', None)
57        self.assertEqual(rule.getId(), 'plone-containers')
58        self.assertEqual(header_set.getId(), 'cache-in-memory')
59        (rule, header_set) = pcs.getRuleAndHeaderSet(self.portal.REQUEST, self.folder, 'folder_contents', member)
60        self.assertEqual(rule.getId(), 'plone-containers')
61        self.assertEqual(header_set.getId(), 'cache-with-etag')
62       
63        image = getattr(self.portal, 'addFavorite.gif') # associated with HTTPCache in Plone 2.1.2
64        (rule, header_set) = pcs.getRuleAndHeaderSet(image.REQUEST, image, None, None)
65        self.assertEqual(rule.getId(), 'httpcache')
66        self.assertEqual(header_set.getId(), 'cache-in-browser-24-hours')
67        (rule, header_set) = pcs.getRuleAndHeaderSet(image.REQUEST, image, None, member)
68        self.assertEqual(rule.getId(), 'httpcache')
69        self.assertEqual(header_set.getId(), 'cache-in-browser-24-hours')
70       
71    def test_purged_urls(self):
72        pcs = self.portal.portal_cache_settings
73        url_tool = getToolByName(self.portal, 'portal_url')
74
75        d = makeContent(self.folder, 'doc', 'Document', 'My document')
76        doc_url = url_tool.getRelativeUrl(d)
77        purged_urls = [doc_url + url for url in ['','/','/view','/document_view']]
78        purged_urls.sort()
79
80        pcs.setCacheConfig('zserver')
81        urls = pcs.getUrlsToPurge(d)
82        self.assertEqual(urls, [])
83
84        pcs.setCacheConfig('apache')
85        urls = pcs.getUrlsToPurge(d)
86        self.assertEqual(urls, [])
87
88        pcs.setCacheConfig('squid')
89        urls = pcs.getUrlsToPurge(d)
90        urls.sort()
91        self.assertEqual(urls, purged_urls)
92
93        d = makeContent(self.folder, 'index_html', 'Document', 'My document')
94        doc_url = url_tool.getRelativeUrl(d)
95        purged_urls = [doc_url + url for url in ['','/','/view','/document_view']]
96        parent_url = url_tool.getRelativeUrl(d.getParentNode())
97        purged_urls += [parent_url + url for url in ['','/','/view']]
98        purged_urls.sort()
99
100        urls = pcs.getUrlsToPurge(d)
101        urls.sort()
102        self.assertEqual(urls, purged_urls)
103
104    def test_purged_urls_for_squid_behind_apache(self):
105        pcs = self.portal.portal_cache_settings
106        url_tool = getToolByName(self.portal, 'portal_url')
107        pcs.setCacheConfig('squid_behind_apache')
108        pcs.setDomains(['http://www.mysite.com','https://www.mysite.com'])
109
110        d = makeContent(self.folder, 'doc', 'Document', 'My document')
111       
112
113def test_suite():
114    suite = unittest.TestSuite()
115    suite.addTest(unittest.makeSuite(CacheManagerTest))
116    return suite
Note: See TracBrowser for help on using the repository browser.