selftest: Check re-opening sam.ldb corrects the @ATTRIBUTES and @INDEXLIST
authorAndrew Bartlett <abartlet@samba.org>
Wed, 13 Sep 2017 04:13:06 +0000 (16:13 +1200)
committerStefan Metzmacher <metze@samba.org>
Thu, 14 Sep 2017 16:43:16 +0000 (18:43 +0200)
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Garming Sam <garming@catalyst.net.nz>
python/samba/tests/dsdb_schema_attributes.py
selftest/knownfail.d/dsdb_schema_attributes [new file with mode: 0644]

index df6c8bb11b2892ff68114287dcdbfe50335852bb..2bebbb569f2c938ad04e1a4474957755b8d9974b 100644 (file)
@@ -173,3 +173,56 @@ systemOnly: FALSE
 
         self.assertIn(attr_ldap_name, [str(x) for x in idx_res[0]["@IDXATTR"]])
         self.assertIn(attr_ldap_name2, [str(x) for x in idx_res[0]["@IDXATTR"]])
+
+    def test_modify_at_attributes(self):
+        m = {"dn": "@ATTRIBUTES",
+             "@TEST_EXTRA": ["HIDDEN"]
+             }
+
+        msg = ldb.Message.from_dict(self.samdb, m, ldb.FLAG_MOD_ADD)
+        self.samdb.modify(msg)
+
+        res = self.samdb.search(base="@ATTRIBUTES", scope=ldb.SCOPE_BASE,
+                                attrs=["@TEST_EXTRA"])
+        self.assertEquals(len(res), 1)
+        self.assertEquals(str(res[0].dn), "@ATTRIBUTES")
+        self.assertEquals(len(res[0]), 1)
+        self.assertTrue("@TEST_EXTRA" in res[0])
+        self.assertEquals(len(res[0]["@TEST_EXTRA"]), 1)
+        self.assertEquals(res[0]["@TEST_EXTRA"][0], "HIDDEN")
+
+        samdb2 = samba.tests.connect_samdb(self.lp.samdb_url())
+
+        res = self.samdb.search(base="@ATTRIBUTES", scope=ldb.SCOPE_BASE,
+                                attrs=["@TEST_EXTRA"])
+        self.assertEquals(len(res), 1)
+        self.assertEquals(str(res[0].dn), "@ATTRIBUTES")
+        self.assertEquals(len(res[0]), 0)
+        self.assertFalse("@TEST_EXTRA" in res[0])
+
+
+    def test_modify_at_indexlist(self):
+        m = {"dn": "@INDEXLIST",
+             "@TEST_EXTRA": ["1"]
+             }
+
+        msg = ldb.Message.from_dict(self.samdb, m, ldb.FLAG_MOD_ADD)
+        self.samdb.modify(msg)
+
+        res = self.samdb.search(base="@INDEXLIST", scope=ldb.SCOPE_BASE,
+                                attrs=["@TEST_EXTRA"])
+        self.assertEquals(len(res), 1)
+        self.assertEquals(str(res[0].dn), "@INDEXLIST")
+        self.assertEquals(len(res[0]), 1)
+        self.assertTrue("@TEST_EXTRA" in res[0])
+        self.assertEquals(len(res[0]["@TEST_EXTRA"]), 1)
+        self.assertEquals(res[0]["@TEST_EXTRA"][0], "1")
+
+        samdb2 = samba.tests.connect_samdb(self.lp.samdb_url())
+
+        res = self.samdb.search(base="@INDEXLIST", scope=ldb.SCOPE_BASE,
+                                attrs=["@TEST_EXTRA"])
+        self.assertEquals(len(res), 1)
+        self.assertEquals(str(res[0].dn), "@INDEXLIST")
+        self.assertEquals(len(res[0]), 0)
+        self.assertFalse("@TEST_EXTRA" in res[0])
diff --git a/selftest/knownfail.d/dsdb_schema_attributes b/selftest/knownfail.d/dsdb_schema_attributes
new file mode 100644 (file)
index 0000000..4242212
--- /dev/null
@@ -0,0 +1,2 @@
+^samba.tests.dsdb_schema_attributes.samba.tests.dsdb_schema_attributes.SchemaAttributesTestCase.test_modify_at_indexlist
+^samba.tests.dsdb_schema_attributes.samba.tests.dsdb_schema_attributes.SchemaAttributesTestCase.test_modify_at_attributes
\ No newline at end of file