testprogs:blackbox: create temporary files under $PREFIX/SELFTEST_TMPDIR
[bbaumbach/samba-autobuild/.git] / testprogs / blackbox / test_pdbtest.sh
1 #!/bin/sh
2 # Blackbox tests for pdbtest
3 # Copyright (C) 2006-2007 Jelmer Vernooij <jelmer@samba.org>
4 # Copyright (C) 2006-2012 Andrew Bartlett <abartlet@samba.org>
5
6 if [ $# -lt 2 ]; then
7 cat <<EOF
8 Usage: test_pdbtest.sh SERVER PREFIX USER SMBCLIENT SMB_CONF
9 EOF
10 exit 1;
11 fi
12
13 SERVER=$1
14 PREFIX=$2
15 USER=$3
16 smbclient=$4
17 SMB_CONF=$5
18 shift 5
19 failed=0
20
21 samba4bindir="$BINDIR"
22 pdbtest="$samba4bindir/pdbtest"
23 pdbedit="$samba4bindir/pdbedit"
24 net="$samba4bindir/net"
25 smbpasswd="$samba4bindir/smbpasswd"
26 texpect="$samba4bindir/texpect"
27 unc="//$SERVER/tmp"
28
29 . `dirname $0`/subunit.sh
30 . `dirname $0`/common_test_fns.inc
31
32 UID_WRAPPER_ROOT=1
33 export UID_WRAPPER_ROOT
34
35 test_smbpasswd()
36 {
37         user=$1
38         newpass=$2
39
40         echo "set password with smbpasswd"
41         tmpfile=$PREFIX/smbpasswd_change_password_script
42         cat > $tmpfile <<EOF
43 expect New SMB password:
44 send ${newpass}\n
45 expect Retype new SMB password:
46 send ${newpass}\n
47 EOF
48
49         cmd='UID_WRAPPER_INITIAL_RUID=0 UID_WRAPPER_INITIAL_EUID=0 $texpect $tmpfile $smbpasswd -L $user -c $SMB_CONF'
50         eval echo "$cmd"
51         out=$(eval $cmd)
52         ret=$?
53         rm -f $tmpfile
54
55         if [ $ret -ne 0 ]; then
56                 echo "Failed to change user password $user"
57                 return 1
58         fi
59 }
60
61 testit "pdbtest" $VALGRIND $BINDIR/pdbtest -u $USER $@ || failed=`expr $failed + 1`
62
63 NEWUSERPASS=testPaSS@01%
64
65 echo "set password with pdbedit"
66 cat > $PREFIX/tmpsmbpasswdscript <<EOF
67 expect new password:
68 send ${NEWUSERPASS}\n
69 expect retype new password:
70 send ${NEWUSERPASS}\n
71 EOF
72
73 testit "create user with pdbedit" $texpect $PREFIX/tmpsmbpasswdscript $VALGRIND $pdbedit -s $SMB_CONF -a $USER --account-desc="pdbedit-test-user" $@ || failed=`expr $failed + 1`
74 USERPASS=$NEWUSERPASS
75
76 test_smbclient "Test login with user (ntlm)" 'ls' "$unc"  -U$USER%$NEWUSERPASS $@ || failed=`expr $failed + 1`
77
78 testit "modify user"  $VALGRIND $pdbedit -s $SMB_CONF --modify $USER --drive="D:" $@ || failed=`expr $failed + 1`
79
80 test_smbclient "Test login with user (ntlm)" 'ls' "$unc"  -U$USER%$NEWUSERPASS $@|| failed=`expr $failed + 1`
81
82 NEWUSERPASS=testPaSS@02%
83
84 testit "set user password with smbpasswd" \
85         test_smbpasswd $USER $NEWUSERPASS \
86         || failed=$(expr $failed + 1)
87
88 USERPASS=$NEWUSERPASS
89
90 test_smbclient "Test login with user (ntlm)" 'ls' "$unc"  -U$USER%$NEWUSERPASS $@|| failed=`expr $failed + 1`
91
92 testit "modify user - disabled"  $VALGRIND $net sam set disabled $USER yes $@ || failed=`expr $failed + 1`
93
94 testit_expect_failure  "Test login with disabled suer" $VALGRIND $smbclient //$SERVER/tmp -c 'ls' -U$USER@%$USERPASS && failed=`expr $failed + 1`
95
96 testit "modify user - enabled"  $VALGRIND $net sam set disabled $USER no $@ || failed=`expr $failed + 1`
97
98 test_smbclient "Test login with re-enabled user (ntlm)" 'ls' "$unc"  -U$USER%$NEWUSERPASS || failed=`expr $failed + 1`
99
100 testit "modify user - must change password now"  $VALGRIND $net sam set pwdmustchangenow $USER yes $@ || failed=`expr $failed + 1`
101
102 testit_expect_failure  "Test login with expired password" $VALGRIND $smbclient //$SERVER/tmp -c 'ls' -U$USER@%$USERPASS && failed=`expr $failed + 1`
103
104 testit "modify user - disable password expiry"  $VALGRIND $net sam set pwnoexp $USER yes $@ || failed=`expr $failed + 1`
105
106 test_smbclient "Test login with no expiry (ntlm)" 'ls' "$unc" -U$USER%$NEWUSERPASS || failed=`expr $failed + 1`
107
108 NEWUSERPASS=testPaSS@03%
109 NEWUSERHASH=062519096c45739c1938800f80906731
110
111 testit "Set user password with password hash" $VALGRIND $pdbedit -s $SMB_CONF -u $USER --set-nt-hash $NEWUSERHASH $@ || failed=`expr $failed + 1`
112
113 test_smbclient "Test login with new password (from hash)" 'ls' "$unc"  -U$USER%$NEWUSERPASS || failed=`expr $failed + 1`
114
115 testit "del user"  $VALGRIND $pdbedit -s $SMB_CONF -x $USER $@ || failed=`expr $failed + 1`
116
117 rm $PREFIX/tmpsmbpasswdscript
118
119 exit $failed