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

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

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

  • Property svn:eol-style set to native
File size: 4.2 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        pcs = self.portal.portal_cache_settings
37        pcs.setEnabled(True)
38
39        headers = pcs.getHeaderSets()
40        headers.manage_delObjects(headers.objectIds())
41        headers.invokeFactory(id='hs1', type_name='HeaderSet')
42        headers.invokeFactory(id='hs2', type_name='HeaderSet')
43        rules = pcs.getRules()
44        rules.manage_delObjects(rules.objectIds())
45
46    def test_phcm_do_cache(self):
47        pcs = self.portal.portal_cache_settings
48        rules = pcs.getRules()
49        rules.invokeFactory(id='my_rule', type_name='PolicyHTTPCacheManagerCacheRule')
50        rule = getattr(pcs.getRules(), 'my_rule')
51
52        rule.setTitle('PHCM')
53        self.assertEqual(rule.Title(), 'PHCM')
54        rule.setCacheManager('HTTPCache')
55        self.assertEqual(rule.getCacheManager(), 'HTTPCache')
56        rule.setTypes(['Filesystem Image'])
57        self.assertEqual(rule.getTypes(), ('Filesystem Image',))
58        rule.setIds([])
59        self.assertEqual(rule.getIds(), ())
60        rule.setHeaderSetIdAnon('hs1')
61        self.assertEqual(rule.getHeaderSetIdAnon(), 'hs1')
62        rule.setHeaderSetIdAuth('hs2')
63        self.assertEqual(rule.getHeaderSetIdAuth(), 'hs2')
64        rule.setCacheStop(['portal_status_message'])
65        self.assertEqual(rule.getCacheStop(),('portal_status_message',))
66
67        rule.reindexObject()
68
69        member = self.portal.portal_membership.getAuthenticatedMember()
70        image = getattr(self.portal, 'addFavorite.gif') # is associated with HTTPCache in Plone 2.1.2
71        self.assertEqual(rule.getHeaderSet(self.portal.REQUEST, image, None, member).getId(), 'hs2')
72        self.assertEqual(rule.getHeaderSet(self.portal.REQUEST, image, None, None).getId(), 'hs1')
73        nocache_image = getattr(self.portal, 'action_icon.gif') # is not associated with HTTPCache as of Plone 2.1.2
74        self.assertEqual(rule.getHeaderSet(self.portal.REQUEST, nocache_image, None, member), None)
75        self.assertEqual(rule.getHeaderSet(self.portal.REQUEST, nocache_image, None, None), None)
76
77        rule.setTypes([])
78        self.assertEqual(rule.getHeaderSet(self.portal.REQUEST, image, None, member).getId(), 'hs2')
79        rule.setTypes(['File'])
80        self.assertEqual(rule.getHeaderSet(self.portal.REQUEST, image, None, member), None)
81        rule.setTypes(['Filesystem Image'])
82        self.assertEqual(rule.getHeaderSet(self.portal.REQUEST, image, None, member).getId(), 'hs2')
83
84        # make sure stop words stop
85        self.assertEqual(rule.getHeaderSet({}, image, None, member).getId(), 'hs2')
86        self.assertEqual(rule.getHeaderSet({'portal_status_message':'foo'}, image, None, member), None)
87
88        # make sure we can check getHeaderSetId by script
89        self.portal.manage_addProduct['PythonScripts'].manage_addPythonScript('test_script')
90        self.portal.test_script.ZPythonScript_edit('view', 'return \'hs1\'')
91        rule.setHeaderSetIdAuth('expression')
92        rule.setHeaderSetIdExpression('python:object.test_script(view)')
93        self.assertEqual(rule.getHeaderSet(self.portal.REQUEST, image, None, member).getId(), 'hs1')
94
95def test_suite():
96    suite = unittest.TestSuite()
97    suite.addTest(unittest.makeSuite(CacheManagerTest))
98    return suite
Note: See TracBrowser for help on using the repository browser.