From fe1932471b5c4ff4a900589a009d193d31c4ce92 Mon Sep 17 00:00:00 2001 From: Yoshinori Okuji <yo@nexedi.com> Date: Fri, 14 Dec 2007 00:39:28 +0000 Subject: [PATCH] Use an ERP5 user instead of a ZODB user, so that the test does not need to use global roles. Add a test to check strict security in simulation (which may not work at the moment). git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@18323 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/tests/testTask.py | 101 +++++++++++++++++++++++++++++---- 1 file changed, 89 insertions(+), 12 deletions(-) diff --git a/product/ERP5/tests/testTask.py b/product/ERP5/tests/testTask.py index 44d2114538..1f32f8b814 100644 --- a/product/ERP5/tests/testTask.py +++ b/product/ERP5/tests/testTask.py @@ -35,11 +35,13 @@ from zLOG import LOG from Products.ERP5Type.tests.Sequence import SequenceList from Products.CMFCore.utils import getToolByName from Testing import ZopeTestCase +from Testing.ZopeTestCase.PortalTestCase import PortalTestCase class TestTaskMixin: default_quantity = 99.99999999 default_price = 555.88888888 + person_portal_type = 'Person' organisation_portal_type = 'Organisation' resource_portal_type = 'Service' project_portal_type = 'Project' @@ -53,7 +55,9 @@ class TestTaskMixin: datetime = DateTime() task_workflow_id='task_workflow' - default_task_sequence = 'stepCreateOrganisation \ + default_task_sequence = '\ + stepLogin \ + stepCreateOrganisation \ stepCreateOrganisation \ stepCreateResource \ stepCreateProject \ @@ -64,7 +68,9 @@ class TestTaskMixin: stepTic \ stepSetTaskReport ' - default_task_sequence_two_lines = 'stepCreateOrganisation \ + default_task_sequence_two_lines = '\ + stepLogin \ + stepCreateOrganisation \ stepCreateOrganisation \ stepCreateResource \ stepCreateResource \ @@ -77,26 +83,67 @@ class TestTaskMixin: stepTic \ stepSetTaskReport ' - default_task_report_sequence = 'stepCreateOrganisation \ + default_task_report_sequence = '\ + stepLogin \ + stepCreateOrganisation \ stepCreateOrganisation \ stepCreateResource \ stepCreateSimpleTaskReport \ stepFillTaskReportWithData \ stepCreateTaskReportLine ' + login = PortalTestCase.login + def getBusinessTemplateList(self): """ """ return ('erp5_base','erp5_pdm', 'erp5_trade', 'erp5_project',) - def login(self, quiet=0, run=1): - uf = self.getPortal().acl_users - uf._doAddUser('dummy', '', - ['Member', 'Auditor', 'Author', 'Assignee', 'Assignor'], []) - user = uf.getUserById('dummy').__of__(uf) - newSecurityManager(None, user) - - def stepTic(self,**kw): + def stepLogin(self, **kw): + portal = self.getPortal() + uf = portal.acl_users + if not uf.getUser('dummy'): + uf._doAddUser('manager', '', ['Manager'], []) + self.login('manager') + person_module = portal.getDefaultModule(self.person_portal_type) + person = person_module.newContent(id='dummy', title='dummy', + reference='dummy') + portal.portal_categories.group.newContent(id='dummy', + codification='DUMMY') + assignment = person.newContent(title='dummy', group='dummy', + portal_type='Assignment', + start_date='1980-01-01', + stop_date='2099-12-31') + assignment.open() + get_transaction().commit() + self.tic() + module_list = [] + portal_type_list = [] + for portal_type in (self.resource_portal_type, + self.project_portal_type, + self.requirement_document_portal_type, + self.organisation_portal_type, + self.task_portal_type, + self.task_report_portal_type,): + module = portal.getDefaultModule(portal_type) + module_list.append(module) + portal_type_list.append(portal_type) + portal_type_list.append(module.getPortalType()) + + for portal_type in portal_type_list: + ti = portal.portal_types[portal_type] + ti.addRole('Auditor;Author;Assignee;Assignor', '', 'Dummy', + '', 'group/dummy', 'ERP5Type_getSecurityCategoryFromAssignment', + '') + ti.updateRoleMapping() + + get_transaction().commit() + self.tic() + portal.portal_caches.clearAllCache() + + self.login('dummy') + + def stepTic(self, **kw): self.tic() def stepCreateResource(self,sequence=None, sequence_list=None, \ @@ -483,7 +530,8 @@ class TestTask(TestTaskMixin, ERP5TypeTestCase): """ if not run: return sequence_list = SequenceList() - sequence_string = 'stepCreateOrganisation \ + sequence_string = 'stepLogin \ + stepCreateOrganisation \ stepCreateOrganisation \ stepCreateResource \ stepCreateResource \ @@ -504,6 +552,35 @@ class TestTask(TestTaskMixin, ERP5TypeTestCase): sequence_list.addSequenceString(sequence_string) sequence_list.play(self) + def test_05_testStrictSimulationSecurity(self, quiet=0, run=run_all_test): + """Test creation of task and (automatic) task_report with strict + security in the simulation. + """ + if not run: return + sequence_list = SequenceList() + sequence_string = self.default_task_sequence + '\ + stepVerifyGeneratedByBuilderTaskReport \ + stepStartTaskReport \ + stepFinishTaskReport \ + stepCloseTaskReport \ + ' + sequence_list.addSequenceString(sequence_string) + + simulation_tool = self.getPortal().portal_simulation + uf = self.getPortal().acl_users + if not uf.getUser('manager'): + uf._doAddUser('manager', '', ['Manager'], []) + self.login('manager') + try: + simulation_tool.Base_setDefaultSecurity() + self.logout() + sequence_list.play(self) + finally: + self.login('manager') + for permission in simulation_tool.possible_permissions(): + simulation_tool.manage_permission(permission, roles=(), acquire=1) + self.logout() + def test_suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(TestTask)) -- 2.30.9