[Erp5-report] r19173 - /erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Feb 8 13:46:35 CET 2008


Author: nicolas
Date: Fri Feb  8 13:46:34 2008
New Revision: 19173

URL: http://svn.erp5.org?rev=19173&view=rev
Log:
Test Security Cataloging with ERP5Security

Modified:
    erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py

Modified: erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py?rev=19173&r1=19172&r2=19173&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py (original)
+++ erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py Fri Feb  8 13:46:34 2008
@@ -1708,6 +1708,73 @@
                                              local_roles='Assignee')[0][0])
 
 
+  def test_50_bis_LocalRolesArgumentWithERP5Security(self, quiet=quiet, run=run_all_test):
+    """test local_roles= argument with ERP5Security
+    """
+    if not run: return
+    if not quiet:
+      message = 'local_roles= argument with ERP5Security'
+      ZopeTestCase._print('\n%s ' % message)
+      LOG('Testing... ',0,message)
+    login = PortalTestCase.login
+    #Testing Security By ERP5Security Role Generation
+    #Create Categories and PortalType RoleInformation
+    self.login()
+    folder = self.getOrganisationModule()
+    ob1 = folder.newContent(title='Object Title')
+    ob2 = folder.newContent(title='Object Title')
+    ob2.manage_addLocalRoles('bob', ['Assignee'])
+    cat_tool = self.getPortal().portal_categories
+    cat_tool.group.newContent(id='company', portal_type='Category')
+    cat_tool.function.newContent(id='employee', portal_type='Category')
+
+    from Products.ERP5Type.RoleInformation import RoleInformation
+    role_auditor_inf = RoleInformation(id='Auditor',
+                                        title='Auditor',
+                                        category=('group/company',))
+    role_assignee_inf = RoleInformation(id='Assignee',
+                                        title='Assignee',
+                                        category=('group/company',
+                                                  'function/employee',))
+
+    pt = self.getPortal().portal_types.Organisation
+    pt._roles = (role_auditor_inf, role_assignee_inf)
+
+    uf = self.getPortal().acl_users
+    uf._doAddUser('bob', '', ['Member'], [])
+    get_transaction().commit()
+    self.tic()
+    #Now Update Security
+    ob1.updateLocalRolesOnSecurityGroups()
+    ob1.manage_permission('View', ['Auditor', 'Assignor'], 0)
+    ob1.reindexObject()
+    #Remove Roles On Organisation Portal Type
+    pt._roles = ()
+    get_transaction().commit()
+    self.tic()
+    login(self, 'bob')
+    ctool = self.getCatalogTool()
+    user = getSecurityManager().getUser()
+    user._groups.update({'company':1,
+                         'employee_company':1})
+    self.assertTrue(user.has_permission('View', ob1))
+    self.assertTrue(user.has_role('Auditor', ob1))
+    self.assertTrue(user.has_role('Assignee', ob1))
+    self.assertFalse(user.has_role('Assignor', ob1))
+    from AccessControl.PermissionRole import rolesForPermissionOn
+    self.assertTrue('Assignee' not in rolesForPermissionOn('View', ob1))
+    self.assertEquals(2, len(ctool(title='Object Title',
+                                   local_roles='Assignee')))
+    self.assertEquals(2,
+                ctool.countResults(title='Object Title',
+                                   local_roles='Assignee')[0][0])
+
+    # this also work for searchFolder and countFolder
+    self.assertEquals(2, len(folder.searchFolder(title='Object Title',
+                                             local_roles='Assignee')))
+    self.assertEquals(2, folder.countFolder(title='Object Title',
+                                             local_roles='Assignee')[0][0])
+
   def test_51_SearchWithKeyWords(self, quiet=quiet, run=run_all_test):
     if not run: return
     if not quiet:




More information about the Erp5-report mailing list