X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fupstream%2Fdjango-ldapdb.git;a=blobdiff_plain;f=examples%2Ftests.py;h=1b4a42ca4ec11f514a2328c6adaabfd7c78a2874;hp=bd47291b0fc55949a897973dcf49e8319625210c;hb=8ce1036ed9e6126d584ba22bc4a5b869eb8b67ad;hpb=641160553d6db632259d325be2b22ee7c3059f3c diff --git a/examples/tests.py b/examples/tests.py index bd47291..1b4a42c 100644 --- a/examples/tests.py +++ b/examples/tests.py @@ -32,10 +32,12 @@ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # +from django.db.models import Q from django.test import TestCase import ldap import ldapdb +from ldapdb.backends.ldap.compiler import query_as_ldap from examples.models import LdapUser, LdapGroup class BaseTestCase(TestCase): @@ -98,17 +100,37 @@ class GroupTestCase(BaseTestCase): self.assertEquals(len(qs), 3) def test_ldap_filter(self): + # single filter qs = LdapGroup.objects.filter(name='foogroup') - self.assertEquals(qs.query._ldap_filter(), '(&(objectClass=posixGroup)(cn=foogroup))') + self.assertEquals(query_as_ldap(qs.query), '(&(objectClass=posixGroup)(cn=foogroup))') - qs = LdapGroup.objects.filter(name='foogroup', gid=1000) - self.assertEquals(qs.query._ldap_filter(), '(&(objectClass=posixGroup)(&(gidNumber=1000)(cn=foogroup)))') + qs = LdapGroup.objects.filter(Q(name='foogroup')) + self.assertEquals(query_as_ldap(qs.query), '(&(objectClass=posixGroup)(cn=foogroup))') + # AND filter + qs = LdapGroup.objects.filter(gid=1000, name='foogroup') + self.assertEquals(query_as_ldap(qs.query), '(&(objectClass=posixGroup)(&(gidNumber=1000)(cn=foogroup)))') + + qs = LdapGroup.objects.filter(Q(gid=1000) & Q(name='foogroup')) + self.assertEquals(query_as_ldap(qs.query), '(&(objectClass=posixGroup)(&(gidNumber=1000)(cn=foogroup)))') + + # OR filter + qs = LdapGroup.objects.filter(Q(gid=1000) | Q(name='foogroup')) + self.assertEquals(query_as_ldap(qs.query), '(&(objectClass=posixGroup)(|(gidNumber=1000)(cn=foogroup)))') + + # single exclusion qs = LdapGroup.objects.exclude(name='foogroup') - self.assertEquals(qs.query._ldap_filter(), '(&(objectClass=posixGroup)(!(cn=foogroup)))') + self.assertEquals(query_as_ldap(qs.query), '(&(objectClass=posixGroup)(!(cn=foogroup)))') + qs = LdapGroup.objects.filter(~Q(name='foogroup')) + self.assertEquals(query_as_ldap(qs.query), '(&(objectClass=posixGroup)(!(cn=foogroup)))') + + # multiple exclusion qs = LdapGroup.objects.exclude(name='foogroup', gid=1000) - self.assertEquals(qs.query._ldap_filter(), '(&(objectClass=posixGroup)(!(&(gidNumber=1000)(cn=foogroup))))') + self.assertEquals(query_as_ldap(qs.query), '(&(objectClass=posixGroup)(!(&(gidNumber=1000)(cn=foogroup))))') + + qs = LdapGroup.objects.filter(name='foogroup').exclude(gid=1000) + self.assertEquals(query_as_ldap(qs.query), '(&(objectClass=posixGroup)(&(cn=foogroup)(!(gidNumber=1000))))') def test_filter(self): qs = LdapGroup.objects.filter(name='foogroup')