diff options
author | Aaron Haslett <aaronhaslett@catalyst.net.nz> | 2019-04-04 14:39:41 +1300 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2019-04-11 04:17:09 +0000 |
commit | e34abefb77729330cd48bc039c82b03fe545f8a9 (patch) | |
tree | 6b0490f0662700727cd11a1406a0c7b8b0c363b4 /source4 | |
parent | 140a6733a458d0afa20237a09ef4ee2546a83a8f (diff) | |
download | samba-e34abefb77729330cd48bc039c82b03fe545f8a9.tar.gz |
samdb: test for schemainfo update with relax control
Currently schema info's revision field isn't incremented if relax
control is present. This is so that no increment is done during
provision, but we need the relax control in other situations where the
increment is desired. This patch adds a failing test to expose the
problem.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13799
Signed-off-by: Aaron Haslett <aaronhaslett@catalyst.net.nz>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Garming Sam <garming@catalyst.net.nz>
Diffstat (limited to 'source4')
-rwxr-xr-x | source4/dsdb/tests/python/dsdb_schema_info.py | 15 | ||||
-rwxr-xr-x | source4/selftest/tests.py | 2 |
2 files changed, 12 insertions, 5 deletions
diff --git a/source4/dsdb/tests/python/dsdb_schema_info.py b/source4/dsdb/tests/python/dsdb_schema_info.py index 60c97b65829..8554e6c6082 100755 --- a/source4/dsdb/tests/python/dsdb_schema_info.py +++ b/source4/dsdb/tests/python/dsdb_schema_info.py @@ -166,16 +166,17 @@ systemOnly: FALSE """ return ldif - def test_AddModifyClass(self): + def test_AddModifyClass(self, controls=[], class_pre="schemaInfo-Class-"): # get initial schemaInfo schi_before = self._getSchemaInfo() # create names for a Class to add - (class_name, class_ldap_name, class_dn) = self._make_obj_names("schemaInfo-Class-") + (class_name, class_ldap_name, class_dn) =\ + self._make_obj_names(class_pre) ldif = self._make_class_ldif(class_name, class_dn, 1) # add the new Class - self.sam_db.add_ldif(ldif) + self.sam_db.add_ldif(ldif, controls=controls) self._ldap_schemaUpdateNow() # compare resulting schemaInfo schi_after = self._getSchemaInfo() @@ -184,7 +185,7 @@ systemOnly: FALSE # rename the Class class_dn_new = class_dn.replace(class_name, class_name + "-NEW") try: - self.sam_db.rename(class_dn, class_dn_new) + self.sam_db.rename(class_dn, class_dn_new, controls=controls) except LdbError as e1: (num, _) = e1.args self.fail("failed to change CN for %s: %s" % (class_name, _)) @@ -192,3 +193,9 @@ systemOnly: FALSE # compare resulting schemaInfo schi_after = self._getSchemaInfo() self._checkSchemaInfo(schi_before, schi_after) + + def test_AddModifyClassLocalRelaxed(self): + lp = self.get_loadparm() + self.sam_db = samba.tests.connect_samdb(lp.samdb_url()) + self.test_AddModifyClass(controls=["relax:0"], + class_pre="schemaInfo-Relaxed-") diff --git a/source4/selftest/tests.py b/source4/selftest/tests.py index f74678fb90b..db51e97a78e 100755 --- a/source4/selftest/tests.py +++ b/source4/selftest/tests.py @@ -837,7 +837,7 @@ plantestsuite_loadlist("samba4.tokengroups.ntlm.python(ad_dc_default)", "ad_dc_d plantestsuite("samba4.sam.python(fl2008r2dc)", "fl2008r2dc", [python, os.path.join(samba4srcdir, "dsdb/tests/python/sam.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN']) plantestsuite("samba4.sam.python(ad_dc_default)", "ad_dc_default", [python, os.path.join(samba4srcdir, "dsdb/tests/python/sam.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN']) plantestsuite("samba4.user_account_control.python(ad_dc_default)", "ad_dc_default", [python, os.path.join(samba4srcdir, "dsdb/tests/python/user_account_control.py"), '$SERVER', '-U"$USERNAME%$PASSWORD"', '--workgroup=$DOMAIN']) -planoldpythontestsuite("ad_dc_default", "dsdb_schema_info", +planoldpythontestsuite("ad_dc_default:local", "dsdb_schema_info", extra_path=[os.path.join(samba4srcdir, 'dsdb/tests/python')], name="samba4.schemaInfo.python(ad_dc_default)", extra_args=['-U"$DOMAIN/$DC_USERNAME%$DC_PASSWORD"']) |