[Zope-Checkins] SVN: Zope/branches/Zope-2_8-branch/ Collector #1182: BBB Forward port fix from 2.7 branch (19 months ago!).

Tres Seaver tseaver at palladion.com
Sat Aug 27 12:17:43 EDT 2005


Log message for revision 38120:
  Collector #1182: BBB Forward port fix from 2.7 branch (19 months ago!).
  
  This change reverts 'guarded_getitem' to pass the 'index' argument as
  the name to 'validate'.  This change will *not* be propagated to the
  trunk, because the resolution of #1182 specifies that the reverted
  behavior (i.e., passing None for item accces) is to become the standard
  implementation as of 2.9.
  

Changed:
  U   Zope/branches/Zope-2_8-branch/doc/CHANGES.txt
  U   Zope/branches/Zope-2_8-branch/lib/python/AccessControl/ZopeGuards.py
  U   Zope/branches/Zope-2_8-branch/lib/python/AccessControl/tests/testZopeGuards.py

-=-
Modified: Zope/branches/Zope-2_8-branch/doc/CHANGES.txt
===================================================================
--- Zope/branches/Zope-2_8-branch/doc/CHANGES.txt	2005-08-27 00:47:39 UTC (rev 38119)
+++ Zope/branches/Zope-2_8-branch/doc/CHANGES.txt	2005-08-27 16:17:42 UTC (rev 38120)
@@ -26,6 +26,13 @@
 
     Bugs Fixed
 
+      - Collector #1182: BBB Forward port fix from 2.7 branch (19 months
+        ago!), reverting 'guarded_getitem' to pass the 'index' argument as
+        the name to 'validate'.  This change is *not* propagated to the
+        trunk, because the resolution of #1182 specifies that the reverted
+        behavior (i.e., passing None for item accces) is to become the
+        standard implementation as of 2.9.
+
       - Collector #1877: skel/Products/README.txt inappropriately copied
         from CMF.
 

Modified: Zope/branches/Zope-2_8-branch/lib/python/AccessControl/ZopeGuards.py
===================================================================
--- Zope/branches/Zope-2_8-branch/lib/python/AccessControl/ZopeGuards.py	2005-08-27 00:47:39 UTC (rev 38119)
+++ Zope/branches/Zope-2_8-branch/lib/python/AccessControl/ZopeGuards.py	2005-08-27 16:17:42 UTC (rev 38120)
@@ -68,7 +68,7 @@
     if Containers(type(object)) and Containers(type(v)):
         # Simple type.  Short circuit.
         return v
-    if getSecurityManager().validate(object, object, None, v):
+    if getSecurityManager().validate(object, object, index, v):
         return v
     raise Unauthorized, 'unauthorized access to element %s' % `i`
 

Modified: Zope/branches/Zope-2_8-branch/lib/python/AccessControl/tests/testZopeGuards.py
===================================================================
--- Zope/branches/Zope-2_8-branch/lib/python/AccessControl/tests/testZopeGuards.py	2005-08-27 00:47:39 UTC (rev 38119)
+++ Zope/branches/Zope-2_8-branch/lib/python/AccessControl/tests/testZopeGuards.py	2005-08-27 16:17:42 UTC (rev 38120)
@@ -119,7 +119,31 @@
         finally:
             ContainerAssertions[_dict] = old
 
+class TestGuardedGetitem(GuardTestCase):
 
+    def setUp(self):
+        self.sm = SecurityManager()
+        self.old = self.setSecurityManager(self.sm)
+
+    def tearDown(self):
+        self.setSecurityManager(self.old)
+
+    def test_guarded_getitem_passes_index_to_validate(self):
+        # BBB:  collector #1182 specifies that guarded_getitem should be
+        #       passing the 'index' to validate, rather than 'None', 
+        #       until Zope 2.9.
+        from UserDict import UserDict
+        from AccessControl.ZopeGuards import guarded_getitem
+
+        foo = []
+        protected = UserDict(foo=foo)
+
+        value = guarded_getitem(protected, 'foo')
+        self.failUnless(value is foo)
+        self.assertEqual(len(self.sm.calls), 1)
+        self.assertEqual(self.sm.calls[0],
+                         ('validate', (protected, protected, 'foo', foo)))
+
 class TestDictGuards(GuardTestCase):
 
     def test_get_simple(self):
@@ -650,6 +674,7 @@
 def test_suite():
     suite = unittest.TestSuite()
     for cls in (TestGuardedGetattr,
+                TestGuardedGetitem,
                 TestDictGuards,
                 TestBuiltinFunctionGuards,
                 TestListGuards,



More information about the Zope-Checkins mailing list