def test_migrate_homefolder_assign_local_roles(self):
        portal = self.layer['portal']
        mapping = {'john': 'peter'}
        migrate_homefolders(portal, mapping)

        self.assertIn(
            ('peter', ('Owner',)),
            self.folder['peter'].get_local_roles()
        )
        self.assertNotIn(
            ('john', ('Owner',)),
            self.folder['peter'].get_local_roles()
        )
    def test_migrate_homefolder_reindex_security(self):
        portal = self.layer['portal']
        mapping = {'john': 'peter'}
        folder = self.folder['john']

        # Patch reindexObjectSecurity
        # Our implementation only sets a marker to see if it was called
        def reindexObjectSecurity(self):
            self._reindexed_obj_security = True
        folder.reindexObjectSecurity = reindexObjectSecurity.__get__(
            folder, folder.__class__)

        migrate_homefolders(portal, mapping)
        self.assertTrue(folder._reindexed_obj_security)
    def test_delete_homefolder(self):
        portal = self.layer['portal']
        mapping = {'john': 'peter'}
        results = migrate_homefolders(portal, mapping, mode='delete')

        self.assertNotIn('john', self.folder.objectIds())
        self.assertNotIn('peter', self.folder.objectIds())

        self.assertIn(('homefolder', 'john', None), results['deleted'])
        self.assertEquals([], results['moved'])
        self.assertEquals([], results['copied'])
    def test_migrate_homefolder(self):
        portal = self.layer['portal']
        mapping = {'john': 'peter'}
        results = migrate_homefolders(portal, mapping)

        mtool = getToolByName(portal, 'portal_membership', None)
        members_folder = mtool.getMembersFolder()
        self.assertNotIn('john', members_folder.objectIds())
        self.assertIn('peter', members_folder.objectIds())

        self.assertIn(('homefolder', 'john', 'peter'), results['moved'])
        self.assertEquals([], results['copied'])
        self.assertEquals([], results['deleted'])
    def test_migrate_homefolder_with_urlquoted_id(self):
        portal = self.layer['portal']
        mapping = {'*****@*****.**': '*****@*****.**'}
        results = migrate_homefolders(portal, mapping)

        mtool = getToolByName(portal, 'portal_membership', None)
        self.assertEquals(None, mtool.getHomeFolder(id='*****@*****.**'))
        self.assertNotEquals(None, mtool.getHomeFolder(id='*****@*****.**'))

        self.assertIn(('homefolder', '*****@*****.**', '*****@*****.**'),
                      results['moved'])
        self.assertEquals([], results['copied'])
        self.assertEquals([], results['deleted'])