def setUp(self): ret_chn = ReturnChannel(stdout_callback, {}) command_list = load_modules() self.config = Config('help', '', command_list, [], ret_chn, 'shell') self.ldap_helper = LDAPHelper(self.config) self.config.import_custom_options() self.init_config()
class LDAPHelperTests(unittest.TestCase): def setUp(self): ret_chn = ReturnChannel(stdout_callback, {}) command_list = load_modules() self.config = Config('help', '', command_list, [], ret_chn, 'shell') self.ldap_helper = LDAPHelper(self.config) self.config.import_custom_options() self.init_config() def init_config(self): self.config['ldap_method'] = 'LDAP' self.config['page_size'] = 1 self.config['bind_dn'] = 'cn=foo,dc=example,dc=com' def test_normalize_dc(self): self.assertEquals(self.ldap_helper.normalize_dc('dc=abc'), 'DC=abc') self.assertEquals(self.ldap_helper.normalize_dc('DC=def'), 'DC=def') def test_compute_base_dn(self): self.assertEquals( self.ldap_helper.compute_base_dn('cn=foo,ou=bar,dc=abc,dc=com'), 'DC=abc,DC=com' ) self.assertEquals( self.ldap_helper.compute_base_dn('ou=bar,dc=foo,dc=example,dc=org'), 'DC=foo,DC=example,DC=org' ) def test_initialize_basedn(self): self.config['base_dn'] = '' self.ldap_helper.initialize() self.assertEquals(self.ldap_helper.basedn, 'DC=example,DC=com') self.config['base_dn'] = 'DC=foo,DC=org' self.ldap_helper.initialize() self.assertEquals(self.ldap_helper.basedn, 'DC=foo,DC=org') def test_initialize_checks_ldap_method(self): self.config['ldap_method'] = 'foo' self.assertRaises(LDAPConnectorError, self.ldap_helper.initialize) def test_bind_dn_required(self): self.config['bind_dn'] = '' self.assertRaises(LDAPConnectorError, self.ldap_helper.initialize) def test_search(self): self.ldap_helper.initialize() self.ldap_helper.connection = MockLDAP(range(10)) results = self.ldap_helper.search(None, None, None) self.assertEquals(results, range(10)) def test_get_group_from_ldap_tuple(self): self.ldap_helper.initialize() self.ldap_helper.connection = MockLDAP('') self.ldap_helper.connect() group = self.ldap_helper.get_group_from_ldap_tuple( ('CN=mathematicians,OU=SyncGroups,DC=labs,DC=sdelements,DC=com', {'member': ['CN=Simeon Poisson,CN=Users,DC=labs,DC=sdelements,DC=com', 'CN=PGJ Dirichlet,CN=Users,DC=labs,DC=sdelements,DC=com', 'CN=James Bond,CN=Users,DC=labs,DC=sdelements,DC=com', 'CN=analyst,OU=SyncGroups,DC=labs,DC=sdelements,DC=com', 'CN=bind user,CN=Users,DC=labs,DC=sdelements,DC=com', 'CN=David Hilbert,CN=Users,DC=labs,DC=sdelements,DC=com', 'CN=john neumann,CN=Users,DC=labs,DC=sdelements,DC=com'], 'name': ['mathematicians']}) ) self.assertEquals( group, ('mathematicians', ['CN=Simeon Poisson,CN=Users,DC=labs,DC=sdelements,DC=com', 'CN=PGJ Dirichlet,CN=Users,DC=labs,DC=sdelements,DC=com', 'CN=James Bond,CN=Users,DC=labs,DC=sdelements,DC=com', 'CN=analyst,OU=SyncGroups,DC=labs,DC=sdelements,DC=com', 'CN=bind user,CN=Users,DC=labs,DC=sdelements,DC=com', 'CN=David Hilbert,CN=Users,DC=labs,DC=sdelements,DC=com', 'CN=john neumann,CN=Users,DC=labs,DC=sdelements,DC=com'], 'CN=mathematicians,OU=SyncGroups,DC=labs,DC=sdelements,DC=com') ) def test_get_group_users(self): self.ldap_helper.initialize() self.ldap_helper.connection = MockLDAP([ ('CN=john neumann,CN=Users,DC=labs,DC=sdelements,DC=com', {'givenName': ['john'], 'cn': ['john neumann'], 'userAccountControl': ['512'], 'sn': ['neumann']}), ('CN=David Hilbert,CN=Users,DC=labs,DC=sdelements,DC=com', {'mail': ['*****@*****.**'], 'givenName': ['David'], 'cn': ['David Hilbert'], 'userAccountControl': ['512'], 'sn': ['Hilbert']}), ('CN=bind user,CN=Users,DC=labs,DC=sdelements,DC=com', {'mail': ['*****@*****.**'], 'givenName': ['bind'], 'cn': ['bind user'], 'userAccountControl': ['66048'], 'sn': ['user']}) ]) self.ldap_helper.connect() group = 'CN=mathematicians,OU=SyncGroups,DC=labs,DC=sdelements,DC=com' members = ['CN=bind user,CN=Users,DC=labs,DC=sdelements,DC=com', 'CN=David Hilbert,CN=Users,DC=labs,DC=sdelements,DC=com', 'CN=john neumann,CN=Users,DC=labs,DC=sdelements,DC=com'] group_users = self.ldap_helper.get_group_users(group, members) self.assertEquals(group_users, [ {'givenName': ['john'], 'cn': ['john neumann'], 'userAccountControl': ['512'], 'sn': ['neumann']}, {'mail': ['*****@*****.**'], 'givenName': ['David'], 'cn': ['David Hilbert'], 'userAccountControl': ['512'], 'sn': ['Hilbert']}, {'mail': ['*****@*****.**'], 'givenName': ['bind'], 'cn': ['bind user'], 'userAccountControl': ['66048'], 'sn': ['user']} ]) def test_get_user_email(self): self.ldap_helper.initialize() users = [{ # active AD 'mail': ['*****@*****.**'], 'userAccountControl': ['512'], 'cn': ['James Bond'], 'sn': ['Bond'] }, { # disabled AD 'mail': ['*****@*****.**'], 'userAccountControl': ['514'], 'cn': ['James Bond'], 'sn': ['Bond'] }, { # AD - not a user 'cn': ['Administrators'] }, { # AD - user but no email 'userAccountControl': ['512'], 'cn': ['James Bond'], 'sn': ['Bond'] }, { # LDAP - user 'mail': ['*****@*****.**'], 'cn': ['James Bond'], 'sn': ['Bond'] }] expected_responses = [ '*****@*****.**', '', '', '', '*****@*****.**', ] for user, expected in zip(users, expected_responses): self.assertEqual(self.ldap_helper.get_user_email(user), expected)