selftest: add samba3.blackbox.registry_share
authorStefan Metzmacher <metze@samba.org>
Wed, 28 Dec 2022 15:18:40 +0000 (16:18 +0100)
committerJule Anger <janger@samba.org>
Fri, 13 Jan 2023 09:27:09 +0000 (09:27 +0000)
This demonstrates the regression introduced by
f03665bb7e8ea97699062630f2aa1bac4c5dfc7f, where
registry shares are no longer listed.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15243
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15266

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Walker <awalker@ixsystems.com>
(cherry picked from commit a00c7395fbc7974a61a70ae54ea6ae6349933de2)

selftest/knownfail.d/registry_share [new file with mode: 0644]
selftest/target/Samba3.pm
source3/script/tests/test_registry_share.sh [new file with mode: 0755]
source3/selftest/tests.py

diff --git a/selftest/knownfail.d/registry_share b/selftest/knownfail.d/registry_share
new file mode 100644 (file)
index 0000000..4adbf09
--- /dev/null
@@ -0,0 +1 @@
+^samba3.blackbox.registry_share.Test.for.share.enum.with.registry.share.clusteredmember
index 0b720a68927bacfe7c13389680aef3bc32945565..cb17408e39876dbedb396944e44d0373dfef3537 100755 (executable)
@@ -529,6 +529,36 @@ sub setup_clusteredmember
                        return undef;
                }
 
+               my $registry_share_template = "$node_ret->{SERVERCONFFILE}.registry_share_template";
+               unless (open(REGISTRYCONF, ">$registry_share_template")) {
+                       warn("Unable to open $registry_share_template");
+                       teardown_env($self, $node_ret);
+                       teardown_env($self, $ctdb_data);
+                       return undef;
+               }
+
+               print REGISTRYCONF "
+[registry_share]
+       copy = tmp
+       comment = smb username is [%U]
+";
+
+               close(REGISTRYCONF);
+
+               my $net = Samba::bindir_path($self, "net");
+               my $cmd = "";
+
+               $cmd .= "UID_WRAPPER_ROOT=1 ";
+               $cmd .= "$net conf import $node_ret->{CONFIGURATION} ${registry_share_template}";
+
+               my $net_ret = system($cmd);
+               if ($net_ret != 0) {
+                       warn("net conf import failed: $net_ret\n$cmd");
+                       teardown_env($self, $node_ret);
+                       teardown_env($self, $ctdb_data);
+                       return undef;
+               }
+
                my $nmblookup = Samba::bindir_path($self, "nmblookup");
                do {
                        print "Waiting for the LOGON SERVER registration ...\n";
diff --git a/source3/script/tests/test_registry_share.sh b/source3/script/tests/test_registry_share.sh
new file mode 100755 (executable)
index 0000000..22e9f73
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/sh
+# Blackbox tests for registry shares
+#
+
+if [ $# -lt 3 ]; then
+       cat <<EOF
+Usage: test_registry_share.sh SERVER USERNAME PASSWORD
+EOF
+       exit 1
+fi
+
+SERVER=$1
+USERNAME=$2
+PASSWORD=$3
+shift 3
+failed=0
+
+samba_bindir="$BINDIR"
+samba_srcdir="$SRCDIR"
+smbclient="$samba_bindir/smbclient"
+rpcclient="$samba_bindir/rpcclient"
+
+. $samba_srcdir/testprogs/blackbox/subunit.sh
+. $samba_srcdir/testprogs/blackbox/common_test_fns.inc
+
+test_smbclient \
+       "Test access to registry share [${USERNAME}]" \
+       "ls" "//${SERVER}/registry_share" "-U$USERNAME%$PASSWORD" ||
+       failed=$((failed + 1))
+
+testit_grep_count \
+       "Test for share enum with registry share" \
+       "netname: registry_share" \
+       1 \
+       ${rpcclient} "ncacn_np:${SERVER}" "-U$USERNAME%$PASSWORD" \
+       -c netshareenum ||
+       failed=$((failed + 1))
+
+testok "$0" "$failed"
index c9384403ba5d12e242f16289a3d60a19884b6741..31a80b82e877501e6f14efa0bb23c734b77b42c5 100755 (executable)
@@ -1306,6 +1306,11 @@ plantestsuite("samba3.blackbox.smbXsrv_client_dead_rec", "fileserver:local",
                '$SERVER_IP',
                "tmp"])
 
+plantestsuite("samba3.blackbox.registry_share", "clusteredmember",
+              [os.path.join(samba3srcdir,
+                            "script/tests/test_registry_share.sh"),
+               "$SERVER", '$DC_USERNAME', "$DC_PASSWORD"])
+
 env = 'fileserver'
 plantestsuite("samba3.blackbox.virus_scanner", "%s:local" % (env),
               [os.path.join(samba3srcdir,