[Erp5-report] r29525 - /erp5/trunk/products/ERP5/tests/testBase.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Oct 9 15:20:58 CEST 2009
Author: nicolas
Date: Fri Oct 9 15:20:39 2009
New Revision: 29525
URL: http://svn.erp5.org?rev=29525&view=rev
Log:
Stick behaviour of DC.updateRoleMappingsFor with this test
Modified:
erp5/trunk/products/ERP5/tests/testBase.py
Modified: erp5/trunk/products/ERP5/tests/testBase.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testBase.py?rev=29525&r1=29524&r2=29525&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testBase.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testBase.py [utf8] Fri Oct 9 15:20:39 2009
@@ -973,30 +973,63 @@
# Add a non-existent workflow.
pw = self.getWorkflowTool()
- dummy_worlflow_id = 'fake_simulation_workflow'
+ dummy_simulation_worlflow_id = 'fake_simulation_workflow'
+ dummy_validation_worlflow_id = 'fake_validation_workflow'
#Assume that erp5_styles workflow Manage permissions with acquired Role by default
pw.manage_addWorkflow('erp5_workflow (ERP5-style empty workflow)',
- dummy_worlflow_id)
- wf = pw[dummy_worlflow_id]
+ dummy_simulation_worlflow_id)
+ pw.manage_addWorkflow('erp5_workflow (ERP5-style empty workflow)',
+ dummy_validation_worlflow_id)
+ dummy_simulation_worlflow = pw[dummy_simulation_worlflow_id]
+ dummy_validation_worlflow = pw[dummy_validation_worlflow_id]
+ dummy_validation_worlflow.variables.setStateVar('validation_state')
cbt = pw._chains_by_type
props = {}
for id, wf_ids in cbt.iteritems():
if id == portal_type:
- wf_ids = list(wf_ids) + [dummy_worlflow_id]
- props['chain_%s' % id] = ','.join(wf_ids)
+ old_wf_ids = wf_ids
+ props['chain_%s' % id] = ','.join([dummy_validation_worlflow_id, dummy_simulation_worlflow_id])
pw.manage_changeWorkflows('', props=props)
+ permission_list = list(dummy_simulation_worlflow.permissions)
+ manager_has_permission = {}
+ for permission in permission_list:
+ manager_has_permission[permission] = ('Manager',)
+ manager_has_no_permission = {}
+ for permission in permission_list:
+ manager_has_no_permission[permission] = ()
from AccessControl import getSecurityManager
user = getSecurityManager().getUser()
try:
- self.assertTrue(wf.permissions)
- self.assertFalse(wf.states.draft.permission_roles)
+ self.assertTrue(permission_list)
+ self.assertFalse(dummy_simulation_worlflow.states.draft.permission_roles)
+ #1
obj = module.newContent(portal_type=portal_type)
- #Check First permission on module
- for permission in wf.permissions:
- self.assertTrue(user.has_permission(permission, module))
+ #No role is defined by default on workflow
+ for permission in permission_list:
+ self.assertTrue(user.has_permission(permission, module))
#then check permission is acquired
- for permission in wf.permissions:
+ for permission in permission_list:
+ self.assertTrue(user.has_permission(permission, obj))
+ #2 Now configure both workflow with same configuration
+ dummy_simulation_worlflow.states.draft.permission_roles = manager_has_permission.copy()
+ dummy_validation_worlflow.states.draft.permission_roles = manager_has_permission.copy()
+ dummy_simulation_worlflow.updateRoleMappingsFor(obj)
+ dummy_validation_worlflow.updateRoleMappingsFor(obj)
+
+ for permission in permission_list:
+ self.assertTrue(user.has_permission(permission, obj))
+ #3 change only dummy_simulation_worlflow
+ dummy_simulation_worlflow.states.draft.permission_roles = manager_has_no_permission.copy()
+ dummy_simulation_worlflow.updateRoleMappingsFor(obj)
+
+ for permission in permission_list:
+ self.assertFalse(user.has_permission(permission, obj))
+ #4 enable acquisition for dummy_simulation_worlflow
+ dummy_simulation_worlflow.states.draft.permission_roles = None
+ dummy_simulation_worlflow.updateRoleMappingsFor(obj)
+ #for permission in dummy_simulation_worlflow.permissions:
+ for permission in permission_list:
self.assertTrue(user.has_permission(permission, obj))
finally:
# Make sure that the artificial workflow is not referred to any longer.
@@ -1005,11 +1038,10 @@
for id, wf_ids in cbt.iteritems():
if id == portal_type:
# Remove the non-existent workflow.
- wf_ids = [wf_id for wf_id in wf_ids \
- if wf_id != dummy_worlflow_id]
+ wf_ids = old_wf_ids
props['chain_%s' % id] = ','.join(wf_ids)
pw.manage_changeWorkflows('', props=props)
- pw.manage_delObjects([dummy_worlflow_id])
+ pw.manage_delObjects([dummy_simulation_worlflow_id, dummy_validation_worlflow_id])
def test_getViewPermissionOwnerDefault(self):
"""Test getViewPermissionOwner method behaviour"""
More information about the Erp5-report
mailing list