gvaldap/gvaldap/ldaptasks/tests/test_tasks.py
Jan Dittberner 4b060c51f4 Add unit tests
This commit adds test coverage for gvaldap and ldapentities and starts
to provide coverage for ldaptasks using mockldap.
2016-02-01 00:55:59 +00:00

139 lines
4.7 KiB
Python

"""
This module provides tests for :py:mod:`ldaptasks.tasks`.
"""
from __future__ import absolute_import
from django.conf import settings
from django.test import TestCase
from celery.exceptions import Reject
from mockldap import MockLdap
from ldaptasks.tasks import create_ldap_group, create_ldap_user
class LdapTaskTestCase(TestCase):
directory = {
settings.DATABASES['ldap']['USER']: {
'userPassword': [settings.DATABASES['ldap']['PASSWORD']]
},
settings.GROUP_BASE_DN: {
'objectClass': ['top', 'organizationalUnit'],
'ou': ['groups']
},
settings.USER_BASE_DN: {
'objectClass': ['top', 'organizationalUnit'],
'ou': ['users']
},
'cn=existing,' + settings.GROUP_BASE_DN: {
'objectClass': ['posixGroup'],
'gidNumber': ['4711'],
'cn': ['existing'],
'description': ['existing test group'],
'memberUid': ['existing'],
},
'uid=existing,' + settings.USER_BASE_DN: {
'objectClass': ['account', 'posixAccount'],
'uidNumber': ['815'],
'gidNumber': ['4711'],
'gecos': ['existing test user'],
'homeDirectory': ['/home/existing'],
'loginShell': ['/bin/bash'],
'uid': ['existing'],
'userPassword': ['secret'],
'cn': ['existing']
}
}
@classmethod
def setUpClass(cls):
cls.mockldap = MockLdap(cls.directory)
@classmethod
def tearDownClass(cls):
del cls.mockldap
def setUp(self):
self.mockldap.start()
self.ldapobj = self.mockldap[settings.DATABASES['ldap']['NAME']]
def tearDown(self):
self.mockldap.stop()
del self.ldapobj
def test_create_ldap_group(self):
dn = create_ldap_group('test', 5000, 'test group')
self.assertEqual('cn=test,%s' % settings.GROUP_BASE_DN, dn)
self.assertEquals(
self.ldapobj.methods_called(),
['initialize', 'simple_bind_s', 'search_s', 'add_s']
)
def test_create_ldap_group_existing(self):
dn = create_ldap_group('existing', 4711, 'existing test group')
self.assertEqual('cn=existing,%s' % settings.GROUP_BASE_DN, dn)
self.assertEquals(
self.ldapobj.methods_called(), [
'initialize', 'simple_bind_s', 'search_s', 'search_s',
'search_s', 'search_s'
]
)
def test_create_ldap_group_existing_modify(self):
dn = create_ldap_group('existing', 4711, 'change existing test group')
self.assertEqual('cn=existing,%s' % settings.GROUP_BASE_DN, dn)
self.assertEquals(
self.ldapobj.methods_called(), [
'initialize', 'simple_bind_s', 'search_s', 'search_s',
'search_s', 'search_s', 'modify_s'
]
)
def test_create_ldap_user(self):
dn = create_ldap_user(
'test', 5000, 4711, 'Test User', '/home/test', '/bin/bash',
'secret')
self.assertEqual('uid=test,%s' % settings.USER_BASE_DN, dn)
self.assertEquals(
self.ldapobj.methods_called(), [
'initialize', 'simple_bind_s', 'search_s', 'search_s',
'search_s', 'add_s', 'search_s', 'search_s', 'modify_s'
]
)
def test_create_ldap_user_invalid_group(self):
with self.assertRaises(Reject):
create_ldap_user(
'test', 5000, 5000, 'Test User', '/home/test', '/bin/bash',
'secret')
self.assertEqual(self.ldapobj.methods_called(), [
'initialize', 'simple_bind_s', 'search_s', 'search_s'
]
)
def test_create_ldap_user_no_password(self):
dn = create_ldap_user(
'test', 5000, 4711, 'Test User', '/home/test', '/bin/bash',
None)
self.assertEqual('uid=test,%s' % settings.USER_BASE_DN, dn)
self.assertEquals(
self.ldapobj.methods_called(), [
'initialize', 'simple_bind_s', 'search_s', 'search_s',
'search_s', 'add_s', 'search_s', 'search_s', 'modify_s'
]
)
def test_create_ldap_user_existing(self):
dn = create_ldap_user(
'existing', 815, 4711, 'existing test user', '/home/existing',
'/bin/bash', 'secret'
)
self.assertEqual('uid=existing,%s' % settings.USER_BASE_DN, dn)
self.assertEquals(
self.ldapobj.methods_called(), [
'initialize', 'simple_bind_s', 'search_s', 'search_s',
'search_s', 'search_s', 'search_s', 'search_s', 'modify_s'
]
)