1#!/bin/sh 2 3# this runs the file serving tests that are expected to pass with samba3 4 5if [ $# -lt 4 ]; then 6cat <<EOF 7Usage: test_smbclient_s3.sh SERVER SERVER_IP USERNAME PASSWORD 8EOF 9exit 1; 10fi 11 12SERVER="$1" 13SERVER_IP="$2" 14USERNAME="$3" 15PASSWORD="$4" 16SMBCLIENT="$VALGRIND ${SMBCLIENT:-$BINDIR/smbclient} $CONFIGURATION" 17shift 4 18ADDARGS="$*" 19 20test x"$TEST_FUNCTIONS_SH" != x"INCLUDED" && { 21incdir=`dirname $0` 22. $incdir/test_functions.sh 23} 24 25failed=0 26 27# Test that a noninteractive smbclient does not prompt 28test_noninteractive_no_prompt() 29{ 30 prompt="smb" 31 32 cmd='echo du | $SMBCLIENT $CONFIGURATION "$@" -U$USERNAME%$PASSWORD //$SERVER/tmp -I $SERVER_IP $ADDARGS 2>&1' 33 eval echo "$cmd" 34 out=`eval $cmd` 35 36 if [ $? != 0 ] ; then 37 echo "$out" 38 echo "command failed" 39 false 40 return 41 fi 42 43 echo "$out" | grep $prompt >/dev/null 2>&1 44 45 if [ $? = 0 ] ; then 46 # got a prompt .. fail 47 echo matched interactive prompt in non-interactive mode 48 false 49 else 50 true 51 fi 52} 53 54# Test that an interactive smbclient prompts to stdout 55test_interactive_prompt_stdout() 56{ 57 prompt="smb" 58 tmpfile=/tmp/smbclient.in.$$ 59 60 cat > $tmpfile <<EOF 61du 62quit 63EOF 64 65 cmd='CLI_FORCE_INTERACTIVE=yes $SMBCLIENT $CONFIGURATION "$@" -U$USERNAME%$PASSWORD //$SERVER/tmp -I $SERVER_IP $ADDARGS < $tmpfile 2>&1' 66 eval echo "$cmd" 67 out=`eval $cmd` 68 ret=$? 69 rm -f $tmpfile 70 71 if [ $ret != 0 ] ; then 72 echo "$out" 73 echo "command failed" 74 false 75 return 76 fi 77 78 echo "$out" | grep $prompt >/dev/null 2>&1 79 80 if [ $? = 0 ] ; then 81 # got a prompt .. succeed 82 true 83 else 84 echo failed to match interactive prompt on stdout 85 false 86 fi 87} 88 89# Test creating a bad symlink and deleting it. 90test_bad_symlink() 91{ 92 prompt="posix_unlink deleted file /newname" 93 tmpfile=/tmp/smbclient.in.$$ 94 95 cat > $tmpfile <<EOF 96posix 97posix_unlink newname 98symlink badname newname 99posix_unlink newname 100quit 101EOF 102 103 cmd='CLI_FORCE_INTERACTIVE=yes $SMBCLIENT $CONFIGURATION "$@" -U$USERNAME%$PASSWORD //$SERVER/tmp -I $SERVER_IP $ADDARGS < $tmpfile 2>&1' 104 eval echo "$cmd" 105 out=`eval $cmd` 106 ret=$? 107 rm -f $tmpfile 108 109 if [ $ret != 0 ] ; then 110 echo "$out" 111 echo "failed create then delete bad symlink with error $ret" 112 false 113 return 114 fi 115 116 echo "$out" | grep "$prompt" >/dev/null 2>&1 117 118 ret=$? 119 if [ $ret = 0 ] ; then 120 # got the correct prompt .. succeed 121 true 122 else 123 echo "$out" 124 echo "failed create then delete bad symlink - grep failed with $ret" 125 false 126 fi 127} 128 129 130testit "smbclient -L $SERVER_IP" $SMBCLIENT $CONFIGURATION -L $SERVER_IP -N -p 139 || failed=`expr $failed + 1` 131testit "smbclient -L $SERVER -I $SERVER_IP" $SMBCLIENT $CONFIGURATION -L $SERVER -I $SERVER_IP -N -p 139 || failed=`expr $failed + 1` 132 133testit "noninteractive smbclient does not prompt" \ 134 test_noninteractive_no_prompt || \ 135 failed=`expr $failed + 1` 136 137testit "noninteractive smbclient -l does not prompt" \ 138 test_noninteractive_no_prompt -l /tmp || \ 139 failed=`expr $failed + 1` 140 141testit "interactive smbclient prompts on stdout" \ 142 test_interactive_prompt_stdout || \ 143 failed=`expr $failed + 1` 144 145testit "interactive smbclient -l prompts on stdout" \ 146 test_interactive_prompt_stdout -l /tmp || \ 147 failed=`expr $failed + 1` 148 149testit "creating a bad symlink and deleting it" \ 150 test_bad_symlink || \ 151 failed=`expr $failed + 1` 152 153testok $0 $failed 154