s3:tests: Add test for smbstatus and smbstatus --resolve_uids
authorAndreas Schneider <asn@samba.org>
Wed, 13 Mar 2019 11:00:27 +0000 (12:00 +0100)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 27 Mar 2019 14:33:35 +0000 (14:33 +0000)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13793

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Wed Mar 27 14:33:35 UTC 2019 on sn-devel-144

source3/script/tests/test_smbstatus.sh [new file with mode: 0755]
source3/selftest/tests.py

diff --git a/source3/script/tests/test_smbstatus.sh b/source3/script/tests/test_smbstatus.sh
new file mode 100755 (executable)
index 0000000..b29ba15
--- /dev/null
@@ -0,0 +1,155 @@
+#!/bin/sh
+
+# This runs smbstatus tests
+
+if [ $# -lt 12 ]; then
+    echo "Usage: test_smbstatus.sh SERVER SERVER_IP DOMAIN USERNAME PASSWORD USERID LOCAL_PATH PREFIX SMBCLIENT CONFIGURATION PROTOCOL"
+    exit 1
+fi
+
+SERVER="${1}"
+SERVER_IP="${2}"
+DOMAIN="${3}"
+USERNAME="${4}"
+PASSWORD="${5}"
+USERID="${6}"
+LOCAL_PATH="${7}"
+PREFIX="${8}"
+SMBCLIENT="${9}"
+SMBSTATUS="${10}"
+CONFIGURATION="${11}"
+PROTOCOL="${12}"
+
+shift 12
+
+RAWARGS="${CONFIGURATION} -m${PROTOCOL}"
+ADDARGS="${RAWARGS} $@"
+
+incdir=`dirname $0`/../../../testprogs/blackbox
+. $incdir/subunit.sh
+
+failed=0
+
+test_smbstatus()
+{
+    local cmdfile=$PREFIX/smbclient_commands
+    local tmpfile=$PREFIX/smclient_lock_file
+    local file=smclient_lock_file
+    local cmd=""
+    local ret=0
+    local userid=$(id -u $USERNAME)
+
+    cat > $tmpfile <<EOF
+What a Wurst!
+EOF
+    cat > $cmdfile <<EOF
+lcd $PREFIX_ABS
+put $file
+open $file
+!UID_WRAPPER_INITIAL_RUID=0 UID_WRAPPER_INITIAL_EUID=0 $SMBSTATUS
+close 1
+rm $file
+quit
+EOF
+
+    cmd="CLI_FORCE_INTERACTIVE=yes $SMBCLIENT -U$USERNAME%$PASSWORD //$SERVER/tmp -I $SERVER_IP $ADDARGS --quiet < $cmdfile 2>&1"
+    eval echo "$cmd"
+    out=$(eval $cmd)
+    ret=$?
+    rm -f $cmpfile
+    rm -f $tmpfile
+
+    if [ $ret -ne 0 ] ; then
+       echo "Failed to run smbclient with error $ret"
+       echo "$out"
+       false
+       return
+    fi
+
+    echo "$out" | grep -c 'NT_STATUS_'
+    ret=$?
+    if [ $ret -eq 0 ] ; then
+       echo "Failed: got an NT_STATUS error!"
+       echo "$out"
+       false
+       return
+    fi
+
+    echo "$out" | grep "$userid[ ]*DENY_NONE"
+    ret=$?
+    if [ $ret != 0 ] ; then
+        echo "Failed to find userid in smbstatus locked file output"
+        echo "$out"
+        false
+        return
+    fi
+
+    return 0
+}
+
+test_smbstatus_resolve_uids()
+{
+    local cmdfile=$PREFIX/smbclient_commands
+    local tmpfile=$PREFIX/smclient_lock_file
+    local file=smclient_lock_file
+    local cmd=""
+    local ret=0
+    local userid=$(id -u $USERNAME)
+
+    cat > $tmpfile <<EOF
+What a Wurst!
+EOF
+    cat > $cmdfile <<EOF
+lcd $PREFIX_ABS
+put $file
+open $file
+!UID_WRAPPER_INITIAL_RUID=0 UID_WRAPPER_INITIAL_EUID=0 $SMBSTATUS --resolve-uids
+close 1
+rm $file
+quit
+EOF
+
+    cmd="CLI_FORCE_INTERACTIVE=yes $SMBCLIENT -U$USERNAME%$PASSWORD //$SERVER/tmp -I $SERVER_IP $ADDARGS --quiet < $cmdfile 2>&1"
+    eval echo "$cmd"
+    out=$(eval $cmd)
+    ret=$?
+    rm -f $cmpfile
+    rm -f $tmpfile
+
+    if [ $ret -ne 0 ] ; then
+       echo "Failed to run smbclient with error $ret"
+       echo "$out"
+       false
+       return
+    fi
+
+    echo "$out" | grep -c 'NT_STATUS_'
+    ret=$?
+    if [ $ret -eq 0 ] ; then
+       echo "Failed: got an NT_STATUS error!"
+       echo "$out"
+       false
+       return
+    fi
+
+    echo "$out" | grep "$USERNAME[ ]*DENY_NONE"
+    ret=$?
+    if [ $ret != 0 ] ; then
+        echo "Failed to find userid in smbstatus locked file output"
+        echo "$out"
+        false
+        return
+    fi
+
+    return 0
+}
+
+testit "plain" \
+    test_smbstatus || \
+    failed=`expr $failed + 1`
+
+testit "resolve_uids" \
+    test_smbstatus || \
+    failed=`expr $failed + 1`
+
+testok $0 $failed
index f3fe90fa6ecb5e7e2be810b979db3dc7bda771cd..147e53da5580c8c705928a9bf9d7525eeece430e 100755 (executable)
@@ -30,6 +30,7 @@ from selftesthelpers import smbget, smbcacls, smbcquotas, ntlm_auth3
 from selftesthelpers import valgrindify, smbtorture4_testsuites
 from selftesthelpers import smbtorture4_options
 from selftesthelpers import smbcontrol
+from selftesthelpers import smbstatus
 smbtorture4_options.extend([
     '--option=torture:sharedelay=100000',
    '--option=torture:writetimeupdatedelay=500000',
@@ -361,7 +362,10 @@ for env in ["fileserver"]:
                    '-d', '$PREFIX', '-b', smbclient3,
                    '--subunit', '--', configuration, '-mSMB3'])
 
-plantestsuite("samba3.blackbox.net_usershare", "fileserver:local", [os.path.join(samba3srcdir, "script/tests/test_net_usershare.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbclient3])
+for env in ["fileserver:local"]:
+    plantestsuite("samba3.blackbox.net_usershare", env, [os.path.join(samba3srcdir, "script/tests/test_net_usershare.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbclient3])
+
+    plantestsuite("samba3.blackbox.smbstatus", env, [os.path.join(samba3srcdir, "script/tests/test_smbstatus.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, smbstatus, configuration, "SMB3"])
 
 # TODO encrypted against member, with member creds, and with DC creds
 plantestsuite("samba3.blackbox.net.misc", "nt4_dc:local",