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')
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
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'))
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)