Commit cfd1dd59 authored by Andreas Jung's avatar Andreas Jung

- Collector #2073: fixed misbehaviour of OFS.Owned.changeOwnership

parent e42490ce
......@@ -27,5 +27,6 @@ Zope Changes
- 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
......@@ -153,8 +153,9 @@ class Owned(ExtensionClass.Base):
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:
......
# 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()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment