[Checkins] SVN: Products.CMFCore/trunk/Products/CMFCore/ - added FakeExecutableObject
Yvo Schubbe
y.2010 at wcm-solutions.de
Thu Sep 30 07:04:05 EDT 2010
Log message for revision 117083:
- added FakeExecutableObject
(Charlie wants to use this in CMF; taken from https://mail.zope.org/pipermail/zope/2005-November/162956.html)
Changed:
U Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
U Products.CMFCore/trunk/Products/CMFCore/tests/test_utils.py
U Products.CMFCore/trunk/Products/CMFCore/utils.py
-=-
Modified: Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt 2010-09-30 10:17:16 UTC (rev 117082)
+++ Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt 2010-09-30 11:04:05 UTC (rev 117083)
@@ -4,6 +4,9 @@
2.3.0-alpha (unreleased)
------------------------
+- utils: Added FakeExecutableObject.
+ It can be used to set proxy roles in trusted code.
+
- tests base: Removed obsolete test utils.
- testing: Removed broken run function.
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_utils.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_utils.py 2010-09-30 10:17:16 UTC (rev 117082)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_utils.py 2010-09-30 11:04:05 UTC (rev 117083)
@@ -164,7 +164,32 @@
# The values on the object itself should still the the same
self.assertEqual(len(obj.get_local_roles_for_userid('dummyuser1')), 2)
+ def test_FakeExecutableObject(self):
+ from AccessControl import getSecurityManager
+ from AccessControl.ImplPython import ZopeSecurityPolicy
+ from AccessControl.Permission import Permission
+ from AccessControl.SecurityManagement import newSecurityManager
+ from AccessControl.SecurityManager import setSecurityPolicy
+ from Products.CMFCore.utils import FakeExecutableObject
+ setSecurityPolicy(ZopeSecurityPolicy())
+ site = self._makeSite()
+ newSecurityManager(None, site.acl_users.user_foo)
+ obj = site.bar_dummy
+ Permission('FOO', (), obj).setRoles(('FOO_ROLE',))
+ sm = getSecurityManager()
+ self.assertFalse(sm.checkPermission('FOO', obj))
+
+ eo = FakeExecutableObject(('FOO_ROLE',))
+ sm.addContext(eo)
+ try:
+ self.assertTrue(sm.checkPermission('FOO', obj))
+ finally:
+ sm.removeContext(eo)
+
+ self.assertFalse(sm.checkPermission('FOO', obj))
+
+
def test_suite():
return unittest.TestSuite((
unittest.makeSuite(CoreUtilsTests),
Modified: Products.CMFCore/trunk/Products/CMFCore/utils.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/utils.py 2010-09-30 10:17:16 UTC (rev 117082)
+++ Products.CMFCore/trunk/Products/CMFCore/utils.py 2010-09-30 11:04:05 UTC (rev 117083)
@@ -284,6 +284,20 @@
return something_changed
+class FakeExecutableObject:
+
+ """Fake ExecutableObject used to set proxy roles in trusted code.
+ """
+
+ def __init__(self, proxy_roles):
+ self._proxy_roles = tuple(proxy_roles)
+
+ def getOwner(self):
+ return None
+
+ getWrappedOwner = getOwner
+
+
# Parse a string of etags from an If-None-Match header
# Code follows ZPublisher.HTTPRequest.parse_cookie
parse_etags_lock=allocate_lock()
More information about the checkins
mailing list