s4:dsdb/test/ldap: add more test_attribute_ranges() combinations
authorStefan Metzmacher <metze@samba.org>
Wed, 25 Sep 2013 06:42:47 +0000 (08:42 +0200)
committerStefan Metzmacher <metze@samba.org>
Wed, 25 Sep 2013 06:42:47 +0000 (08:42 +0200)
The 'appliesTo' attribute is very good for testing rangeLower/rangeUpper.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
source4/dsdb/tests/python/ldap.py

index ade1d20c84a897b916b0415311350dd2c1502f6d..fe17a0a8d1303644914b7f152a728dd6b0b95660 100755 (executable)
@@ -734,6 +734,53 @@ class BasicTests(samba.tests.TestCase):
         except LdbError, (num, _):
             self.assertEquals(num, ERR_CONSTRAINT_VIOLATION)
 
+        # "appliesTo is defined with rangeLower: 36 and rangeUpper: 36
+        # and it's not allowed on objectClass: person
+        try:
+            ldb.add({
+               "dn": "cn=ldaptestuser,cn=users," + self.base_dn,
+               "objectClass": "person",
+               "appliesTo": "" })
+            self.fail()
+        except LdbError, (num, _):
+            self.assertEquals(num, ERR_INVALID_ATTRIBUTE_SYNTAX)
+
+        try:
+            ldb.add({
+               "dn": "cn=ldaptestuser,cn=users," + self.base_dn,
+               "objectClass": "person",
+               "appliesTo": "a" })
+            self.fail()
+        except LdbError, (num, _):
+            self.assertEquals(num, ERR_CONSTRAINT_VIOLATION)
+
+        try:
+            ldb.add({
+               "dn": "cn=ldaptestuser,cn=users," + self.base_dn,
+               "objectClass": "person",
+               "appliesTo": "01234567890123456789012345678901345" })
+            self.fail()
+        except LdbError, (num, _):
+            self.assertEquals(num, ERR_CONSTRAINT_VIOLATION)
+
+        try:
+            ldb.add({
+               "dn": "cn=ldaptestuser,cn=users," + self.base_dn,
+               "objectClass": "person",
+               "appliesTo": "012345678901234567890123456789013456" })
+            self.fail()
+        except LdbError, (num, _):
+            self.assertEquals(num, ERR_OBJECT_CLASS_VIOLATION)
+
+        try:
+            ldb.add({
+               "dn": "cn=ldaptestuser,cn=users," + self.base_dn,
+               "objectClass": "person",
+               "appliesTo": "0123456789012345678901234567890134567" })
+            self.fail()
+        except LdbError, (num, _):
+            self.assertEquals(num, ERR_CONSTRAINT_VIOLATION)
+
         ldb.add({
            "dn": "cn=ldaptestuser,cn=users," + self.base_dn,
            "objectClass": "person" })
@@ -758,6 +805,106 @@ class BasicTests(samba.tests.TestCase):
         except LdbError, (num, _):
             self.assertEquals(num, ERR_CONSTRAINT_VIOLATION)
 
