import os, sys import time if __name__ == '__main__': execfile(os.path.join(sys.path[0], 'framework.py')) from Testing import ZopeTestCase from Products.CMFPlone.tests import PloneTestCase from Products.CMFPlone.tests.PloneTestCase import portal_name, portal_owner from Products.CMFCore.utils import getToolByName from Products.PythonScripts.PythonScript import manage_addPythonScript from Products.PloneMultisite.Extensions import Install as installMultisite from AccessControl.SecurityManagement import getSecurityManager, newSecurityManager, noSecurityManager default_user = ZopeTestCase.user_name class TestWorkflowIssue(PloneTestCase.PloneTestCase): def setup_for_workflow(self, quiet=1): # Need to be portal owner to manipulate the workflow script self.loginPortalOwner() wf_tool = getToolByName(self.portal, 'portal_workflow') wf = wf_tool['plone_workflow'] manage_addPythonScript(wf.scripts, id='test_script') wf.scripts.test_script.write("""\ ##parameters=review_state obj = review_state.object """) wf.scripts.test_script.manage_proxy(roles=('Manager',),) # This is the important bit: turning off the flag to acquire the # View permission is what triggers the problem: sdef = wf.states['visible'] sdef.setPermission('View', 0, ['Manager', 'Owner', 'Reviewer']) tdef = wf.transitions['submit'] tdef.setProperties( title='Member requests publishing', new_state_id='pending', script_name="test_script") self.login(default_user) def test_workflow(self): '''Empty test''' self.setup_for_workflow() folder = self.portal['Members'][default_user] wf_tool = getToolByName(self.portal, 'portal_workflow') folder.invokeFactory('Document', 'doc1') doc = getattr(folder, 'doc1') wf_tool.doActionFor(doc, 'submit') state = wf_tool.getInfoFor(doc, 'review_state', '') self.assertEquals(state, 'pending') return if __name__ == '__main__': framework() else: from unittest import TestSuite, makeSuite def test_suite(): suite = TestSuite() suite.addTest(makeSuite(TestWorkflowIssue)) return suite