def test_createMemberArea(self):
        site = self._makeSite()
        mtool = site.portal_membership
        members = site._setObject('Members', PortalFolder('Members'))
        acl_users = site._setObject('acl_users', LDAPDummyUserFolder())
        wtool = site._setObject('portal_workflow', DummyTool())

        # permission
        mtool.createMemberArea('user_foo')
        self.failIf(hasattr(members.aq_self, 'user_foo'))
        newSecurityManager(None, acl_users.user_bar)
        mtool.createMemberArea('user_foo')
        self.failIf(hasattr(members.aq_self, 'user_foo'))
        newSecurityManager(None, acl_users.user_foo)
        mtool.setMemberareaCreationFlag()
        mtool.createMemberArea('user_foo')
        self.failIf(hasattr(members.aq_self, 'user_foo'))
        newSecurityManager(None, acl_users.all_powerful_Oz)
        mtool.setMemberareaCreationFlag()
        mtool.createMemberArea('user_foo')
        self.failUnless(hasattr(members.aq_self, 'user_foo'))

        # default content
        f = members.user_foo
        ownership = acl_users.user_foo
        localroles = (('user_foo', ('Owner', )), )
        self.assertEqual(f.getOwner(), ownership)
        self.assertEqual(
            f.get_local_roles(), localroles,
            'CMF Collector issue #162 (LocalRoles broken): %s' %
            str(f.get_local_roles()))
    def test_getMemberById_nonesuch(self):
        INVALID_USER_ID = 'nonesuch'

        self.root._setObject('folder', Folder('folder'))
        site = self._makeSite(self.root.folder)
        tool = site.portal_membership
        site.acl_users = LDAPDummyUserFolder()
        self.assertEqual(None, tool.getMemberById(INVALID_USER_ID))
    def test_getMemberById_nonlocal(self):
        NONLOCAL_USER_ID = 'user_bar'

        self.root._setObject('folder', Folder('folder'))
        site = self._makeSite(self.root.folder)
        self.root.folder._setObject('acl_users', LDAPDummyUserFolder())
        tool = site.portal_membership
        member = tool.getMemberById(NONLOCAL_USER_ID)
        self.assertEqual(member.getId(), NONLOCAL_USER_ID)
    def test_getCandidateLocalRoles(self):
        site = self._makeSite()
        mtool = site.portal_membership
        acl_users = site._setObject('acl_users', LDAPDummyUserFolder())

        newSecurityManager(None, acl_users.user_foo)
        rval = mtool.getCandidateLocalRoles(mtool)
        self.assertEqual(rval, ('Dummy', ))
        newSecurityManager(None, acl_users.all_powerful_Oz)
        rval = mtool.getCandidateLocalRoles(mtool)
        self.assertEqual(rval, ('Manager', 'Member', 'Owner', 'Reviewer'))
    def test_getMemberById_chained(self):
        LOCAL_USER_ID = 'user_foo'
        NONLOCAL_USER_ID = 'user_bar'

        self.root._setObject('folder', Folder('folder'))
        site = self._makeSite(self.root.folder)
        tool = site.portal_membership

        local_uf = LDAPDummyUserFolder()
        delattr(local_uf, NONLOCAL_USER_ID)
        site._setObject('acl_users', local_uf)

        nonlocal_uf = LDAPDummyUserFolder()
        delattr(nonlocal_uf, LOCAL_USER_ID)
        self.root.folder._setObject('acl_users', nonlocal_uf)

        local_member = tool.getMemberById(LOCAL_USER_ID)
        self.assertEqual(local_member.getId(), LOCAL_USER_ID)

        nonlocal_member = tool.getMemberById(NONLOCAL_USER_ID)
        self.assertEqual(nonlocal_member.getId(), NONLOCAL_USER_ID)
    def setUp(self):
        import Products.LDAPUserFolder
        zcml.load_config('configure.zcml', Products.LDAPUserFolder)

        MembershipTests.setUp(self)
        ZopeLite.installProduct('LDAPUserFolder')
        site = self.app.site

        profile_id = 'profile-Products.LDAPUserFolder:cmfldap'
        site.portal_setup.runAllImportStepsFromProfile(profile_id)

        # Remove the "standard" user folder and replace it with a
        # LDAPDummyUserFolder
        site.manage_delObjects(['acl_users'])
        site._setObject('acl_users', LDAPDummyUserFolder())

        # Register one new attribute for testing
        site.portal_memberdata.addMemberProperty('sn')
