[CMF-checkins] CVS: Products/CMFCore/tests - test_ActionInformation.py:1.10.2.8

Stefan H. Holek stefan at epy.co.at
Sat Jul 16 08:14:41 EDT 2005


Update of /cvs-repository/Products/CMFCore/tests
In directory cvs.zope.org:/tmp/cvs-serv12386/CMFCore/tests

Modified Files:
      Tag: CMF-1_5-branch
	test_ActionInformation.py 
Log Message:
CMFCore/ActionInformation.py: Permissions of action categories starting
with 'document' are now evaluated in the object context instead of the
portal context. This should probably be generalized some more.

This fix is for Plone 2.1, please don't shoot me ;-)


=== Products/CMFCore/tests/test_ActionInformation.py 1.10.2.7 => 1.10.2.8 ===
--- Products/CMFCore/tests/test_ActionInformation.py:1.10.2.7	Fri Jul  8 09:24:31 2005
+++ Products/CMFCore/tests/test_ActionInformation.py	Sat Jul 16 08:14:41 2005
@@ -23,6 +23,7 @@
     import Zope as Zope2
 Zope2.startup()
 
+from OFS.Folder import manage_addFolder
 from Products.PythonScripts.PythonScript import manage_addPythonScript
 
 from Products.CMFCore.Expression import createExprContext
@@ -130,6 +131,73 @@
         self.assertEqual( ai['available'], WANTED['available'] )
         self.assertEqual( ai['allowed'], WANTED['allowed'] )
         self.assertEqual( ai, WANTED )
+
+    def test_category_object(self):
+        # Permissions for action category 'object*' should be
+        # evaluated in object context.
+        manage_addFolder(self.site, 'actions_dummy')
+        self.object = self.site.actions_dummy
+        self.object.manage_permission('View', [], acquire=0)
+
+        WANTED = {'allowed': False, 'category': 'object'}
+
+        action = {'name': 'foo', 'url': '', 'permissions': ('View',)}
+        ec = createExprContext(self.site, self.site, self.object)
+        ai = self._makeOne(action, ec)
+
+        self.assertEqual( ai['category'], WANTED['category'] )
+        self.assertEqual( ai['allowed'], WANTED['allowed'] )
+
+    def test_category_folder(self):
+        # Permissions for action category 'folder*' should be
+        # evaluated in folder context.
+        manage_addFolder(self.site, 'actions_dummy')
+        self.folder = self.site.actions_dummy
+        self.folder.manage_permission('View', [], acquire=0)
+
+        WANTED = {'allowed': False, 'category': 'folder'}
+
+        action = {'name': 'foo', 'url': '', 'permissions': ('View',)}
+        ec = createExprContext(self.folder, self.site, None)
+        ai = self._makeOne(action, ec)
+        ai['category'] = 'folder' # pfff
+
+        self.assertEqual( ai['category'], WANTED['category'] )
+        self.assertEqual( ai['allowed'], WANTED['allowed'] )
+
+    def test_category_workflow(self):
+        # Permissions for action category 'workflow*' should be
+        # evaluated in object context.
+        manage_addFolder(self.site, 'actions_dummy')
+        self.object = self.site.actions_dummy
+        self.object.manage_permission('View', [], acquire=0)
+
+        WANTED = {'allowed': False, 'category': 'workflow'}
+
+        action = {'name': 'foo', 'url': '', 'permissions': ('View',)}
+        ec = createExprContext(self.site, self.site, self.object)
+        ai = self._makeOne(action, ec)
+        ai['category'] = 'workflow' # pfff
+
+        self.assertEqual( ai['category'], WANTED['category'] )
+        self.assertEqual( ai['allowed'], WANTED['allowed'] )
+
+    def test_category_document(self):
+        # Permissions for action category 'document*' should be
+        # evaluated in object context (not in portal context).
+        manage_addFolder(self.site, 'actions_dummy')
+        self.object = self.site.actions_dummy
+        self.object.manage_permission('View', [], acquire=0)
+
+        WANTED = {'allowed': False, 'category': 'document'}
+
+        action = {'name': 'foo', 'url': '', 'permissions': ('View',)}
+        ec = createExprContext(self.site, self.site, self.object)
+        ai = self._makeOne(action, ec)
+        ai['category'] = 'document' # pfff
+
+        self.assertEqual( ai['category'], WANTED['category'] )
+        self.assertEqual( ai['allowed'], WANTED['allowed'] )
 
     def test_copy(self):
 



More information about the CMF-checkins mailing list