]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
gpo: Test to ensure that samba-gpupdate doesn't require ad-dc
authorDavid Mulder <dmulder@suse.com>
Wed, 24 Feb 2021 17:53:17 +0000 (10:53 -0700)
committerJeremy Allison <jra@samba.org>
Mon, 8 Mar 2021 17:58:37 +0000 (17:58 +0000)
Running samba-gpupdate on a client is causing an
error in gp_access_ext, due to it attempting to
access sam.ldb before detecting whether we are on
an ad-dc.

Signed-off-by: David Mulder <dmulder@suse.com>
Reviewed-by: Jeremy Allison <jra@samba.org>
python/samba/tests/gpo_member.py [new file with mode: 0644]
selftest/knownfail.d/gpo [new file with mode: 0644]
source4/selftest/tests.py

diff --git a/python/samba/tests/gpo_member.py b/python/samba/tests/gpo_member.py
new file mode 100644 (file)
index 0000000..3d614f5
--- /dev/null
@@ -0,0 +1,44 @@
+# Unix SMB/CIFS implementation. Tests for smb manipulation
+# Copyright (C) David Mulder <dmulder@suse.com> 2018
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+import os
+from samba import gpo, tests
+from samba.gpclass import GPOStorage
+from samba.param import LoadParm
+from samba.credentials import Credentials
+from samba.gp_sec_ext import gp_access_ext
+import logging
+
+class GPOTests(tests.TestCase):
+    def setUp(self):
+        super(GPOTests, self).setUp()
+        self.server = os.environ["SERVER"]
+        self.dc_account = self.server.upper() + '$'
+        self.lp = LoadParm()
+        self.lp.load_default()
+        self.creds = self.insta_creds(template=self.get_credentials())
+
+    def tearDown(self):
+        super(GPOTests, self).tearDown()
+
+    def test_sec_ext_load_on_member(self):
+        logger = logging.getLogger('gpo_tests')
+        cache_dir = self.lp.get('cache directory')
+        store = GPOStorage(os.path.join(cache_dir, 'gpo.tdb'))
+        try:
+            gp_access_ext(logger, self.lp, self.creds, store)
+        except Exception:
+            self.fail('Initializing gp_access_ext should not require ad-dc')
diff --git a/selftest/knownfail.d/gpo b/selftest/knownfail.d/gpo
new file mode 100644 (file)
index 0000000..e415e42
--- /dev/null
@@ -0,0 +1 @@
+^samba.tests.gpo_member
index 4c9ddccd01b53e54e9d7da7af81acb6451987a68..bc8fea83474043005ea2e82319c345240dcd75c5 100755 (executable)
@@ -806,6 +806,7 @@ planpythontestsuite("chgdcpass:local", "samba.tests.dcerpc.rpcecho")
 
 planoldpythontestsuite("nt4_dc", "samba.tests.netbios", extra_args=['-U"$USERNAME%$PASSWORD"'])
 planoldpythontestsuite("ad_dc:local", "samba.tests.gpo", extra_args=['-U"$USERNAME%$PASSWORD"'])
+planoldpythontestsuite("ad_member", "samba.tests.gpo_member", extra_args=['-U"$USERNAME%$PASSWORD"'])
 planoldpythontestsuite("ad_dc:local", "samba.tests.dckeytab", extra_args=['-U"$USERNAME%$PASSWORD"'])
 
 planoldpythontestsuite("none", "samba.tests.krb5.kcrypto")