[Checkins] SVN: Products.CMFCore/trunk/Products/CMFCore/tests/test_MembershipTool.py - improved tests
Yvo Schubbe
cvs-admin at zope.org
Thu Jul 25 16:52:41 CEST 2013
Log message for revision 130272:
- improved tests
Changed:
U Products.CMFCore/trunk/Products/CMFCore/tests/test_MembershipTool.py
-=-
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_MembershipTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_MembershipTool.py 2013-07-16 17:15:47 UTC (rev 130271)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_MembershipTool.py 2013-07-25 14:52:40 UTC (rev 130272)
@@ -27,6 +27,8 @@
from Products.CMFCore.interfaces import ISiteRoot
from Products.CMFCore.interfaces import IWorkflowTool
from Products.CMFCore.MemberDataTool import MemberDataTool
+from Products.CMFCore.permissions import AccessContentsInformation
+from Products.CMFCore.permissions import View
from Products.CMFCore.PortalFolder import PortalFolder
from Products.CMFCore.tests.base.dummy import DummySite
from Products.CMFCore.tests.base.dummy import DummyTool
@@ -36,20 +38,27 @@
class MembershipToolTests(unittest.TestCase):
+ def _getTargetClass(self):
+ from Products.CMFCore.MembershipTool import MembershipTool
+
+ return MembershipTool
+
def test_interfaces(self):
from Products.CMFCore.interfaces import IMembershipTool
- from Products.CMFCore.MembershipTool import MembershipTool
- verifyClass(IMembershipTool, MembershipTool)
+ verifyClass(IMembershipTool, self._getTargetClass())
class MembershipToolSecurityTests(SecurityTest):
- def _makeOne(self, *args, **kw):
+ def _getTargetClass(self):
from Products.CMFCore.MembershipTool import MembershipTool
- return MembershipTool(*args, **kw)
+ return MembershipTool
+ def _makeOne(self, *args, **kw):
+ return self._getTargetClass()(*args, **kw)
+
def _makeSite(self, parent=None):
if parent is None:
parent = self.app
@@ -69,12 +78,105 @@
rval = mtool.getCandidateLocalRoles(mtool)
self.assertEqual(rval, ('Manager', 'Member', 'Owner', 'Reviewer'))
+ def test_isMemberAccessAllowed(self):
+ site = self._makeSite()
+ mtool = site.portal_membership
+ acl_users = site._setObject('acl_users', DummyUserFolder())
+ self.assertFalse(mtool.isMemberAccessAllowed('user_foo'))
+
+ newSecurityManager(None, acl_users.user_bar)
+ self.assertFalse(mtool.isMemberAccessAllowed('user_foo'))
+
+ newSecurityManager(None, acl_users.user_foo)
+ self.assertTrue(mtool.isMemberAccessAllowed('user_foo'))
+
+ newSecurityManager(None, acl_users.all_powerful_Oz)
+ self.assertTrue(mtool.isMemberAccessAllowed('user_foo'))
+
+ def test_getMemberById_nonesuch(self):
+ INVALID_USER_ID = 'nonesuch'
+
+ self.app._setObject('folder', Folder('folder'))
+ site = self._makeSite(self.app.folder)
+ tool = site.portal_membership
+ site.acl_users = DummyUserFolder()
+ self.assertEqual(None, tool.getMemberById(INVALID_USER_ID))
+
+ def test_getMemberById_local(self):
+ LOCAL_USER_ID = 'user_foo'
+
+ self.app._setObject('folder', Folder('folder'))
+ site = self._makeSite(self.app.folder)
+ site._setObject('acl_users', DummyUserFolder())
+ tool = site.portal_membership
+ member = tool.getMemberById(LOCAL_USER_ID)
+ self.assertEqual(member.getId(), LOCAL_USER_ID)
+
+ def test_getMemberById_nonlocal(self):
+ NONLOCAL_USER_ID = 'user_bar'
+
+ self.app._setObject('folder', Folder('folder'))
+ site = self._makeSite(self.app.folder)
+ self.app.folder._setObject('acl_users', DummyUserFolder())
+ tool = site.portal_membership
+ member = tool.getMemberById(NONLOCAL_USER_ID)
+ self.assertEqual(member.getId(), NONLOCAL_USER_ID)
+
+ def test_getMemberById_chained(self):
+ LOCAL_USER_ID = 'user_foo'
+ NONLOCAL_USER_ID = 'user_bar'
+
+ self.app._setObject('folder', Folder('folder'))
+ site = self._makeSite(self.app.folder)
+ tool = site.portal_membership
+
+ local_uf = DummyUserFolder()
+ delattr(local_uf, NONLOCAL_USER_ID)
+ site._setObject('acl_users', local_uf)
+
+ nonlocal_uf = DummyUserFolder()
+ delattr(nonlocal_uf, LOCAL_USER_ID)
+ self.app.folder._setObject('acl_users', nonlocal_uf)
+
+ local_member = tool.getMemberById(LOCAL_USER_ID)
+ self.assertEqual(local_member.getId(), LOCAL_USER_ID)
+
+ nonlocal_member = tool.getMemberById(NONLOCAL_USER_ID)
+ self.assertEqual(nonlocal_member.getId(), NONLOCAL_USER_ID)
+
+
+class MembershipToolMemberAreaTests(SecurityTest):
+
+ def _getTargetClass(self):
+ from Products.CMFCore.MembershipTool import MembershipTool
+
+ return MembershipTool
+
+ def _makeOne(self, *args, **kw):
+ return self._getTargetClass()(*args, **kw)
+
+ def _makeSite(self, parent=None):
+ if parent is None:
+ parent = self.app
+ site = DummySite('site').__of__(parent)
+ site.__ac_roles__ = ('Reviewer',)
+ site._setObject('portal_membership', self._makeOne())
+ return site
+
+ def setUp(self):
+ SecurityTest.setUp(self)
+ sm = getSiteManager()
+ sm.registerUtility(DummyTool(), IWorkflowTool)
+
+ def tearDown(self):
+ cleanUp()
+ SecurityTest.tearDown(self)
+
def test_createMemberArea(self):
site = self._makeSite()
mtool = site.portal_membership
members = site._setObject('Members', PortalFolder('Members'))
acl_users = site._setObject('acl_users', DummyUserFolder())
- getSiteManager().registerUtility(DummyTool(), IWorkflowTool)
# permission
mtool.createMemberArea('user_foo')
@@ -95,10 +197,17 @@
f = members.user_foo
ownership = acl_users.user_foo
localroles = (('user_foo', ('Owner',)),)
+ self.assertEqual(f.Title(), "user_foo's Home")
+ self.assertEqual(f.getPortalTypeName(), 'Folder')
self.assertEqual(f.getOwner(), ownership)
self.assertEqual(f.get_local_roles(), localroles,
'CMF Collector issue #162 (LocalRoles broken): %s'
% str(f.get_local_roles()))
+ for p in (View, AccessContentsInformation):
+ roles = [ r['name'] for r in f.rolesOfPermission(p)
+ if r['selected'] ]
+ self.assertEqual(roles, ['Manager', 'Owner', 'Reviewer'])
+ self.assertEqual(bool(f.acquiredRolesAreUsedBy(p)), False)
def test_createMemberAreaCMFBTreeFolder(self):
# Test member area creation if the toplevel "Members" folder is
@@ -107,7 +216,6 @@
mtool = site.portal_membership
members = site._setObject('Members', CMFBTreeFolder('Members'))
acl_users = site._setObject('acl_users', DummyUserFolder())
- getSiteManager().registerUtility(DummyTool(), IWorkflowTool)
# permission
mtool.createMemberArea('user_foo')
@@ -128,10 +236,17 @@
f = members.user_foo
ownership = acl_users.user_foo
localroles = (('user_foo', ('Owner',)),)
+ self.assertEqual(f.Title(), "user_foo's Home")
+ self.assertEqual(f.getPortalTypeName(), 'Folder')
self.assertEqual(f.getOwner(), ownership)
self.assertEqual(f.get_local_roles(), localroles,
'CMF Collector issue #162 (LocalRoles broken): %s'
% str(f.get_local_roles()))
+ for p in (View, AccessContentsInformation):
+ roles = [ r['name'] for r in f.rolesOfPermission(p)
+ if r['selected'] ]
+ self.assertEqual(roles, ['Manager', 'Owner', 'Reviewer'])
+ self.assertEqual(bool(f.acquiredRolesAreUsedBy(p)), False)
def test_createMemberArea_chained(self):
LOCAL_USER_ID = 'user_foo'
@@ -141,7 +256,6 @@
site = self._makeSite(self.app.folder)
mtool = site.portal_membership
members = site._setObject('Members', PortalFolder('Members'))
- getSiteManager().registerUtility(DummyTool(), IWorkflowTool)
local_uf = DummyUserFolder()
delattr(local_uf, NONLOCAL_USER_ID)
@@ -157,21 +271,6 @@
mtool.createMemberArea(LOCAL_USER_ID)
self.assertTrue(hasattr(members.aq_self, LOCAL_USER_ID))
- def test_isMemberAccessAllowed(self):
- site = self._makeSite()
- mtool = site.portal_membership
- acl_users = site._setObject('acl_users', DummyUserFolder())
- self.assertFalse(mtool.isMemberAccessAllowed('user_foo'))
-
- newSecurityManager(None, acl_users.user_bar)
- self.assertFalse(mtool.isMemberAccessAllowed('user_foo'))
-
- newSecurityManager(None, acl_users.user_foo)
- self.assertTrue(mtool.isMemberAccessAllowed('user_foo'))
-
- newSecurityManager(None, acl_users.all_powerful_Oz)
- self.assertTrue(mtool.isMemberAccessAllowed('user_foo'))
-
def test_deleteMembers(self):
site = self._makeSite()
sm = getSiteManager()
@@ -195,8 +294,6 @@
self.assertFalse('user_foo' in mdtool._members)
self.assertFalse(hasattr(members.aq_self, 'user_foo'))
- cleanUp()
-
def test_deleteMembersUnsupported(self):
# Quite a few user folders do not support the deletion API
# http://www.zope.org/Collectors/CMF/481
@@ -228,62 +325,11 @@
# Cleanup
DummyUserFolder.userFolderDelUsers = deletion_method
- cleanUp()
- def test_getMemberById_nonesuch(self):
- INVALID_USER_ID = 'nonesuch'
- self.app._setObject('folder', Folder('folder'))
- site = self._makeSite(self.app.folder)
- tool = site.portal_membership
- site.acl_users = DummyUserFolder()
- self.assertEqual(None, tool.getMemberById(INVALID_USER_ID))
-
- def test_getMemberById_local(self):
- LOCAL_USER_ID = 'user_foo'
-
- self.app._setObject('folder', Folder('folder'))
- site = self._makeSite(self.app.folder)
- site._setObject('acl_users', DummyUserFolder())
- tool = site.portal_membership
- member = tool.getMemberById(LOCAL_USER_ID)
- self.assertEqual(member.getId(), LOCAL_USER_ID)
-
- def test_getMemberById_nonlocal(self):
- NONLOCAL_USER_ID = 'user_bar'
-
- self.app._setObject('folder', Folder('folder'))
- site = self._makeSite(self.app.folder)
- self.app.folder._setObject('acl_users', DummyUserFolder())
- tool = site.portal_membership
- member = tool.getMemberById(NONLOCAL_USER_ID)
- self.assertEqual(member.getId(), NONLOCAL_USER_ID)
-
- def test_getMemberById_chained(self):
- LOCAL_USER_ID = 'user_foo'
- NONLOCAL_USER_ID = 'user_bar'
-
- self.app._setObject('folder', Folder('folder'))
- site = self._makeSite(self.app.folder)
- tool = site.portal_membership
-
- local_uf = DummyUserFolder()
- delattr(local_uf, NONLOCAL_USER_ID)
- site._setObject('acl_users', local_uf)
-
- nonlocal_uf = DummyUserFolder()
- delattr(nonlocal_uf, LOCAL_USER_ID)
- self.app.folder._setObject('acl_users', nonlocal_uf)
-
- local_member = tool.getMemberById(LOCAL_USER_ID)
- self.assertEqual(local_member.getId(), LOCAL_USER_ID)
-
- nonlocal_member = tool.getMemberById(NONLOCAL_USER_ID)
- self.assertEqual(nonlocal_member.getId(), NONLOCAL_USER_ID)
-
-
def test_suite():
return unittest.TestSuite((
unittest.makeSuite(MembershipToolTests),
unittest.makeSuite(MembershipToolSecurityTests),
+ unittest.makeSuite(MembershipToolMemberAreaTests),
))
More information about the checkins
mailing list