Log message for revision 68569: - Collector #2073: fixed misbehaviour of OFS.Owned.changeOwnership
Changed: U Zope/trunk/doc/CHANGES.txt U Zope/trunk/lib/python/AccessControl/Owned.py A Zope/trunk/lib/python/AccessControl/tests/testChownRecursive.py -=- Modified: Zope/trunk/doc/CHANGES.txt =================================================================== --- Zope/trunk/doc/CHANGES.txt 2006-06-10 13:52:14 UTC (rev 68568) +++ Zope/trunk/doc/CHANGES.txt 2006-06-10 14:05:01 UTC (rev 68569) @@ -27,5 +27,6 @@ - Collector #2122: fixed missing is_proxying_match definition in ZServer/HTTPServer - - Collector 2077: fixed problem with ACTUAL_URL and SiteRoot + - Collector #2077: fixed problem with ACTUAL_URL and SiteRoot + - Collector #2073: fixed misbehaviour of OFS.Owned.changeOwnership Modified: Zope/trunk/lib/python/AccessControl/Owned.py =================================================================== --- Zope/trunk/lib/python/AccessControl/Owned.py 2006-06-10 13:52:14 UTC (rev 68568) +++ Zope/trunk/lib/python/AccessControl/Owned.py 2006-06-10 14:05:01 UTC (rev 68569) @@ -153,8 +153,9 @@ new=ownerInfo(user) if new is None: return # Special user! old = self.getOwnerTuple() - if old==new: return - if old is UnownableOwner: return + if not recursive: + if old==new: return + if old is UnownableOwner: return for child in self.objectValues(): if recursive: Added: Zope/trunk/lib/python/AccessControl/tests/testChownRecursive.py =================================================================== --- Zope/trunk/lib/python/AccessControl/tests/testChownRecursive.py 2006-06-10 13:52:14 UTC (rev 68568) +++ Zope/trunk/lib/python/AccessControl/tests/testChownRecursive.py 2006-06-10 14:05:01 UTC (rev 68569) @@ -0,0 +1,78 @@ +# vim: ts=4 expandtab : +############################################################################## +# +# 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. +# +############################################################################## +"""Skeleton ZopeTestCase + +$Id: testSkeleton.py 30245 2005-05-05 09:50:09Z shh $ +""" + +import os, sys +if __name__ == '__main__': + execfile(os.path.join(sys.path[0], 'framework.py')) + +from Testing import ZopeTestCase + +#ZopeTestCase.installProduct('SomeProduct') + + +class TestRecursiveChangeOwnership(ZopeTestCase.ZopeTestCase): + user_name2 = "dumdidum" + user_pass2 = "dumdidum" + + def afterSetUp(self): +## self.folder.changeOwnership(ZopeTestCase.user_name) + + # need a second user + ufld = self.folder['acl_users'] + ufld.userFolderAddUser(self.user_name2, self.user_pass2, [], []) + + # remember user objects + # is the __of__() call correct? is it needed? without it ownerInfo in Owned.py throws + # an AttributeError ... + self.user1 = self.folder['acl_users'].getUser(ZopeTestCase.user_name).__of__(self.folder) + self.user2 = self.folder['acl_users'].getUser(self.user_name2).__of__(self.folder) + + self.folder.changeOwnership(self.user1) + + # need some objects owned by second user + # beneath self.folder + self.folder.manage_addFile("testfile") + self.file = self.folder["testfile"] + self.file.changeOwnership(self.user2) + + def testRecursiveChangeOwnership(self): + # ensure folder is owned by user1 + owner = self.folder.getOwnerTuple()[1] + self.assertEqual(owner, ZopeTestCase.user_name) + + # ensure file is owned by user2 + owner = self.file.getOwnerTuple()[1] + self.assertEqual(owner, self.user_name2) + + self.folder.changeOwnership(self.user1, recursive=1) + + # ensure file's ownership has changed now to user1 + owner = self.file.getOwnerTuple()[1] + self.assertEqual(owner, ZopeTestCase.user_name) + + + +def test_suite(): + from unittest import TestSuite, makeSuite + suite = TestSuite() + suite.addTest(makeSuite(TestRecursiveChangeOwnership)) + return suite + +if __name__ == '__main__': + framework() + _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org http://mail.zope.org/mailman/listinfo/zope-checkins