コード例 #1
0
 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()
コード例 #2
0
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)