예제 #7
0
    def _mungeSite(self, site):
        # Load the LDAPUserFolder:default extension profile and run it
        profile_id = 'profile-LDAPUserFolder:default'
        try:
            site.portal_setup.runAllImportStepsFromProfile(profile_id)
        except AttributeError:
            # BBB GenericSetup < 1.3
            site.portal_setup.setImportContext(profile_id)
            site.portal_setup.runAllImportSteps()

        # Remove the "standard" user folder and replace it with a
        # LDAPDummyUserFolder
        site.manage_delObjects(['acl_users'])
        site._setObject('acl_users', LDAPDummyUserFolder())

        # Register one new attribute for testing
        site.portal_memberdata.addMemberProperty('sn')

        return site
예제 #8
0
 def test_setSecurityProfile(self):
     from Products.LDAPUserFolder.LDAPMemberDataTool import LDAPMemberDataTool
     folder = Folder('test')
     folder._setOb('portal_memberdata', LDAPMemberDataTool())
     folder._setOb('acl_users', LDAPDummyUserFolder())
     user = LDAPDummyUser('bob', 'pw', ['Role'], ['domain'])
     folder.acl_users._addUser(user)
     user = folder.acl_users.getUser(user.getId())
     member = folder.portal_memberdata.wrapUser(user)
     member.setSecurityProfile(password='******')
     self.assertEqual(user.__, 'newpw')
     self.assertEqual(list(user.roles), ['Role'])
     self.assertEqual(list(user.domains), ['domain'])
     member.setSecurityProfile(roles=['NewRole'])
     self.assertEqual(user.__, 'newpw')
     self.assertEqual(list(user.roles), ['NewRole'])
     self.assertEqual(list(user.domains), ['domain'])
     member.setSecurityProfile(domains=['newdomain'])
     self.assertEqual(user.__, 'newpw')
     self.assertEqual(list(user.roles), ['NewRole'])
     self.assertEqual(list(user.domains), ['newdomain'])
    def test_deleteMembers(self):
        site = self._makeSite()
        mtool = site.portal_membership
        members = site._setObject('Members', PortalFolder('Members'))
        acl_users = site._setObject('acl_users', LDAPDummyUserFolder())
        utool = site._setObject('portal_url', DummyTool())
        wtool = site._setObject('portal_workflow', DummyTool())
        mdtool = site._setObject('portal_memberdata', LDAPMemberDataTool())
        newSecurityManager(None, acl_users.all_powerful_Oz)

        self.assertEqual(acl_users.getUserById('user_foo'), acl_users.user_foo)
        mtool.createMemberArea('user_foo')
        self.failUnless(hasattr(members.aq_self, 'user_foo'))
        mdtool.registerMemberData('Dummy', 'user_foo')
        self.failUnless(mdtool._members.has_key('user_foo'))

        rval = mtool.deleteMembers(('user_foo', 'user_baz'))
        self.assertEqual(rval, ('user_foo', ))
        self.failIf(acl_users.getUserById('user_foo', None))
        self.failIf(mdtool._members.has_key('user_foo'))
        self.failIf(hasattr(members.aq_self, 'user_foo'))
