def setup(app, path): _policy = PermissiveSecurityPolicy() _oldpolicy = setSecurityPolicy(_policy) newSecurityManager(None, OmnipotentUser().__of__(app.acl_users)) site = app.unrestrictedTraverse(path) populateFolder(site, 'Folder', 'Document') return site
def test_recursive(self): # Test for recursive calling of manage_after{Add|Clone} # and manage_beforeDelete. (bug #905677) populateFolder(self.folder, 'SimpleFolder', 'DDocument') d = self.folder.folder2.folder22.folder221.doc2211 uid = UID(d) # Called afterAdd once self.assertEquals(ADD_COUNTER.get(uid), 2) # Never called beforeDelete or afterClone self.assertEquals(DELETE_COUNTER.get(uid), 0) self.assertEquals(CLONE_COUNTER.get(uid), 0) # make sure we have _p_jar transaction.savepoint(optimistic=True) d_count = self.getCounts(d) # Rename the parent folder self.folder.folder2.folder22.manage_renameObject('folder221', 'new_folder221') expected = (d_count[0] + 1, d_count[1] + 1, d_count[2] + 0) got = self.getCounts(d) self.assertEquals(got, expected) # Update base count d_count = got # Rename the root folder self.folder.manage_renameObject('folder2', 'new_folder2') expected = (d_count[0] + 1, d_count[1] + 1, d_count[2] + 0) got = self.getCounts(d) self.assertEquals(got, expected) # Update base count d_count = got # Copy the root folder cb = self.folder.manage_copyObjects(['new_folder2']) self.folder.manage_pasteObjects(cb) # Should *not* call manage_afterAdd or manage_afterClone, # or to manage_beforeDelete for the source object. expected = (d_count[0], d_count[1], d_count[2]) got = self.getCounts(d) self.assertEquals(got, expected) new_d = self.folder.copy_of_new_folder2.folder22.new_folder221.doc2211 got = self.getCounts(new_d) # Should have called manage_afterAdd and manage_afterClone for # the *new* object. self.assertEquals(got, (1, 0, 1))