+        m = Message()
+        m.dn = Dn(ldb, "cn=ldaptestuser,cn=users," + self.base_dn)
+        m["appliesTo"] = MessageElement("",
+                                        FLAG_MOD_ADD, "appliesTo")
+        try:
+            ldb.modify(m)
+            self.fail()
+        except LdbError, (num, _):
+            self.assertEquals(num, ERR_INVALID_ATTRIBUTE_SYNTAX)
+
+        m = Message()
+        m.dn = Dn(ldb, "cn=ldaptestuser,cn=users," + self.base_dn)
+        m["appliesTo"] = MessageElement("",
+                                        FLAG_MOD_REPLACE, "appliesTo")
+        try:
+            ldb.modify(m)
+            self.fail()
+        except LdbError, (num, _):
+            self.assertEquals(num, ERR_INVALID_ATTRIBUTE_SYNTAX)
+
+        m = Message()
+        m.dn = Dn(ldb, "cn=ldaptestuser,cn=users," + self.base_dn)
+        m["appliesTo"] = MessageElement("",
+                                        FLAG_MOD_ADD, "appliesTo")
+        try:
+            ldb.modify(m)
+            self.fail()
+        except LdbError, (num, _):
+            self.assertEquals(num, ERR_INVALID_ATTRIBUTE_SYNTAX)
+
+        m = Message()
+        m.dn = Dn(ldb, "cn=ldaptestuser,cn=users," + self.base_dn)
+        m["appliesTo"] = MessageElement("a",
+                                        FLAG_MOD_REPLACE, "appliesTo")
+        try:
+            ldb.modify(m)
+            self.fail()
+        except LdbError, (num, _):
+            self.assertEquals(num, ERR_CONSTRAINT_VIOLATION)
+
+        m = Message()
+        m.dn = Dn(ldb, "cn=ldaptestuser,cn=users," + self.base_dn)
+        m["appliesTo"] = MessageElement("01234567890123456789012345678901345",
+                                        FLAG_MOD_ADD, "appliesTo")
+        try:
+            ldb.modify(m)
+            self.fail()
+        except LdbError, (num, _):
+            self.assertEquals(num, ERR_CONSTRAINT_VIOLATION)
+
+        m = Message()
+        m.dn = Dn(ldb, "cn=ldaptestuser,cn=users," + self.base_dn)
+        m["appliesTo"] = MessageElement("01234567890123456789012345678901345",
+                                        FLAG_MOD_REPLACE, "appliesTo")
+        try:
+            ldb.modify(m)
+            self.fail()
+        except LdbError, (num, _):
+            self.assertEquals(num, ERR_CONSTRAINT_VIOLATION)
+
+        m = Message()
+        m.dn = Dn(ldb, "cn=ldaptestuser,cn=users," + self.base_dn)
+        m["appliesTo"] = MessageElement("012345678901234567890123456789013456",
+                                        FLAG_MOD_ADD, "appliesTo")
+        try:
+            ldb.modify(m)
+            self.fail()
+        except LdbError, (num, _):
+            self.assertEquals(num, ERR_OBJECT_CLASS_VIOLATION)
+
+        m = Message()
+        m.dn = Dn(ldb, "cn=ldaptestuser,cn=users," + self.base_dn)
+        m["appliesTo"] = MessageElement("012345678901234567890123456789013456",
+                                        FLAG_MOD_REPLACE, "appliesTo")
+        try:
+            ldb.modify(m)
+            self.fail()
+        except LdbError, (num, _):
+            self.assertEquals(num, ERR_OBJECT_CLASS_VIOLATION)
+
+        m = Message()
+        m.dn = Dn(ldb, "cn=ldaptestuser,cn=users," + self.base_dn)
+        m["appliesTo"] = MessageElement("0123456789012345678901234567890134567",
+                                        FLAG_MOD_ADD, "appliesTo")
+        try:
+            ldb.modify(m)
+            self.fail()
+        except LdbError, (num, _):
+            self.assertEquals(num, ERR_CONSTRAINT_VIOLATION)
+
+        m = Message()
+        m.dn = Dn(ldb, "cn=ldaptestuser,cn=users," + self.base_dn)
+        m["appliesTo"] = MessageElement("0123456789012345678901234567890134567",
+                                        FLAG_MOD_REPLACE, "appliesTo")
+        try:
+            ldb.modify(m)
+            self.fail()
+        except LdbError, (num, _):
+            self.assertEquals(num, ERR_CONSTRAINT_VIOLATION)
+
         m = Message()
         m.dn = Dn(ldb, "cn=ldaptestuser,cn=users," + self.base_dn)
         m["sn"] = MessageElement("x", FLAG_MOD_REPLACE, "sn")