예제 #10
0
    def test_MemberPropertyManagement(self):
        folder = Folder('test_folder')
        folder._setObject('portal_memberdata', self._makeOne())
        folder._setObject('acl_users', LDAPDummyUserFolder())
        tool = folder.portal_memberdata
        ldap_schema = folder.acl_users.getSchemaConfig()

        # Starting out, no property is registered. All LDAPUserFolder schema
        # items are available for registration.
        self.assertEqual(len(tool.getSortedMemberProperties()), 0)
        available = tool.getAvailableMemberProperties()
        available_keys = [x['ldap_name'] for x in available]
        self.assertEqual(len(ldap_schema.keys()), len(available))
        for ldap_property in ldap_schema.keys():
            self.failUnless(ldap_property in available_keys)

        # Now I am adding three properties. I'm also attempting to add an
        # unknown property, and add one of them twice. Those will be
        # disregarded.
        tool.addMemberProperty('sn')
        tool.addMemberProperty('givenName')
        tool.addMemberProperty('telephoneNumber')
        tool.addMemberProperty('FOO')
        tool.addMemberProperty('givenName')
        available = tool.getAvailableMemberProperties()
        available_keys = [x['ldap_name'] for x in available]
        assigned = tool.getSortedMemberProperties()
        self.assertEqual(len(assigned), 3)
        self.assertEqual(len(ldap_schema.keys()), len(available) + 3)
        for property_info in assigned:
            self.failIf(property_info['ldap_name'] in available_keys)
        self.failIf('FOO' in [x['ldap_name'] for x in assigned])

        # One of the premises is that new attributes are always appended,
        # they appear last after they have been registered. We can predict
        # the order.
        assigned = tool.getSortedMemberProperties()
        self.assertEquals([x['ldap_name'] for x in assigned],
                          ['sn', 'givenName', 'telephoneNumber'])

        # Now we start sorting them a bit
        tool.moveMemberPropertyUp('givenName')
        assigned = tool.getSortedMemberProperties()
        self.assertEquals([x['ldap_name'] for x in assigned],
                          ['givenName', 'sn', 'telephoneNumber'])

        # Moving the top element up does nothing.
        tool.moveMemberPropertyUp('givenName')
        assigned = tool.getSortedMemberProperties()
        self.assertEquals([x['ldap_name'] for x in assigned],
                          ['givenName', 'sn', 'telephoneNumber'])

        # Moving an unknown element up does nothing.
        tool.moveMemberPropertyUp('FOO')
        assigned = tool.getSortedMemberProperties()
        self.assertEquals([x['ldap_name'] for x in assigned],
                          ['givenName', 'sn', 'telephoneNumber'])

        # Moving one down
        tool.moveMemberPropertyDown('sn')
        assigned = tool.getSortedMemberProperties()
        self.assertEquals([x['ldap_name'] for x in assigned],
                          ['givenName', 'telephoneNumber', 'sn'])

        # Moving the bottom element down does nothing
        tool.moveMemberPropertyDown('sn')
        assigned = tool.getSortedMemberProperties()
        self.assertEquals([x['ldap_name'] for x in assigned],
                          ['givenName', 'telephoneNumber', 'sn'])

        # Moving an unknown element down does nothing
        tool.moveMemberPropertyDown('FOO')
        assigned = tool.getSortedMemberProperties()
        self.assertEquals([x['ldap_name'] for x in assigned],
                          ['givenName', 'telephoneNumber', 'sn'])

        # Now we are deleting one of the elements.
        tool.removeMemberProperty('telephoneNumber')
        assigned = tool.getSortedMemberProperties()
        available = tool.getAvailableMemberProperties()
        available_keys = [x['ldap_name'] for x in available]
        self.assertEquals([x['ldap_name'] for x in assigned],
                          ['givenName', 'sn'])
        self.assertEqual(len(assigned), 2)
        self.assertEqual(len(ldap_schema.keys()), len(available) + 2)
        for property_info in assigned:
            self.failIf(property_info['ldap_name'] in available_keys)