+ self.assertRaises(LdapUser.DoesNotExist, LdapUser.objects.get, username='does_not_exist')
+
+ def test_update(self):
+ u = LdapUser.objects.get(username='foouser')
+ u.first_name = u'Fôo2'
+ u.save()
+
+ # make sure DN gets updated if we change the pk
+ u.username = 'foouser2'
+ u.save()
+ self.assertEquals(u.dn, 'uid=foouser2,%s' % LdapUser.base_dn)
+
+class ScopedTestCase(BaseTestCase):
+ def setUp(self):
+ super(ScopedTestCase, self).setUp()
+
+ cursor = ldapdb.connection._cursor()
+ self.scoped_dn = "ou=contacts,%s" % LdapGroup.base_dn
+ attrs = [('objectClass', ['top', 'organizationalUnit']), ("ou", ["contacts"])]
+ cursor.connection.add_s(self.scoped_dn, attrs)
+
+ def test_scope(self):
+ ScopedGroup = LdapGroup.scoped(self.scoped_dn)
+
+ # create group
+ g = LdapGroup()
+ g.name = "foogroup"
+ g.gid = 1000
+ g.save()
+
+ qs = LdapGroup.objects.all()
+ self.assertEquals(qs.count(), 1)
+
+ qs = ScopedGroup.objects.all()
+ self.assertEquals(qs.count(), 0)
+
+ # create scoped group
+ g2 = ScopedGroup()
+ g2.name = "scopedgroup"
+ g2.gid = 5000
+ g2.save()
+
+ qs = LdapGroup.objects.all()
+ self.assertEquals(qs.count(), 2)
+
+ qs = ScopedGroup.objects.all()
+ self.assertEquals(qs.count(), 1)
+
+class AdminTestCase(BaseTestCase):
+ fixtures = ['test_users.json']
+
+ def setUp(self):
+ super(AdminTestCase, self).setUp()
+
+ g = LdapGroup()
+ g.name = "foogroup"
+ g.gid = 1000
+ g.usernames = ['foouser', 'baruser']
+ g.save()
+
+ g = LdapGroup()
+ g.name = "bargroup"
+ g.gid = 1001
+ g.usernames = ['zoouser', 'baruser']
+ g.save()
+
+ u = LdapUser()
+ u.first_name = "Foo"
+ u.last_name = "User"
+ u.full_name = "Foo User"
+ u.group = 1000
+ u.home_directory = "/home/foouser"
+ u.uid = 2000
+ u.username = "foouser"
+ u.save()
+
+ u = LdapUser()
+ u.first_name = "Bar"
+ u.last_name = "User"
+ u.full_name = "Bar User"
+ u.group = 1001
+ u.home_directory = "/home/baruser"
+ u.uid = 2001
+ u.username = "baruser"
+ u.save()
+
+ self.client.login(username="test_user", password="password")
+
+ def test_index(self):
+ response = self.client.get('/admin/examples/')
+ self.assertContains(response, "Ldap groups")
+ self.assertContains(response, "Ldap users")
+
+ def test_group_list(self):
+ response = self.client.get('/admin/examples/ldapgroup/')
+ self.assertContains(response, "Ldap groups")
+ self.assertContains(response, "foogroup")
+ self.assertContains(response, "1000")
+
+ # order by name
+ response = self.client.get('/admin/examples/ldapgroup/?o=1')
+ self.assertContains(response, "Ldap groups")
+ self.assertContains(response, "foogroup")
+ self.assertContains(response, "1000")
+
+ # order by gid
+ response = self.client.get('/admin/examples/ldapgroup/?o=2')
+ self.assertContains(response, "Ldap groups")
+ self.assertContains(response, "foogroup")
+ self.assertContains(response, "1000")
+
+ def test_group_detail(self):
+ response = self.client.get('/admin/examples/ldapgroup/foogroup/')
+ self.assertContains(response, "foogroup")
+ self.assertContains(response, "1000")
+
+ def test_group_delete(self):
+ response = self.client.post('/admin/examples/ldapgroup/foogroup/delete/', {'yes': 'post'})
+ self.assertRedirects(response, '/admin/examples/ldapgroup/')
+
+ def test_group_search(self):
+ response = self.client.get('/admin/examples/ldapgroup/?q=foo')
+ self.assertContains(response, "Ldap groups")
+ self.assertContains(response, "foogroup")
+ self.assertContains(response, "1000")
+
+ def test_user_list(self):
+ response = self.client.get('/admin/examples/ldapuser/')
+ self.assertContains(response, "Ldap users")
+ self.assertContains(response, "foouser")
+ self.assertContains(response, "2000")
+
+ # order by username
+ response = self.client.get('/admin/examples/ldapuser/?o=1')
+ self.assertContains(response, "Ldap users")
+ self.assertContains(response, "foouser")
+ self.assertContains(response, "2000")
+
+ # order by uid
+ response = self.client.get('/admin/examples/ldapuser/?o=2')
+ self.assertContains(response, "Ldap users")
+ self.assertContains(response, "foouser")
+ self.assertContains(response, "2000")
+
+ def test_user_detail(self):
+ response = self.client.get('/admin/examples/ldapuser/foouser/')
+ self.assertContains(response, "foouser")
+ self.assertContains(response, "2000")
+
+ def test_user_delete(self):
+ response = self.client.post('/admin/examples/ldapuser/foouser/delete/', {'yes': 'post'})
+ self.assertRedirects(response, '/admin/examples/ldapuser/')
+