[Erp5-report] r19415 - /erp5/trunk/products/ERP5/tests/testWorklist.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Feb 19 18:15:29 CET 2008


Author: romain
Date: Tue Feb 19 18:15:29 2008
New Revision: 19415

URL: http://svn.erp5.org?rev=19415&view=rev
Log:
Test worklist generation based on new portal catalog properties.

Modified:
    erp5/trunk/products/ERP5/tests/testWorklist.py

Modified: erp5/trunk/products/ERP5/tests/testWorklist.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testWorklist.py?rev=19415&r1=19414&r2=19415&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testWorklist.py (original)
+++ erp5/trunk/products/ERP5/tests/testWorklist.py Tue Feb 19 18:15:29 2008
@@ -397,6 +397,152 @@
 
     self.logout()
 
+    #
+    # Check monovalued security role
+    #
+    self.login('manager')
+    module = self.getPortal().getDefaultModule(self.checked_portal_type)
+    module.manage_setLocalRoles('bar', ['Author'])
+
+    self.login('bar')
+
+    bar_document = self.createDocument()
+    bar_document.manage_permission('View', ['Owner', 'Assignee'], 0)
+
+    bar_assignee_document = self.createDocument()
+    bar_assignee_document.manage_setLocalRoles('manager', ['Assignee'])
+    bar_assignee_document.manage_permission('View', ['Owner', 'Assignee'], 0)
+
+    self.logout()
+    self.login('manager')
+
+    module.manage_delLocalRoles('bar')
+
+    # User can not see worklist as user can not view the document
+    document.manage_setLocalRoles('manager', ['Owner', 'Assignee'])
+    document.manage_permission('View', [], 0)
+    document.reindexObject()
+    get_transaction().commit()
+    self.tic()
+    self.clearCache()
+    self.logout()
+
+    for user_id in ('manager', ):
+      self.login(user_id)
+      result = workflow_tool.listActions(object=document)
+      self.logMessage("Check %s worklist as Owner" % user_id)
+      entry_list = [x for x in result \
+                    if x['name'].startswith(self.actbox_owner_name)]
+      self.assertEquals(len(entry_list), 0)
+      self.logout()
+
+    # User can not see worklist as Owner can not view the document
+    document.manage_setLocalRoles('manager', ['Owner', 'Assignee'])
+    document.manage_permission('View', ['Assignee'], 0)
+    document.reindexObject()
+    get_transaction().commit()
+    self.tic()
+    self.clearCache()
+    self.logout()
+
+    for user_id in ('manager', ):
+      self.login(user_id)
+      result = workflow_tool.listActions(object=document)
+      self.logMessage("Check %s worklist as Owner" % user_id)
+      entry_list = [x for x in result \
+                    if x['name'].startswith(self.actbox_owner_name)]
+      self.assertEquals(len(entry_list), 0)
+      self.logout()
+
+    # User can see worklist as Owner can view the document
+    document.manage_permission('View', ['Owner', 'Assignee'], 0)
+    document.reindexObject()
+    get_transaction().commit()
+    self.tic()
+    self.clearCache()
+    self.logout()
+
+    for user_id in ('manager', ):
+      self.login(user_id)
+      result = workflow_tool.listActions(object=document)
+      self.logMessage("Check %s worklist as Owner" % user_id)
+      entry_list = [x for x in result \
+                    if x['name'].startswith(self.actbox_owner_name)]
+      self.assertEquals(len(entry_list), 1)
+      self.assertTrue(
+        self.getWorklistDocumentCountFromActionName(entry_list[0]['name']), 1)
+      self.logout()
+
+    # Define a local role key
+    sql_catalog = self.portal.portal_catalog.getSQLCatalog()
+    current_sql_catalog_local_role_keys = \
+          sql_catalog.sql_catalog_local_role_keys
+    sql_catalog.sql_catalog_local_role_keys = ('Owner | owner', )
+    get_transaction().commit()
+    self.portal.portal_caches.clearAllCache()
+
+    try:
+
+      # User can not see worklist as user can not view the document
+      document.manage_setLocalRoles('manager', ['Owner', 'Assignee'])
+      document.manage_permission('View', [], 0)
+      document.reindexObject()
+      get_transaction().commit()
+      self.tic()
+      self.clearCache()
+      self.logout()
+
+      for user_id in ('manager', ):
+        self.login(user_id)
+        result = workflow_tool.listActions(object=document)
+        self.logMessage("Check %s worklist as Owner" % user_id)
+        entry_list = [x for x in result \
+                      if x['name'].startswith(self.actbox_owner_name)]
+        self.assertEquals(len(entry_list), 0)
+        self.logout()
+
+      # User can see worklist as Assignee can view the document
+      document.manage_permission('View', ['Assignee'], 0)
+      document.reindexObject()
+      get_transaction().commit()
+      self.tic()
+      self.clearCache()
+      self.logout()
+
+      for user_id in ('manager', ):
+        self.login(user_id)
+        result = workflow_tool.listActions(object=document)
+        self.logMessage("Check %s worklist as Owner" % user_id)
+        entry_list = [x for x in result \
+                      if x['name'].startswith(self.actbox_owner_name)]
+        self.assertEquals(len(entry_list), 1)
+        self.assertTrue(
+          self.getWorklistDocumentCountFromActionName(entry_list[0]['name']), 1)
+        self.logout()
+
+      # User can see worklist as Owner can view the document
+      document.manage_permission('View', ['Owner', 'Assignee'], 0)
+      document.reindexObject()
+      get_transaction().commit()
+      self.tic()
+      self.clearCache()
+      self.logout()
+
+      for user_id in ('manager', ):
+        self.login(user_id)
+        result = workflow_tool.listActions(object=document)
+        self.logMessage("Check %s worklist as Owner" % user_id)
+        entry_list = [x for x in result \
+                      if x['name'].startswith(self.actbox_owner_name)]
+        self.assertEquals(len(entry_list), 1)
+        self.assertTrue(
+          self.getWorklistDocumentCountFromActionName(entry_list[0]['name']), 1)
+        self.logout()
+    finally:
+      sql_catalog.sql_catalog_local_role_keys = \
+          current_sql_catalog_local_role_keys
+      get_transaction().commit()
+
 def test_suite():
   suite = unittest.TestSuite()
   suite.addTest(unittest.makeSuite(TestWorklist))




More information about the Erp5-report mailing list