blackbox: Add many more tests for wbinfo
[samba.git] / testprogs / blackbox / test_wbinfo.sh
1 #!/bin/sh
2 # Blackbox test for wbinfo
3 if [ $# -lt 4 ]; then
4 cat <<EOF
5 Usage: test_wbinfo.sh DOMAIN USERNAME PASSWORD TARGET
6 EOF
7 exit 1;
8 fi
9
10 DOMAIN=$1
11 USERNAME=$2
12 PASSWORD=$3
13 TARGET=$4
14 shift 4
15
16 failed=0
17 samba4bindir=`dirname $0`/../../source/bin
18 wbinfo=$samba4bindir/wbinfo
19
20 testit() {
21         name="$1"
22         shift
23         cmdline="$*"
24         echo "test: $name"
25         $cmdline
26         status=$?
27         if [ x$status = x0 ]; then
28                 echo "success: $name"
29         else
30                 echo "failure: $name"
31         fi
32         return $status
33 }
34
35 testfail() {
36         name="$1"
37         shift
38         cmdline="$*"
39         echo "test: $name"
40         $cmdline
41         status=$?
42         if [ x$status = x0 ]; then
43                 echo "failure: $name"
44         else
45                 echo "success: $name"
46         fi
47         return $status
48 }
49
50 knownfail() {
51         name="$1"
52         shift
53         cmdline="$*"
54         echo "test: $name"
55         $cmdline
56         status=$?
57         if [ x$status = x0 ]; then
58                 echo "failure: $name [unexpected success]"
59         else
60                 echo "knownfail: $name"
61         fi
62         return $status
63 }
64
65
66 testit "wbinfo -u against $TARGET" $wbinfo -u || failed=`expr $failed + 1`
67 # Does not work yet
68 knownfail "wbinfo -g against $TARGET" $wbinfo -g || failed=`expr $failed + 1`
69 knownfail "wbinfo -N against $TARGET" $wbinfo -N || failed=`expr $failed + 1`
70 knownfail "wbinfo -I against $TARGET" $wbinfo -I || failed=`expr $failed + 1`
71 testit "wbinfo -n against $TARGET" $wbinfo -n "$DOMAIN/$USERNAME" || failed=`expr $failed + 1`
72 admin_sid=`$wbinfo -n "$DOMAIN/$USERNAME" | cut -d " " -f1`
73 echo "$DOMAIN/$USERNAME resolved to $admin_sid"
74
75 testit "wbinfo -s $admin_sid against $TARGET" $wbinfo -s $admin_sid || failed=`expr $failed + 1`
76 admin_name=`wbinfo -s $admin_sid | cut -d " " -f1| tr a-z A-Z`
77 echo "$admin_sid resolved to $admin_name"
78
79 tested_name=`echo $DOMAIN/$USERNAME | tr a-z A-Z`
80
81 echo "test: wbinfo -s check for sane mapping"
82 if test x$admin_name != x$tested_name; then
83         echo "$admin_name does not match $tested_name"
84         echo "failure: wbinfo -s check for sane mapping"
85         failed=`expr $failed + 1`
86 else
87         echo "success: wbinfo -s check for sane mapping"
88 fi
89
90 testit "wbinfo -n on the returned name against $TARGET" $wbinfo -n $admin_name || failed=`expr $failed + 1`
91 test_sid=`$wbinfo -n $tested_name | cut -d " " -f1`
92
93 echo "test: wbinfo -n check for sane mapping"
94 if test x$admin_sid != x$test_sid; then
95         echo "$admin_sid does not match $test_sid"
96         echo "failure: wbinfo -n check for sane mapping"
97         failed=`expr $failed + 1`
98 else
99         echo "success: wbinfo -n check for sane mapping"
100 fi
101
102 testit "wbinfo -U against $TARGET" $wbinfo -U 30000 || failed=`expr $failed + 1`
103
104 echo "test: wbinfo -U check for sane mapping"
105 sid_for_30000=`$wbinfo -U 30000`
106 if test x$sid_for_30000 != "xS-1-22-1-30000"; then
107         echo "uid 30000 mapped to $sid_for_30000, not S-1-22-1-30000"
108         echo "failure: wbinfo -U check for sane mapping"
109         failed=`expr $failed + 1`
110 else
111         echo "success: wbinfo -U check for sane mapping"
112 fi
113
114 admin_uid=`wbinfo -U $admin_sid`
115
116 testit "wbinfo -G against $TARGET" $wbinfo -G 30000 || failed=`expr $failed + 1`
117
118 echo "test: wbinfo -G check for sane mapping"
119 sid_for_30000=`$wbinfo -G 30000`
120 if test x$sid_for_30000 != "xS-1-22-2-30000"; then
121         echo "gid 30000 mapped to $sid_for_30000, not S-1-22-2-30000"
122         echo "failure: wbinfo -G check for sane mapping"
123         failed=`expr $failed + 1`
124 else
125         echo "success: wbinfo -G check for sane mapping"
126 fi
127
128 testit "wbinfo -S against $TARGET" $wbinfo -S "S-1-22-1-30000" || failed=`expr $failed + 1`
129
130 echo "test: wbinfo -S check for sane mapping"
131 uid_for_sid=`$wbinfo -S S-1-22-1-30000`
132 if test 0$uid_for_sid -ne 30000; then
133         echo "S-1-22-1-30000 mapped to $uid_for_sid, not 30000"
134         echo "failure: wbinfo -S check for sane mapping"
135         failed=`expr $failed + 1`
136 else
137         echo "success: wbinfo -S check for sane mapping"
138 fi
139
140 testfail "wbinfo -S against $TARGET using invalid SID" $wbinfo -S "S-1-22-2-30000" && failed=`expr $failed + 1`
141
142 testit "wbinfo -Y against $TARGET" $wbinfo -Y "S-1-22-2-30000" || failed=`expr $failed + 1`
143
144 echo "test: wbinfo -Y check for sane mapping"
145 gid_for_sid=`$wbinfo -Y S-1-22-2-30000`
146 if test 0$gid_for_sid -ne 30000; then
147         echo "S-1-22-2-30000 mapped to $gid_for_sid, not 30000"
148         echo "failure: wbinfo -Y check for sane mapping"
149         failed=`expr $failed + 1`
150 else
151         echo "success: wbinfo -Y check for sane mapping"
152 fi
153
154 testfail "wbinfo -Y against $TARGET using invalid SID" $wbinfo -Y "S-1-22-1-30000" && failed=`expr $failed + 1`
155
156 testit "wbinfo -t against $TARGET" $wbinfo -t || failed=`expr $failed + 1`
157
158 # this does not work
159 knownfail "wbinfo -m against $TARGET" $wbinfo -m || failed=`expr $failed + 1`
160 knownfail "wbinfo --all-domains against $TARGET" $wbinfo --all-domains || failed=`expr $failed + 1`
161 testit "wbinfo --own-domain against $TARGET" $wbinfo --own-domain || failed=`expr $failed + 1`
162
163 echo "test: wbinfo --own-domain against $TARGET check output"
164 own_domain=`wbinfo --own-domain`
165 if test x$own_domain = x$DOMAIN; then
166         echo "success: wbinfo --own-domain against $TARGET check output"
167 else
168         echo "Own domain reported as $own_domain instead of $DOMAIN"
169         echo "failure: wbinfo --own-domain against $TARGET check output"
170 fi
171
172 # this does not work
173 knownfail "wbinfo --sequence against $TARGET" $wbinfo --sequence
174 knownfail "wbinfo -D against $TARGET" $wbinfo -D $DOMAIN || failed=`expr $failed + 1`
175
176 testit "wbinfo -i against $TARGET" $wbinfo -i "$DOMAIN/$USERNAME" || failed=`expr $failed + 1`
177
178 # this does not work
179 knownfail "wbinfo --uid-info against $TARGET" $wbinfo --uid-info $admin_sid
180 knownfail "wbinfo --group-info against $TARGET" $wbinfo --group-info "S-1-22-2-0"
181 knownfail "wbinfo -r against $TARGET" $wbinfo "$DOMAIN/$USERNAME"
182
183 testit "wbinfo --user-domgroups against $TARGET" $wbinfo --user-domgroups $admin_sid || failed=`expr $failed + 1`
184
185 testit "wbinfo --user-sids against $TARGET" $wbinfo --user-sids $admin_sid || failed=`expr $failed + 1`
186
187 testit "wbinfo -a against $TARGET with domain creds" $wbinfo -a "$DOMAIN/$USERNAME"%"$PASSWORD" || failed=`expr $failed + 1`
188
189 # this does not work
190 knwonfail "wbinfo --getdcname against $TARGET" $wbinfo --getdcname=$DOMAIN
191
192 testit "wbinfo -p against $TARGET" $wbinfo -p || failed=`expr $failed + 1`
193
194 testit "wbinfo -K against $TARGET with domain creds" $wbinfo -K "$DOMAIN/$USERNAME"%"$PASSWORD" || failed=`expr $failed + 1`
195
196 testit "wbinfo --separator against $TARGET" $wbinfo --separator || failed=`expr $failed + 1`
197
198 exit $failed
199