[Zope-Checkins] CVS: Zope/lib/python/AccessControl/tests - testOwned.py:1.2 testZopeSecurityPolicy.py:1.9

Tres Seaver tseaver at zope.com
Tue Jan 27 11:59:24 EST 2004


Update of /cvs-repository/Zope/lib/python/AccessControl/tests
In directory cvs.zope.org:/tmp/cvs-serv30636/lib/python/AccessControl/tests

Modified Files:
	testZopeSecurityPolicy.py 
Added Files:
	testOwned.py 
Log Message:
 - Port new Owned API + tests from 2.6 branch.


=== Zope/lib/python/AccessControl/tests/testOwned.py 1.1 => 1.2 ===
--- /dev/null	Tue Jan 27 11:59:24 2004
+++ Zope/lib/python/AccessControl/tests/testOwned.py	Tue Jan 27 11:59:23 2004
@@ -0,0 +1,164 @@
+"""Unit tests for AccessControl.Owned
+
+$Id$
+"""
+
+import unittest
+import Testing
+import ZODB
+
+from Acquisition import Implicit, aq_inner
+
+class FauxUser(Implicit):
+
+    def __init__(self, id):
+        self._id = id
+
+    def getId(self):
+        return self._id
+
+class FauxUserFolder(Implicit):
+
+    def getUserById(self, id, default):
+        return FauxUser(id)
+
+class FauxRoot(Implicit):
+
+    def getPhysicalRoot(self):
+        return aq_inner(self)
+
+    def unrestrictedTraverse(self, path, default=None):
+
+        if type(path) is type(''):
+            path = path.split('/')
+
+        if not path[0]:
+            path = path[1:]
+
+        obj = self
+
+        try:
+            while path:
+                next, path = path[0], path[1:]
+                obj = getattr(obj, next)
+        except AttributeError:
+            obj = default
+
+        return obj
+
+class OwnedTests(unittest.TestCase):
+
+    def _getTargetClass(self):
+        from AccessControl.Owned import Owned
+        return Owned
+
+    def _makeOne(self, *args, **kw):
+        return self._getTargetClass()(*args, **kw)
+
+    def _makeDummy(self, *args, **kw):
+
+        from AccessControl.Owned import Owned
+        class Dummy(Implicit, Owned):
+            pass
+
+        return Dummy(*args, **kw)
+
+    def test_getOwnerTuple_unowned(self):
+        owned = self._makeOne()
+
+        owner_tuple = owned.getOwnerTuple()
+
+        self.assertEqual(owner_tuple, None)
+
+    def test_getOwnerTuple_simple(self):
+        owned = self._makeOne()
+        owned._owner = ('/foobar', 'baz')
+
+        owner_tuple = owned.getOwnerTuple()
+
+        self.assertEqual(len(owner_tuple), 2)
+        self.assertEqual(owner_tuple[0], '/foobar')
+        self.assertEqual(owner_tuple[1], 'baz')
+
+    def test_getOwnerTuple_acquired(self):
+
+        root = FauxRoot()
+        root._owner = ('/foobar', 'baz')
+        owned = self._makeDummy().__of__(root)
+        owner_tuple = owned.getOwnerTuple()
+
+        self.assertEqual(len(owner_tuple), 2)
+        self.assertEqual(owner_tuple[0], '/foobar')
+        self.assertEqual(owner_tuple[1], 'baz')
+
+    def test_getOwnerTuple_acquired_no_tricks(self):
+
+        # Ensure that we acquire ownership only through containment.
+        root = FauxRoot()
+        root._owner = ('/foobar', 'baz')
+        owned = self._makeDummy().__of__(root)
+        owner_tuple = owned.getOwnerTuple()
+
+        tricky = self._makeDummy()
+        tricky._owner = ('/bambam', 'qux')
+        tricky = tricky.__of__(root)
+
+        not_tricked = owned.__of__(tricky)
+        owner_tuple = not_tricked.getOwnerTuple()
+
+        self.assertEqual(len(owner_tuple), 2)
+        self.assertEqual(owner_tuple[0], '/foobar')
+        self.assertEqual(owner_tuple[1], 'baz')
+
+    def test_getWrappedOwner_unowned(self):
+
+        owned = self._makeOne()
+
+        wrapped_owner = owned.getWrappedOwner()
+
+        self.assertEqual(wrapped_owner, None)
+
+    def test_getWrappedOwner_simple(self):
+
+        root = FauxRoot()
+        root.acl_users = FauxUserFolder()
+
+        owned = self._makeDummy().__of__(root)
+        owned._owner = ('/acl_users', 'user')
+
+        wrapped_owner = owned.getWrappedOwner()
+
+        self.assertEqual(wrapped_owner.getId(), 'user')
+
+    def test_getWrappedOwner_acquired(self):
+
+        root = FauxRoot()
+        root._owner = ('/acl_users', 'user')
+        root.acl_users = FauxUserFolder()
+
+        owned = self._makeDummy().__of__(root)
+
+        wrapped_owner = owned.getWrappedOwner()
+
+        self.assertEqual(wrapped_owner.getId(), 'user')
+
+    def test_getWrappedOwner_acquired_no_tricks(self):
+
+        root = FauxRoot()
+        root._owner = ('/acl_users', 'user')
+        root.acl_users = FauxUserFolder()
+
+        owned = self._makeDummy().__of__(root)
+
+        tricky = self._makeDummy()
+        tricky._owner = ('/acl_users', 'black_hat')
+        tricky = tricky.__of__(root)
+
+        not_tricked = owned.__of__(tricky)
+
+        wrapped_owner = not_tricked.getWrappedOwner()
+
+        self.assertEqual(wrapped_owner.getId(), 'user')
+
+def test_suite():
+    return unittest.makeSuite(OwnedTests)


=== Zope/lib/python/AccessControl/tests/testZopeSecurityPolicy.py 1.8 => 1.9 ===
--- Zope/lib/python/AccessControl/tests/testZopeSecurityPolicy.py:1.8	Fri Nov 28 11:44:07 2003
+++ Zope/lib/python/AccessControl/tests/testZopeSecurityPolicy.py	Tue Jan 27 11:59:23 2004
@@ -47,6 +47,9 @@
     def __call__(*args, **kw):
         return args, kw
 
+    def getWrappedOwner(self):
+        return None
+
     __roles__ = None
 
 
@@ -59,6 +62,11 @@
 
     def getOwner(self):
         return self.aq_parent.aq_parent.acl_users.getUserById('theowner')
+
+    def getWrappedOwner(self):
+        acl_users = self.aq_parent.aq_parent.acl_users
+        user = acl_users.getUserById('theowner')
+        return user.__of__(acl_users)
 
 
 class setuidMethod (PublicMethod):




More information about the Zope-Checkins mailing list