[Erp5-report] r18323 - /erp5/trunk/products/ERP5/tests/testTask.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Dec 14 01:39:28 CET 2007


Author: yo
Date: Fri Dec 14 01:39:28 2007
New Revision: 18323

URL: http://svn.erp5.org?rev=18323&view=rev
Log:
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).

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

Modified: erp5/trunk/products/ERP5/tests/testTask.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testTask.py?rev=18323&r1=18322&r2=18323&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testTask.py (original)
+++ erp5/trunk/products/ERP5/tests/testTask.py Fri Dec 14 01:39:28 2007
@@ -35,11 +35,13 @@
 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 @@
   datetime = DateTime()
   task_workflow_id='task_workflow'
 
-  default_task_sequence = 'stepCreateOrganisation \
+  default_task_sequence = '\
+                       stepLogin \
+                       stepCreateOrganisation \
                        stepCreateOrganisation \
                        stepCreateResource \
                        stepCreateProject \
@@ -64,7 +68,9 @@
                        stepTic \
                        stepSetTaskReport '
 
-  default_task_sequence_two_lines = 'stepCreateOrganisation \
+  default_task_sequence_two_lines = '\
+                       stepLogin \
+                       stepCreateOrganisation \
                        stepCreateOrganisation \
                        stepCreateResource \
                        stepCreateResource \
@@ -77,26 +83,67 @@
                        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 @@
     """
     if not run: return
     sequence_list = SequenceList()
-    sequence_string = 'stepCreateOrganisation \
+    sequence_string = 'stepLogin \
+                       stepCreateOrganisation \
                        stepCreateOrganisation \
                        stepCreateResource \
                        stepCreateResource \
@@ -504,6 +552,35 @@
     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))




More information about the Erp5-report mailing list