Add tests for various s3 auth modes
authorAndrew Bartlett <abartlet@samba.org>
Fri, 18 Feb 2011 07:52:00 +0000 (18:52 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 22 Feb 2011 03:50:14 +0000 (14:50 +1100)
selftest/target/Samba3.pm
source3/script/tests/test_posix_s3.sh
source3/script/tests/test_smbclient_auth.sh [new file with mode: 0755]
source3/script/tests/test_smbclient_s3.sh
source3/selftest/tests.sh

index a0a13f9c72682c5c96be77d47cbe2bf1566f9e40..06f070d65d0b67fa3d336f4347aebe92774f7b00 100644 (file)
@@ -98,6 +98,8 @@ sub setup_env($$$)
        
        if ($envname eq "dc") {
                return $self->setup_dc("$path/dc");
+       } elsif ($envname eq "secshare") {
+               return $self->setup_secshare("$path/secshare");
        } elsif ($envname eq "member") {
                if (not defined($self->{vars}->{dc})) {
                        $self->setup_dc("$path/dc");
@@ -178,6 +180,34 @@ sub setup_member($$$)
        return $ret;
 }
 
+sub setup_secshare($$)
+{
+       my ($self, $path) = @_;
+
+       print "PROVISIONING server with security=share...";
+
+       my $secshare_options = "
+       security = share
+       lanman auth = yes
+";
+
+       my $vars = $self->provision($path,
+                                   "LOCALSHARE4",
+                                   4,
+                                   "local4pass",
+                                   $secshare_options);
+
+       $self->check_or_start($vars,
+                             ($ENV{SMBD_MAXTIME} or 2700),
+                              "yes", "no", "yes");
+
+       $self->wait_for_start($vars);
+
+       $self->{vars}->{secshare} = $vars;
+
+       return $vars;
+}
+
 sub stop_sig_term($$) {
        my ($self, $pid) = @_;
        kill("USR1", $pid) or kill("ALRM", $pid) or warn("Unable to kill $pid: $!");
@@ -572,6 +602,21 @@ sub provision($$$$$$)
        print CONF "
 [tmp]
        path = $shrdir
+[tmpguest]
+       path = $shrdir
+        guest ok = yes
+[guestonly]
+       path = $shrdir
+        guest only = yes
+        guest ok = yes
+[forceuser]
+       path = $shrdir
+        force user = $unix_name
+        guest ok = yes
+[forcegroup]
+       path = $shrdir
+        force group = nogroup
+        guest ok = yes
 [ro-tmp]
        path = $ro_shrdir
        guest ok = yes
index 904f9f1f0939d5785b904969d0467547554df1d2..69c71fd2d451b76840794cb833141fa6e8b46779 100755 (executable)
@@ -60,10 +60,7 @@ winbind="winbind.struct winbind.wbclient"
 
 rap="rap.basic rap.rpc rap.printing rap.sam"
 
-# note: to enable the unix-whoami test, we need to change the default share
-# config to allow guest access. i'm not sure whether this would break other
-# tests, so leaving it alone for now -- jpeach
-unix="unix.info2"
+unix="unix.info2 unix.whoami"
 
 tests="$base $raw $smb2 $rpc $unix $local $winbind $rap"
 
@@ -83,6 +80,9 @@ for t in $tests; do
     name="$t"
     if [ "$t" = "base.delaywrite" ]; then
            testit "$name" $VALGRIND $SMBTORTURE4 $TORTURE4_OPTIONS --maximum-runtime=900 $ADDARGS $unc -U"$username"%"$password" $t || failed=`expr $failed + 1`
+    elif [ "$t" = "unix.whoami" ]; then
+           #"Testing with guest-enabled share"
+           testit "$name" $VALGRIND $SMBTORTURE4 $TORTURE4_OPTIONS $ADDARGS "$unc"guest -U"$username"%"$password" $t || failed=`expr $failed + 1`
     else
            testit "$name" $VALGRIND $SMBTORTURE4 $TORTURE4_OPTIONS $ADDARGS $unc -U"$username"%"$password" $t || failed=`expr $failed + 1`
     fi
@@ -90,6 +90,10 @@ for t in $tests; do
            echo "Testing with case sensitive"
            testit "$name" $VALGRIND $SMBTORTURE4 $TORTURE4_OPTIONS $ADDARGS "$unc"case -U"$username"%"$password" $t || failed=`expr $failed + 1`
     fi
+    if [ "$t" = "unix.whoami" ]; then
+           echo "Testing with guest-enabled share"
+           testit "$name" $VALGRIND $SMBTORTURE4 $TORTURE4_OPTIONS $ADDARGS "$unc"guest -U"$username"%"$password" $t || failed=`expr $failed + 1`
+    fi
 done
 
 testok $0 $failed
diff --git a/source3/script/tests/test_smbclient_auth.sh b/source3/script/tests/test_smbclient_auth.sh
new file mode 100755 (executable)
index 0000000..dab914a
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+# this runs the file serving tests that are expected to pass with samba3 against shares with various options
+
+if [ $# -lt 5 ]; then
+cat <<EOF
+Usage: test_smbclient_s3.sh SERVER SERVER_IP USERNAME PASSWORD USERID LOCAL_PATH
+EOF
+exit 1;
+fi
+
+SERVER="$1"
+SERVER_IP="$2"
+USERNAME="$3"
+PASSWORD="$4"
+USERID="$5"
+SMBCLIENT="$VALGRIND ${SMBCLIENT:-$BINDIR/smbclient} $CONFIGURATION"
+WBINFO="$VALGRIND ${WBINFO:-$BINDIR/wbinfo}"
+shift 5
+ADDARGS="$*"
+
+test x"$TEST_FUNCTIONS_SH" != x"INCLUDED" && {
+incdir=`dirname $0`/../../../testprogs/blackbox
+. $incdir/subunit.sh
+}
+
+failed=0
+
+testit "smbclient //$SERVER/guestonly" $SMBCLIENT //$SERVER/guestonly $CONFIGURATION -U$USERNAME%$PASSWORD -I $SERVER_IP -N -p 139 -c quit|| failed=`expr $failed + 1`
+testit "smbclient //$SERVER/guestonly as anon" $SMBCLIENT //$SERVER/guestonly $CONFIGURATION -U% -I $SERVER_IP -N -p 139 -c quit|| failed=`expr $failed + 1`
+testit "smbclient //$SERVER/tmpguest" $SMBCLIENT //$SERVER/tmpguest $CONFIGURATION -U$USERNAME%$PASSWORD -I $SERVER_IP -N -p 139 -c quit|| failed=`expr $failed + 1`
+testit "smbclient //$SERVER/tmpguest as anon" $SMBCLIENT //$SERVER/tmpguest $CONFIGURATION -U% -I $SERVER_IP -N -p 139 -c quit|| failed=`expr $failed + 1`
+testit "smbclient //$SERVER/forceuser" $SMBCLIENT //$SERVER/forceuser $CONFIGURATION -U$USERNAME%$PASSWORD -I $SERVER_IP -N -p 139 -c quit|| failed=`expr $failed + 1`
+testit "smbclient //$SERVER/forceuser as anon" $SMBCLIENT //$SERVER/forceuser $CONFIGURATION -U% -I $SERVER_IP -N -p 139 -c quit|| failed=`expr $failed + 1`
+testit "smbclient //$SERVER/forcegroup" $SMBCLIENT //$SERVER/forcegroup $CONFIGURATION -U$USERNAME%$PASSWORD -I $SERVER_IP -N -p 139 -c quit|| failed=`expr $failed + 1`
+testit "smbclient //$SERVER/forcegroup as anon" $SMBCLIENT //$SERVER/forcegroup $CONFIGURATION -U% -I $SERVER_IP -N -p 139 -c quit|| failed=`expr $failed + 1`
+
+testok $0 $failed
index a7c07753ade29511bb48264e074913bab161c60b..075c6c548d5f7a0d92283299f88f3a60864951df 100755 (executable)
@@ -402,7 +402,7 @@ LOGDIR=$(mktemp -d --tmpdir=$PREFIX ${LOGDIR_PREFIX}_XXXX)
 
 
 testit "smbclient -L $SERVER_IP" $SMBCLIENT $CONFIGURATION -L $SERVER_IP -N -p 139 || failed=`expr $failed + 1`
-testit "smbclient -L $SERVER -I $SERVER_IP" $SMBCLIENT $CONFIGURATION -L $SERVER -I $SERVER_IP -N -p 139 || failed=`expr $failed + 1`
+testit "smbclient -L $SERVER -I $SERVER_IP" $SMBCLIENT $CONFIGURATION -L $SERVER -I $SERVER_IP -N -p 139 -c quit || failed=`expr $failed + 1`
 
 testit "noninteractive smbclient does not prompt" \
     test_noninteractive_no_prompt || \
index 092e75864f85f031080b59404df264d1fc207fba..14d5805e326a139c3eb45c29db73e5a491d6798a 100755 (executable)
@@ -137,6 +137,10 @@ plantest "blackbox.failure" dc:local LOCAL_PATH="$LOCAL_PATH" BINDIR="$BINDIR" S
 )
 
 # plain
+plantest "blackbox.smbclient_auth.plain" dc BINDIR="$BINDIR" script/tests/test_smbclient_auth.sh \$SERVER \$SERVER_IP \$USERNAME \$PASSWORD \$USERID
+plantest "blackbox.smbclient_auth.plain sec share" secshare BINDIR="$BINDIR" script/tests/test_smbclient_auth.sh \$SERVER \$SERVER_IP \$SERVER\\\\\$USERNAME \$PASSWORD \$USERID
+plantest "blackbox.smbclient_auth.plain member creds" member BINDIR="$BINDIR" script/tests/test_smbclient_auth.sh \$SERVER \$SERVER_IP \$SERVER\\\\\$USERNAME \$PASSWORD \$USERID
+
 plantest "blackbox.smbclient_s3.plain" dc BINDIR="$BINDIR" script/tests/test_smbclient_s3.sh \$SERVER \$SERVER_IP \$USERNAME \$PASSWORD \$USERID \$LOCAL_PATH
 plantest "blackbox.smbclient_s3.plain member creds" member BINDIR="$BINDIR" script/tests/test_smbclient_s3.sh \$SERVER \$SERVER_IP \$SERVER\\\\\$USERNAME \$PASSWORD \$USERID \$LOCAL_PATH
 #plantest "blackbox.smbclient_s3.plain domain creds" member BINDIR="$BINDIR" script/tests/test_smbclient_s3.sh \$SERVER \$SERVER_IP \$DOMAIN\\\\\$DC_USERNAME \$DC_PASSWORD \$USERID \$LOCAL_PATH