Exemple #1
0
    def testLDAPImplements(self):
        klass = PloneLDAPMultiPlugin

        self.assertTrue(IAuthenticationPlugin.implementedBy(klass))
        self.assertTrue(ICredentialsResetPlugin.implementedBy(klass))
        self.assertTrue(IDeleteCapability.implementedBy(klass))
        self.assertTrue(IGroupCapability.implementedBy(klass))
        self.assertTrue(IGroupEnumerationPlugin.implementedBy(klass))
        self.assertTrue(IGroupIntrospection.implementedBy(klass))
        self.assertTrue(IGroupManagement.implementedBy(klass))
        self.assertTrue(IGroupsPlugin.implementedBy(klass))
        self.assertTrue(IMutablePropertiesPlugin.implementedBy(klass))
        self.assertTrue(IPasswordSetCapability.implementedBy(klass))
        self.assertTrue(IPropertiesPlugin.implementedBy(klass))
        self.assertTrue(IRoleEnumerationPlugin.implementedBy(klass))
        self.assertTrue(IRolesPlugin.implementedBy(klass))
        self.assertTrue(IUserAdderPlugin.implementedBy(klass))
        self.assertTrue(IUserEnumerationPlugin.implementedBy(klass))
        self.assertTrue(IUserManagement.implementedBy(klass))
Exemple #2
0
    def testADImplements(self):
        # The above checks are testing that IF we implement an
        # interface we really DO implement it in practice.  If an
        # interface is not implemented, we are fine with it.  But in
        # this test, we check that some interfaces really are
        # implemented.  This should contain all interfaces that are
        # set with the 'class Implements' directive of the klass.
        klass = PloneActiveDirectoryMultiPlugin

        self.assertTrue(IAuthenticationPlugin.implementedBy(klass))
        self.assertTrue(ICredentialsResetPlugin.implementedBy(klass))
        self.assertTrue(IGroupEnumerationPlugin.implementedBy(klass))
        self.assertTrue(IGroupIntrospection.implementedBy(klass))
        self.assertTrue(IGroupsPlugin.implementedBy(klass))
        self.assertTrue(IMutablePropertiesPlugin.implementedBy(klass))
        self.assertTrue(IPropertiesPlugin.implementedBy(klass))
        self.assertTrue(IRoleEnumerationPlugin.implementedBy(klass))
        self.assertTrue(IRolesPlugin.implementedBy(klass))
        self.assertTrue(IUserEnumerationPlugin.implementedBy(klass))
Exemple #3
0
    def testLDAPImplements(self):
        klass = PloneLDAPMultiPlugin

        self.assertTrue(IAuthenticationPlugin.implementedBy(klass))
        self.assertTrue(ICredentialsResetPlugin.implementedBy(klass))
        self.assertTrue(IDeleteCapability.implementedBy(klass))
        self.assertTrue(IGroupCapability.implementedBy(klass))
        self.assertTrue(IGroupEnumerationPlugin.implementedBy(klass))
        self.assertTrue(IGroupIntrospection.implementedBy(klass))
        self.assertTrue(IGroupManagement.implementedBy(klass))
        self.assertTrue(IGroupsPlugin.implementedBy(klass))
        self.assertTrue(IMutablePropertiesPlugin.implementedBy(klass))
        self.assertTrue(IPasswordSetCapability.implementedBy(klass))
        self.assertTrue(IPropertiesPlugin.implementedBy(klass))
        self.assertTrue(IRoleEnumerationPlugin.implementedBy(klass))
        self.assertTrue(IRolesPlugin.implementedBy(klass))
        self.assertTrue(IUserAdderPlugin.implementedBy(klass))
        self.assertTrue(IUserEnumerationPlugin.implementedBy(klass))
        self.assertTrue(IUserManagement.implementedBy(klass))
Exemple #4
0
    def testADImplements(self):
        # The above checks are testing that IF we implement an
        # interface we really DO implement it in practice.  If an
        # interface is not implemented, we are fine with it.  But in
        # this test, we check that some interfaces really are
        # implemented.  This should contain all interfaces that are
        # set with the 'class Implements' directive of the klass.
        klass = PloneActiveDirectoryMultiPlugin

        self.assertTrue(IAuthenticationPlugin.implementedBy(klass))
        self.assertTrue(ICredentialsResetPlugin.implementedBy(klass))
        self.assertTrue(IGroupEnumerationPlugin.implementedBy(klass))
        self.assertTrue(IGroupIntrospection.implementedBy(klass))
        self.assertTrue(IGroupsPlugin.implementedBy(klass))
        self.assertTrue(IMutablePropertiesPlugin.implementedBy(klass))
        self.assertTrue(IPropertiesPlugin.implementedBy(klass))
        self.assertTrue(IRoleEnumerationPlugin.implementedBy(klass))
        self.assertTrue(IRolesPlugin.implementedBy(klass))
        self.assertTrue(IUserEnumerationPlugin.implementedBy(klass))
def migrate_group_members(context, mapping, mode='move', replace=False):
    """Migrate Plone users within a group."""

    # Statistics
    moved = []
    copied = []
    deleted = []

    uf = getToolByName(context, 'acl_users')

    for old_userid, new_userid in mapping.items():
        for plugin_id, plugin in uf.plugins.listPlugins(IGroupEnumerationPlugin):
            if not (IZODBGroupManager.providedBy(plugin) and
                    IGroupIntrospection.providedBy(plugin)):
                continue

            for group in plugin.enumerateGroups():
                group_id = group.get('id')
                group_members = plugin.getGroupMembers(group_id)
                # Do nothing if a user with new_userid already exists and
                # replace is False.
                if new_userid in group_members and not replace:
                    continue

                # Do nothing if an old user does not exist in a group.
                if old_userid not in group_members:
                    continue

                if mode in ['move', 'delete']:
                    plugin.removePrincipalFromGroup(old_userid, group_id)

                if mode in ['copy', 'move']:
                    plugin.addPrincipalToGroup(new_userid, group_id)

                if mode == 'move':
                    moved.append((group_id, old_userid, new_userid))
                if mode == 'copy':
                    copied.append((group_id, old_userid, new_userid))
                if mode == 'delete':
                    deleted.append((group_id, old_userid, None))

    return(dict(moved=moved, copied=copied, deleted=deleted))
Exemple #6
0
 def _testGroupIntrospection(self, klass):
     if IGroupIntrospection.implementedBy(klass):
         self.assertTrue(hasattr(klass, 'getGroupById'))
         self.assertTrue(hasattr(klass, 'getGroupIds'))
         self.assertTrue(hasattr(klass, 'getGroupMembers'))
         self.assertTrue(hasattr(klass, 'getGroups'))
Exemple #7
0
 def _testGroupIntrospection(self, klass):
     if IGroupIntrospection.implementedBy(klass):
         self.assertTrue(hasattr(klass, 'getGroupById'))
         self.assertTrue(hasattr(klass, 'getGroupIds'))
         self.assertTrue(hasattr(klass, 'getGroupMembers'))
         self.assertTrue(hasattr(klass, 'getGroups'))