summaryrefslogtreecommitdiff
path: root/source3/script/tests/test_smbstatus.sh
blob: b29ba15c377b6974196a88195b8dd2385972e819 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
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