From bcb0270c6bcd6c9268c4807030d9c5945624540e Mon Sep 17 00:00:00 2001 From: Garming Sam Date: Wed, 20 Feb 2019 14:11:13 +1300 Subject: [PATCH] gpo: Add tests to make sure that an empty gplink works BUG: https://bugzilla.samba.org/show_bug.cgi?id=13564 Signed-off-by: Garming Sam Reviewed-by: Andrew Bartlett --- python/samba/tests/samba_tool/gpo.py | 34 ++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/python/samba/tests/samba_tool/gpo.py b/python/samba/tests/samba_tool/gpo.py index a760a98808e..0eb7c71b108 100644 --- a/python/samba/tests/samba_tool/gpo.py +++ b/python/samba/tests/samba_tool/gpo.py @@ -19,6 +19,7 @@ # import os +import ldb import samba from samba.tests.samba_tool.base import SambaToolCmdTest import shutil @@ -113,6 +114,39 @@ class GpoCmdTestCase(SambaToolCmdTest): (result, out, err) = self.runsubcmd("gpo", "aclcheck", "-H", "ldap://%s" % os.environ["SERVER"], "-U%s%%%s" % (os.environ["USERNAME"], os.environ["PASSWORD"])) self.assertCmdSuccess(result, out, err, "Ensuring gpo checked successfully") + def test_getlink_empty(self): + self.samdb = self.getSamDB("-H", "ldap://%s" % os.environ["DC_SERVER"], + "-U%s%%%s" % (os.environ["DC_USERNAME"], + os.environ["DC_PASSWORD"])) + + container_dn = 'OU=gpo_test_link,%s' % self.samdb.get_default_basedn() + + self.samdb.add({ + 'dn': container_dn, + 'objectClass': 'organizationalUnit' + }) + + (result, out, err) = self.runsubcmd("gpo", "getlink", container_dn, + "-H", "ldap://%s" % os.environ["SERVER"], + "-U%s%%%s" % (os.environ["USERNAME"], + os.environ["PASSWORD"])) + self.assertCmdSuccess(result, out, err, "Ensuring gpo link fetched successfully") + + # Microsoft appears to allow an empty space character after deletion of + # a GPO. We should be able to handle this. + m = ldb.Message() + m.dn = ldb.Dn(self.samdb, container_dn) + m['gPLink'] = ldb.MessageElement(' ', ldb.FLAG_MOD_REPLACE, 'gPLink') + self.samdb.modify(m) + + (result, out, err) = self.runsubcmd("gpo", "getlink", container_dn, + "-H", "ldap://%s" % os.environ["SERVER"], + "-U%s%%%s" % (os.environ["USERNAME"], + os.environ["PASSWORD"])) + self.assertCmdSuccess(result, out, err, "Ensuring gpo link fetched successfully") + + self.samdb.delete(container_dn) + def test_backup_restore_compare_binary(self): """Restore from a static backup and compare the binary contents"""