def _makeOne(self, workflow_ids=()): from Products.CMFCore.WorkflowTool import WorkflowTool tool = WorkflowTool() for workflow_id in workflow_ids: tool._setObject(workflow_id, DummyWorkflow(workflow_id)) return tool
def _makeOne( self, workflow_ids=() ): from Products.CMFCore.WorkflowTool import WorkflowTool tool = WorkflowTool() for workflow_id in workflow_ids: tool._setObject(workflow_id, DummyWorkflow(workflow_id)) return tool
class DefaultWorkflowDefinitionTests(unittest.TestCase): def setUp(self): from Products.CMFDefault.DefaultWorkflow \ import DefaultWorkflowDefinition self.site = DummySite('site') self.site._setObject('acl_users', DummyUserFolder()) self.wtool = WorkflowTool() self.wtool._setObject('wf', DefaultWorkflowDefinition('wf')) self.wtool.setDefaultChain('wf') sm = getSiteManager() sm.registerUtility(self.wtool, IWorkflowTool) sm.registerUtility(DummyTool(), IMembershipTool) sm.registerUtility(DummyTool(), ITypesTool) def tearDown(self): cleanUp() def test_interfaces(self): from Products.CMFCore.interfaces import IWorkflowDefinition from Products.CMFDefault.DefaultWorkflow \ import DefaultWorkflowDefinition verifyClass(IWorkflowDefinition, DefaultWorkflowDefinition) def _getDummyWorkflow(self): return self.wtool.wf def test_isActionSupported(self): wf = self._getDummyWorkflow() dummy = self.site._setObject('dummy', DummyContent()) for action in ( 'submit', 'retract', 'publish', 'reject', ): self.assertTrue(wf.isActionSupported(dummy, action)) def test_isActionSupported_with_keywargs(self): wf = self._getDummyWorkflow() dummy = self.site._setObject('dummy', DummyContent()) for action in ( 'submit', 'retract', 'publish', 'reject', ): self.assertTrue(wf.isActionSupported(dummy, action, arg1=1, arg2=2))
class DefaultWorkflowDefinitionTests(unittest.TestCase): def setUp(self): from Products.CMFDefault.DefaultWorkflow \ import DefaultWorkflowDefinition self.site = DummySite('site') self.site._setObject('acl_users', DummyUserFolder()) self.wtool = WorkflowTool() self.wtool._setObject('wf', DefaultWorkflowDefinition('wf')) self.wtool.setDefaultChain('wf') sm = getSiteManager() sm.registerUtility(self.wtool, IWorkflowTool) sm.registerUtility(DummyTool(), IMembershipTool) sm.registerUtility(DummyTool(), ITypesTool) def tearDown(self): cleanUp() def test_interfaces(self): from Products.CMFCore.interfaces import IWorkflowDefinition from Products.CMFDefault.DefaultWorkflow \ import DefaultWorkflowDefinition verifyClass(IWorkflowDefinition, DefaultWorkflowDefinition) def _getDummyWorkflow(self): return self.wtool.wf def test_isActionSupported(self): wf = self._getDummyWorkflow() dummy = self.site._setObject('dummy', DummyContent()) for action in ('submit', 'retract', 'publish', 'reject',): self.assert_(wf.isActionSupported(dummy, action)) def test_isActionSupported_with_keywargs(self): wf = self._getDummyWorkflow() dummy = self.site._setObject('dummy', DummyContent()) for action in ('submit', 'retract', 'publish', 'reject',): self.assert_(wf.isActionSupported(dummy, action, arg1=1, arg2=2))
class TestGuard(unittest.TestCase): def setUp(self): self.site = DummySite('site') # Construct a workflow self.wtool = WorkflowTool() self.wtool._setObject('wf', DCWorkflowDefinition('wf')) self.wtool.setDefaultChain('wf') sm = getSiteManager() sm.registerUtility(self.wtool, IWorkflowTool) sm.registerUtility(DummyTool(), ITypesTool) def tearDown(self): cleanUp() def _getDummyWorkflow(self): return self.wtool.wf def test_BaseGuardAPI(self): from zope.tales.tales import CompilerError # # Test guard basic API # guard = Guard() self.assertNotEqual(guard, None) # Test default values self.assertEqual(guard.getPermissionsText(), '') self.assertEqual(guard.getRolesText(), '') self.assertEqual(guard.getExprText(), '') # Initialize the guard with empty values # not initialization guard_props = { 'guard_permissions': '', 'guard_roles': '', 'guard_expr': '' } res = guard.changeFromProperties(guard_props) self.assert_(res == 0) # Test default values self.assertEqual(guard.getPermissionsText(), '') self.assertEqual(guard.getRolesText(), '') self.assertEqual(guard.getExprText(), '') # Change guard guard_props = { 'guard_roles': 'Manager', 'guard_permissions': '', 'guard_expr': '' } res = guard.changeFromProperties(guard_props) self.assert_(res == 1) self.assertEqual(guard.getRolesText(), 'Manager') self.assertEqual(guard.getPermissionsText(), '') self.assertEqual(guard.getExprText(), '') # Change guard guard_props = { 'guard_roles': 'Manager;', 'guard_permissions': '', 'guard_expr': '' } res = guard.changeFromProperties(guard_props) self.assert_(res == 1) # With one space after the ';' self.assertEqual(guard.getRolesText(), 'Manager; ') self.assertEqual(guard.getPermissionsText(), '') self.assertEqual(guard.getExprText(), '') # Change guard guard_props = { 'guard_roles': 'Manager;Member', 'guard_permissions': '', 'guard_expr': '' } res = guard.changeFromProperties(guard_props) self.assert_(res == 1) # With one space after the ';' self.assertEqual(guard.getRolesText(), 'Manager; Member') self.assertEqual(guard.getPermissionsText(), '') self.assertEqual(guard.getExprText(), '') # Change guard guard_props = { 'guard_roles': 'Manager;Member', 'guard_permissions': '', 'guard_expr': '' } res = guard.changeFromProperties(guard_props) self.assert_(res == 1) # With one space after the ';' self.assertEqual(guard.getRolesText(), 'Manager; Member') self.assertEqual(guard.getPermissionsText(), '') self.assertEqual(guard.getExprText(), '') # Change guard guard_props = { 'guard_roles': 'Manager', 'guard_permissions': '', 'guard_expr': '' } res = guard.changeFromProperties(guard_props) self.assert_(res == 1) self.assertEqual(guard.getRolesText(), 'Manager') self.assertEqual(guard.getPermissionsText(), '') self.assertEqual(guard.getExprText(), '') # Change guard guard_props = { 'guard_roles': 'Manager', 'guard_permissions': 'ManagePortal;', 'guard_expr': '' } res = guard.changeFromProperties(guard_props) self.assert_(res == 1) self.assertEqual(guard.getRolesText(), 'Manager') self.assertEqual(guard.getPermissionsText(), 'ManagePortal; ') self.assertEqual(guard.getExprText(), '') # Change guard guard_props = { 'guard_roles': 'Manager', 'guard_permissions': 'ManagePortal', 'guard_expr': '' } res = guard.changeFromProperties(guard_props) self.assert_(res == 1) self.assertEqual(guard.getRolesText(), 'Manager') self.assertEqual(guard.getPermissionsText(), 'ManagePortal') self.assertEqual(guard.getExprText(), '') # Change guard guard_props = { 'guard_roles': 'Manager', 'guard_permissions': 'ManagePortal', 'guard_expr': 'python:1' } res = guard.changeFromProperties(guard_props) self.assert_(res == 1) self.assertEqual(guard.getRolesText(), 'Manager') self.assertEqual(guard.getPermissionsText(), 'ManagePortal') self.assertEqual(guard.getExprText(), 'python:1') # Change guard guard_props = { 'guard_roles': 'Manager', 'guard_permissions': 'ManagePortal', 'guard_expr': 'string:' } res = guard.changeFromProperties(guard_props) self.assert_(res == 1) self.assertEqual(guard.getRolesText(), 'Manager') self.assertEqual(guard.getPermissionsText(), 'ManagePortal') self.assertEqual(guard.getExprText(), 'string:') # Change guard with wrong TALES guard_props = { 'guard_roles': 'Manager', 'guard_permissions': 'ManagePortal', 'guard_expr': 'python:' } self.assertRaises(CompilerError, guard.changeFromProperties, guard_props) self.assertEqual(guard.getRolesText(), 'Manager') self.assertEqual(guard.getPermissionsText(), 'ManagePortal') self.assertEqual(guard.getExprText(), 'string:') # reinit the guard guard_props = { 'guard_permissions': '', 'guard_roles': '', 'guard_expr': '' } res = guard.changeFromProperties(guard_props) self.assert_(res == 0) # No API on DCWorkflow guard to reset properly.... guard.permissions = '' guard.roles = '' guard.expr = None # Test default values self.assertEqual(guard.getPermissionsText(), '') self.assertEqual(guard.getRolesText(), '') self.assertEqual(guard.getExprText(), '') # XXX more tests with permissions and roles def test_checkGuardExpr(self): # # Basic checks. # guard = Guard() # Create compulsory context elements sm = getSecurityManager() self.site._setObject('dummy', DummyContent('dummy')) ob = self.site.dummy wf_def = self._getDummyWorkflow() # Initialize the guard with an ok guard guard_props = { 'guard_permissions': '', 'guard_roles': '', 'guard_expr': 'python:1' } res = guard.changeFromProperties(guard_props) self.assert_(res) self.assert_(guard.check(sm, wf_def, ob)) # Initialize the guard with a not ok guard guard_props = { 'guard_permissions': '', 'guard_roles': '', 'guard_expr': 'python:0' } res = guard.changeFromProperties(guard_props) self.assert_(res) self.assert_(not guard.check(sm, wf_def, ob)) # XXX more tests with permissions and roles def test_checkWithKwargs(self): # # Checks with kwargs # guard = Guard() # Create compulsory context elements sm = getSecurityManager() self.site._setObject('dummy', DummyContent('dummy')) ob = self.site.dummy wf_def = self._getDummyWorkflow() # Initialize the guard with an ok guard guard_props = { 'guard_permissions': '', 'guard_roles': '', 'guard_expr': 'python:1' } res = guard.changeFromProperties(guard_props) self.assert_(res) self.assert_(guard.check(sm, wf_def, ob, arg1=1, arg2=2)) # Initialize the guard with a not ok guard guard_props = { 'guard_permissions': '', 'guard_roles': '', 'guard_expr': 'python:0' } res = guard.changeFromProperties(guard_props) self.assert_(res) self.assert_(not guard.check(sm, wf_def, ob, arg1=1, arg2=2))
class TestGuard(unittest.TestCase): def setUp(self): self.site = DummySite('site') # Construct a workflow self.wtool = WorkflowTool() self.wtool._setObject('wf', DCWorkflowDefinition('wf')) self.wtool.setDefaultChain('wf') sm = getSiteManager() sm.registerUtility(self.wtool, IWorkflowTool) sm.registerUtility(DummyTool(), ITypesTool) def tearDown(self): cleanUp() def _getDummyWorkflow(self): return self.wtool.wf def test_BaseGuardAPI(self): from zope.tales.tales import CompilerError # # Test guard basic API # guard = Guard() self.assertNotEqual(guard, None) # Test default values self.assertEqual(guard.getPermissionsText(), '') self.assertEqual(guard.getRolesText(), '') self.assertEqual(guard.getExprText(), '') # Initialize the guard with empty values # not initialization guard_props = {'guard_permissions':'', 'guard_roles':'', 'guard_expr' :''} res = guard.changeFromProperties(guard_props) self.assert_(res==0) # Test default values self.assertEqual(guard.getPermissionsText(), '') self.assertEqual(guard.getRolesText(), '') self.assertEqual(guard.getExprText(), '') # Change guard guard_props = {'guard_roles':'Manager', 'guard_permissions':'', 'guard_expr' :''} res = guard.changeFromProperties(guard_props) self.assert_(res==1) self.assertEqual(guard.getRolesText(), 'Manager') self.assertEqual(guard.getPermissionsText(), '') self.assertEqual(guard.getExprText(), '') # Change guard guard_props = {'guard_roles':'Manager;', 'guard_permissions':'', 'guard_expr' :''} res = guard.changeFromProperties(guard_props) self.assert_(res==1) # With one space after the ';' self.assertEqual(guard.getRolesText(), 'Manager; ') self.assertEqual(guard.getPermissionsText(), '') self.assertEqual(guard.getExprText(), '') # Change guard guard_props = {'guard_roles':'Manager;Member', 'guard_permissions':'', 'guard_expr' :''} res = guard.changeFromProperties(guard_props) self.assert_(res==1) # With one space after the ';' self.assertEqual(guard.getRolesText(), 'Manager; Member') self.assertEqual(guard.getPermissionsText(), '') self.assertEqual(guard.getExprText(), '') # Change guard guard_props = {'guard_roles':'Manager;Member', 'guard_permissions':'', 'guard_expr' :''} res = guard.changeFromProperties(guard_props) self.assert_(res==1) # With one space after the ';' self.assertEqual(guard.getRolesText(), 'Manager; Member') self.assertEqual(guard.getPermissionsText(), '') self.assertEqual(guard.getExprText(), '') # Change guard guard_props = {'guard_roles':'Manager', 'guard_permissions':'', 'guard_expr' :''} res = guard.changeFromProperties(guard_props) self.assert_(res==1) self.assertEqual(guard.getRolesText(), 'Manager') self.assertEqual(guard.getPermissionsText(), '') self.assertEqual(guard.getExprText(), '') # Change guard guard_props = {'guard_roles':'Manager', 'guard_permissions':'ManagePortal;', 'guard_expr' :''} res = guard.changeFromProperties(guard_props) self.assert_(res==1) self.assertEqual(guard.getRolesText(), 'Manager') self.assertEqual(guard.getPermissionsText(), 'ManagePortal; ') self.assertEqual(guard.getExprText(), '') # Change guard guard_props = {'guard_roles':'Manager', 'guard_permissions':'ManagePortal', 'guard_expr' :''} res = guard.changeFromProperties(guard_props) self.assert_(res==1) self.assertEqual(guard.getRolesText(), 'Manager') self.assertEqual(guard.getPermissionsText(), 'ManagePortal') self.assertEqual(guard.getExprText(), '') # Change guard guard_props = {'guard_roles':'Manager', 'guard_permissions':'ManagePortal', 'guard_expr' :'python:1'} res = guard.changeFromProperties(guard_props) self.assert_(res==1) self.assertEqual(guard.getRolesText(), 'Manager') self.assertEqual(guard.getPermissionsText(), 'ManagePortal') self.assertEqual(guard.getExprText(), 'python:1') # Change guard guard_props = {'guard_roles':'Manager', 'guard_permissions':'ManagePortal', 'guard_expr' :'string:'} res = guard.changeFromProperties(guard_props) self.assert_(res==1) self.assertEqual(guard.getRolesText(), 'Manager') self.assertEqual(guard.getPermissionsText(), 'ManagePortal') self.assertEqual(guard.getExprText(), 'string:') # Change guard with wrong TALES guard_props = {'guard_roles':'Manager', 'guard_permissions':'ManagePortal', 'guard_expr' :'python:'} self.assertRaises(CompilerError, guard.changeFromProperties, guard_props) self.assertEqual(guard.getRolesText(), 'Manager') self.assertEqual(guard.getPermissionsText(), 'ManagePortal') self.assertEqual(guard.getExprText(), 'string:') # reinit the guard guard_props = {'guard_permissions':'', 'guard_roles':'', 'guard_expr' :''} res = guard.changeFromProperties(guard_props) self.assert_(res==0) # No API on DCWorkflow guard to reset properly.... guard.permissions = '' guard.roles = '' guard.expr = None # Test default values self.assertEqual(guard.getPermissionsText(), '') self.assertEqual(guard.getRolesText(), '') self.assertEqual(guard.getExprText(), '') # XXX more tests with permissions and roles def test_checkGuardExpr(self): # # Basic checks. # guard = Guard() # Create compulsory context elements sm = getSecurityManager() self.site._setObject('dummy', DummyContent('dummy')) ob = self.site.dummy wf_def = self._getDummyWorkflow() # Initialize the guard with an ok guard guard_props = {'guard_permissions':'', 'guard_roles':'', 'guard_expr' :'python:1'} res = guard.changeFromProperties(guard_props) self.assert_(res) self.assert_(guard.check(sm, wf_def, ob)) # Initialize the guard with a not ok guard guard_props = {'guard_permissions':'', 'guard_roles':'', 'guard_expr' :'python:0'} res = guard.changeFromProperties(guard_props) self.assert_(res) self.assert_(not guard.check(sm, wf_def, ob)) # XXX more tests with permissions and roles def test_checkWithKwargs(self): # # Checks with kwargs # guard = Guard() # Create compulsory context elements sm = getSecurityManager() self.site._setObject('dummy', DummyContent('dummy')) ob = self.site.dummy wf_def = self._getDummyWorkflow() # Initialize the guard with an ok guard guard_props = {'guard_permissions':'', 'guard_roles':'', 'guard_expr' :'python:1'} res = guard.changeFromProperties(guard_props) self.assert_(res) self.assert_(guard.check(sm, wf_def, ob, arg1=1, arg2=2)) # Initialize the guard with a not ok guard guard_props = {'guard_permissions':'', 'guard_roles':'', 'guard_expr' :'python:0'} res = guard.changeFromProperties(guard_props) self.assert_(res) self.assert_(not guard.check(sm, wf_def, ob, arg1=1, arg2=2))