]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
python: Test s3 net join and leave
authorDavid Mulder <dmulder@suse.com>
Mon, 26 Oct 2020 21:13:50 +0000 (15:13 -0600)
committerDavid Mulder <dmulder@samba.org>
Wed, 21 Apr 2021 20:51:31 +0000 (20:51 +0000)
Signed-off-by: David Mulder <dmulder@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
python/samba/tests/s3_net_join.py [new file with mode: 0644]
source4/selftest/tests.py

diff --git a/python/samba/tests/s3_net_join.py b/python/samba/tests/s3_net_join.py
new file mode 100644 (file)
index 0000000..dd691e4
--- /dev/null
@@ -0,0 +1,80 @@
+# Unix SMB/CIFS implementation.
+#
+# Copyright (C) David Mulder <dmulder@samba.org> 2020
+#
+# 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/>.
+#
+
+"""
+Confirm that net_s3.join_member works
+"""
+
+import samba.tests
+import os
+from samba.net_s3 import Net as s3_Net
+from samba.credentials import DONT_USE_KERBEROS
+from samba.samba3 import param as s3param
+from samba import WERRORError
+
+
+def rm(rmdir):
+    for f in os.listdir(rmdir):
+        if os.path.isdir(os.path.join(rmdir, f)):
+            rm(os.path.join(rmdir, f))
+            os.rmdir(os.path.join(rmdir, f))
+        else:
+            os.unlink(os.path.join(rmdir, f))
+
+class NetS3JoinTests(samba.tests.TestCaseInTempDir):
+
+    def setUp(self):
+        super(NetS3JoinTests, self).setUp()
+        self.realm = os.environ["REALM"]
+        self.domain = os.environ["DOMAIN"]
+        self.server = os.environ["SERVER"]
+        self.lp = self.get_loadparm()
+
+    def tearDown(self):
+        super(NetS3JoinTests, self).tearDown()
+
+    def test_net_join(self):
+        netbios_name = "NetJoinTest"
+        machinepass  = "abcdefghij"
+        creds = self.insta_creds(template=self.get_credentials(),
+                                 kerberos_state=DONT_USE_KERBEROS)
+        s3_lp = s3param.get_context()
+        s3_lp.load(self.lp.configfile)
+
+        s3_lp.set('realm', self.realm)
+        s3_lp.set('workgroup', self.domain)
+        s3_lp.set("private dir", self.tempdir)
+        s3_lp.set("lock dir", self.tempdir)
+        s3_lp.set("state directory", self.tempdir)
+        s3_lp.set('server role', 'member server')
+        net = s3_Net(creds, s3_lp, server=self.server)
+
+        try:
+            (domain_sid, domain_name) = net.join_member(netbios_name,
+                                                        machinepass=machinepass)
+        except WERRORError as e:
+            self.fail('Join failed: %s' % e.args[1])
+            raise
+
+        try:
+            ret = net.leave()
+        except WERRORError as e:
+            self.fail('Leave failed: %s' % e.args[1])
+            raise
+        self.assertTrue(ret, 'Leave failed!')
+        rm(self.tempdir)
index 3bfa0b3bca83a873b2a62499abf415aca017a2d6..fa0f004342420cd2ed7a619a33167428178ee8ab 100755 (executable)
@@ -897,6 +897,9 @@ planoldpythontestsuite("ad_dc_smb1",
 planoldpythontestsuite("ad_dc",
                        "samba.tests.net_join",
                        extra_args=['-U"$USERNAME%$PASSWORD"'])
+planoldpythontestsuite("ad_dc",
+                       "samba.tests.s3_net_join",
+                       extra_args=['-U"$USERNAME%$PASSWORD"'])
 planoldpythontestsuite("ad_dc",
                        "samba.tests.segfault",
                        extra_args=['-U"$USERNAME%$PASSWORD"'])