def _makeOne( self, workflow_ids=() ): tool = WorkflowTool() for workflow_id in workflow_ids: tool.manage_addWorkflow( DummyWorkflow.meta_type, 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
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.manage_addWorkflow( DummyWorkflow.meta_type, workflow_id ) return tool
def _makeOne(self, workflow_ids=()): from Products.CMFCore.WorkflowTool import WorkflowTool tool = WorkflowTool() for workflow_id in workflow_ids: tool.manage_addWorkflow(DummyWorkflow.meta_type, workflow_id) return tool
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)
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))
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 test_portalfolder_cataloging(self): # # Test to ensure a portal folder itself is *not* cataloged upon # instantiation (Tracker issue 309) # ctool = DummyCatalogTool() wtool = WorkflowTool() sm = getSiteManager() sm.registerUtility(ctool, ICatalogTool) sm.registerUtility(wtool, IWorkflowTool) test = self._makeOne('test') wtool.notifyCreated(test) self.assertEqual(len(ctool), 0)
def setUp(self): from Products.CMFCore.TypesTool import FactoryTypeInformation as FTI from Products.CMFCore.tests.base.dummy import DummySite from Products.CMFCore.tests.base.dummy import DummyUserFolder from Products.CMFCore.tests.base.tidata import FTIDATA_DUMMY SecurityTest.setUp(self) self.site = DummySite('site').__of__(self.root) self.acl_users = self.site._setObject('acl_users', DummyUserFolder()) self.ttool = self.site._setObject('portal_types', self._makeOne()) fti = FTIDATA_DUMMY[0].copy() self.ttool._setObject('Dummy Content', FTI(**fti)) # setup workflow tool # to test 'Instance creation conditions' of workflows from Products.CMFCore.WorkflowTool import WorkflowTool self.site._setObject('portal_workflow', WorkflowTool()) wftool = self.site.portal_workflow from Products.DCWorkflow.DCWorkflow import DCWorkflowDefinition wftool._setObject('wf', DCWorkflowDefinition('wf')) wftool.setDefaultChain('wf') wf = wftool.wf wf.states.addState('initial') wf.states.setInitialState('initial') from Products.DCWorkflow.Guard import Guard g = Guard() wf.creation_guard = g
def setUp(self): self.root = DummyRoot('') self.root.site = SimpleFolder('site') self.site = self.root.site self.site._setObject('portal_catalog', DummyCatalog()) self.site._setObject('portal_workflow', WorkflowTool()) self.site.foo = TheClass('foo')
def setUp(self): from Products.DCWorkflow.DCWorkflow import DCWorkflowDefinition self.site = DummySite('site') self.site._setObject('portal_types', DummyTool()) self.site._setObject('portal_workflow', WorkflowTool()) addWorkflowFactory(DCWorkflowDefinition) self._constructDummyWorkflow()
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))
def setUp(self): self.site = DummySite('site') self.site._setObject('portal_types', DummyTool()) self.site._setObject('portal_workflow', WorkflowTool()) # Construct a workflow wftool = self.site.portal_workflow wftool._setObject('wf', DCWorkflowDefinition('wf')) wftool.setDefaultChain('wf')
def setUp(self): SecurityTest.setUp(self) self.root._setObject('site', DummySite('site')) self.site = self.root._getOb('site') self.site._setObject('portal_types', DummyTool()) self.site._setObject('portal_workflow', WorkflowTool()) self._constructDummyWorkflow() transaction.savepoint(optimistic=True) newSecurityManager(None, OmnipotentUser().__of__(self.site))
def setUp(self): self.site = DummySite('site') self.site._setObject('portal_types', DummyTool()) self.site._setObject('portal_workflow', WorkflowTool()) addWorkflowFactory(DCWorkflowDefinition) # Construct a workflow wftool = self.site.portal_workflow wftool.manage_addWorkflow('Workflow (DC Workflow Definition)', 'wf') wftool.setDefaultChain('wf')
def setUp(self): import Products.CMFCore.exportimport from Products.CMFCore.WorkflowTool import WorkflowTool BodyAdapterTestCase.setUp(self) zcml.load_config('configure.zcml', Products.CMFCore.exportimport) zcml.load_string(_DUMMY_ZCML) self._obj = WorkflowTool() self._BODY = _WORKFLOWTOOL_BODY
def test_portalfolder_cataloging(self): # # Test to ensure a portal folder itself is *not* cataloged upon # instantiation (Tracker issue 309) # ttool = self.site._setObject('portal_types', TypesTool()) ctool = self.site._setObject('portal_catalog', DummyCatalogTool()) wftool = self.site._setObject('portal_workflow', WorkflowTool()) test = self._makeOne('test') wftool.notifyCreated(test) self.assertEqual(len(ctool), 0)
def setUp(self): self.site = DummySite('site') self.site._path = '' self.site._setObject('portal_catalog', CatalogTool()) self.site.portal_catalog.addIndex('state', 'KeywordIndex') self.site._setObject('portal_types', DummyTool()) self.site._setObject('portal_workflow', WorkflowTool()) self.site._setObject('dummy', DummyContent('dummy')) self.site.dummy.state = 'private' self.site.portal_catalog.catalog_object(self.site.dummy) self._constructDummyWorkflow()
def setUp(self): SecurityTest.setUp(self) self.app._setObject('site', DummySite('site')) self.site = self.app._getOb('site') self.wtool = self.site._setObject('portal_workflow', WorkflowTool()) self._constructDummyWorkflow() transaction.savepoint(optimistic=True) newSecurityManager(None, OmnipotentUser().__of__(self.site)) sm = getSiteManager() sm.registerUtility(self.wtool, IWorkflowTool) sm.registerUtility(DummyTool(), ITypesTool)
def setUp(self): self.site = DummySite('site') self.site._setObject('portal_types', DummyTool()) self.site._setObject('portal_workflow', WorkflowTool()) self.site._setObject('portal_membership', MembershipTool()) self.site._setObject('acl_users', DummyUserFolder()) addWorkflowFactory(DefaultWorkflowDefinition, id='default_workflow', title='default_workflow') self._constructDummyWorkflow()
def setUp(self): from Products.CMFDefault.DefaultWorkflow \ import DefaultWorkflowDefinition self.site = DummySite('site') self.site._setObject('portal_types', DummyTool()) self.site._setObject('portal_workflow', WorkflowTool()) self.site._setObject('portal_membership', DummyTool()) self.site._setObject('acl_users', DummyUserFolder()) wftool = self.site.portal_workflow wftool._setObject('wf', DefaultWorkflowDefinition('wf')) wftool.setDefaultChain('wf')
def test_portalfolder_cataloging(self): # # Test to ensure a portal folder itself is *not* cataloged upon # instantiation (Tracker issue 309) # sm = getSiteManager(self.site) ttool = self.site._setObject( 'portal_types', TypesTool() ) sm.registerUtility(ttool, ITypesTool) ctool = self.site._setObject( 'portal_catalog', CatalogTool() ) sm.registerUtility(ctool, ICatalogTool) wftool = self.site._setObject( 'portal_workflow', WorkflowTool() ) test = self._makeOne('test') wftool.notifyCreated(test) self.assertEqual( len(ctool), 0 )
def setUp(self): get_transaction().begin() self._policy = UnitTestSecurityPolicy() SecurityManager.setSecurityPolicy(self._policy) self.root = Zope.app() self.root._setObject('portal_discussion', DiscussionTool()) self.discussion_tool = self.root.portal_discussion self.root._setObject('portal_catalog', CatalogTool()) self.catalog_tool = self.root.portal_catalog self.root._setObject('portal_url', URLTool()) self.url_tool = self.root.portal_url self.root._setObject('portal_workflow', WorkflowTool()) self.workflow_tool = self.root.portal_workflow self.root._setObject('portal_types', TypesTool()) types_tool = self.types_tool = self.root.portal_types
def setUp( self ): SecurityTest.setUp(self) root = self.root root._setObject( 'portal_discussion', DiscussionTool() ) self.discussion_tool = root.portal_discussion root._setObject( 'portal_catalog', CatalogTool() ) self.catalog_tool = root.portal_catalog root._setObject( 'portal_url', URLTool() ) self.url_tool = root.portal_url root._setObject( 'portal_workflow', WorkflowTool() ) self.workflow_tool = root.portal_workflow root._setObject( 'portal_types', TypesTool() ) types_tool = self.types_tool = root.portal_types try: root._delObject('test') except AttributeError: pass root._setObject( 'test', Document( 'test' ) )
def test_deletePropagation(self): # import pdb; pdb.set_trace() portal_catalog = CatalogTool() self.root._setObject('portal_catalog', portal_catalog) catalog = self.root.portal_catalog portal_discussion = DiscussionTool() self.root._setObject('portal_discussion', portal_discussion) portal_url = URLTool() self.root._setObject('portal_url', portal_url) portal_workflow = WorkflowTool() self.root._setObject('portal_workflow', portal_workflow) test = Document('test') self.root._setObject('test', test) test = self.root.test test.allow_discussion = 1 assert len(catalog) == 1 portal_discussion.createDiscussionFor(test) talkback = test.talkback talkback.createReply(title='test', text='blah') foo = talkback.getReplies()[0] assert len(catalog) == 2 self.root._delObject('test') assert len(catalog) == 0
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))
def setUp( self ): self.site = DummySite('site') self.site._setObject( 'portal_types', DummyTool() ) self.site._setObject( 'portal_workflow', WorkflowTool() ) addWorkflowFactory(DCWorkflowDefinition)
def setUp(self): self.site = DummySite('site') self.site._setObject( 'portal_types', DummyTool() ) self.site._setObject( 'portal_workflow', WorkflowTool() ) self._constructDummyWorkflow()
def setUp(self): from Products.CMFCore.WorkflowTool import WorkflowTool self._obj = WorkflowTool() self._BODY = _WORKFLOWTOOL_BODY
def setUp(self): from Products.CMFCore.WorkflowTool import WorkflowTool BodyAdapterTestCase.setUp(self) self._obj = WorkflowTool() self._BODY = _WORKFLOWTOOL_BODY
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))