[CMF-checkins] CVS: Products/DCWorkflow/tests - test_guard.py:1.1
Julien Anguenot
ja at nuxeo.com
Tue Apr 26 11:00:25 EDT 2005
Update of /cvs-repository/Products/DCWorkflow/tests
In directory cvs.zope.org:/tmp/cvs-serv6231
Added Files:
test_guard.py
Log Message:
Guard basic tests including the ones with **kw propagation
=== Added File Products/DCWorkflow/tests/test_guard.py ===
##############################################################################
#
# Copyright (c) 2005 Zope Corporation and Contributors. All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
""" Guard tests.
$Id: test_guard.py,v 1.1 2005/04/26 15:00:25 anguenot Exp $
"""
from unittest import TestCase, TestSuite, makeSuite, main
from AccessControl import getSecurityManager
from Products.PageTemplates.TALES import CompilerError
from Products.CMFCore.WorkflowTool import WorkflowTool
from Products.CMFCore.WorkflowTool import addWorkflowFactory
from Products.DCWorkflow.Guard import Guard
from Products.DCWorkflow.DCWorkflow import DCWorkflowDefinition
from Products.CMFCore.tests.base.dummy import DummyContent
from Products.CMFCore.tests.base.dummy import DummySite
from Products.CMFCore.tests.base.dummy import DummyTool
class TestGuard(TestCase):
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 _getDummyWorkflow(self):
return self.site.portal_workflow['wf']
def test_BaseGuardAPI(self):
#
# 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()
ob = DummyContent('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()
ob = DummyContent('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))
# XXX more tests with permissions and roles
def test_suite():
return TestSuite((
makeSuite(TestGuard),
))
if __name__ == '__main__':
main(defaultTest='test_suite')
More information about the CMF-checkins
mailing list