source: vendor/current/source3/script/tests/test_net_registry.sh@ 740

Last change on this file since 740 was 740, checked in by Silvan Scherrer, 12 years ago

Samba Server: update vendor to 3.6.0

File size: 8.3 KB
Line 
1#!/bin/sh
2#
3# Blackbox tests for the "net registry" and "net rpc registry" commands.
4#
5# Copyright (C) 2010-2011 Michael Adam <obnox@samba.org>
6# Copyright (C) 2010 Gregor Beck <gbeck@sernet.de>
7#
8# rpc tests are chose by specifying "rpc" as commandline parameter.
9
10if [ $# -lt 3 ]; then
11cat <<EOF
12Usage: test_net_registry.sh SCRIPTDIR SERVERCONFFILE CONFIGURATION RPC
13EOF
14exit 1;
15fi
16
17SCRIPTDIR="$1"
18SERVERCONFFILE="$2"
19CONFIGURATION="$3"
20RPC="$4"
21
22NET="$VALGRIND ${NET:-$BINDIR/net} $CONFIGURATION"
23
24if test "x${RPC}" = "xrpc" ; then
25 NETREG="${NET} -U${USERNAME}%${PASSWORD} -I ${SERVER_IP} rpc registry"
26else
27 NETREG="${NET} registry"
28fi
29
30test x"$TEST_FUNCTIONS_SH" != x"INCLUDED" && {
31incdir=`dirname $0`/../../../testprogs/blackbox
32. $incdir/subunit.sh
33}
34
35failed=0
36
37test_enumerate()
38{
39 KEY="$1"
40
41 ${NETREG} enumerate ${KEY}
42}
43
44test_getsd()
45{
46 KEY="$1"
47
48 ${NETREG} getsd ${KEY}
49}
50
51test_enumerate_nonexisting()
52{
53 KEY="$1"
54 ${NETREG} enumerate ${KEY}
55
56 if test "x$?" = "x0" ; then
57 echo "ERROR: enumerate succeeded with key '${KEY}'"
58 false
59 else
60 true
61 fi
62}
63
64test_enumerate_no_key()
65{
66 ${NETREG} enumerate
67 if test "x$?" = "x0" ; then
68 echo "ERROR: enumerate succeeded without any key spcified"
69 false
70 else
71 true
72 fi
73}
74
75test_create_existing()
76{
77 KEY="HKLM"
78 EXPECTED="createkey opened existing ${KEY}"
79
80 OUTPUT=`${NETREG} createkey ${KEY}`
81 if test "x$?" = "x0" ; then
82 if test "$OUTPUT" = "$EXPECTED" ; then
83 true
84 else
85 echo "got '$OUTPUT', expected '$EXPECTED'"
86 false
87 fi
88 else
89 printf "%s\n" "$OUTPUT"
90 false
91 fi
92}
93
94test_createkey()
95{
96 KEY="$1"
97 BASEKEY=`dirname $KEY`
98 SUBKEY=`basename $KEY`
99
100 OUTPUT=`${NETREG} createkey ${KEY}`
101 if test "x$?" != "x0" ; then
102 echo "ERROR: createkey ${KEY} failed"
103 echo "output:"
104 printf "%s\n" "$OUTPUT"
105 false
106 return
107 fi
108
109 # check enumerate of basekey lists new key:
110 OUTPUT=`${NETREG} enumerate ${BASEKEY}`
111 if test "x$?" != "x0" ; then
112 echo "ERROR: failed to enumerate key '${BASEKEY}'"
113 echo "output:"
114 printf "%s\n" "$OUTPUT"
115 false
116 return
117 fi
118
119 EXPECTED="Keyname = ${SUBKEY}"
120 printf "%s\n" "$OUTPUT" | grep '^Keyname' | grep ${SUBKEY}
121 if test "x$?" != "x0" ; then
122 echo "ERROR: did not find expexted '$EXPECTED' in output"
123 echo "output:"
124 printf "%s\n" "$OUTPUT"
125 false
126 fi
127
128 # check enumerate of new key works:
129 ${NETREG} enumerate ${KEY}
130}
131
132test_deletekey()
133{
134 KEY="$1"
135 BASEKEY=`dirname ${KEY}`
136 SUBKEY=`basename ${KEY}`
137
138 OUTPUT=`test_createkey "${KEY}"`
139 if test "x$?" != "x0" ; then
140 printf "%s\n" "${OUTPUT}"
141 false
142 return
143 fi
144
145 OUTPUT=`${NETREG} deletekey ${KEY}`
146 if test "x$?" != "x0" ; then
147 printf "%s\n" "${OUTPUT}"
148 false
149 return
150 fi
151
152 # check enumerate of basekey does not show key anymore:
153 OUTPUT=`${NETREG} enumerate ${BASEKEY}`
154 if test "x$?" != "x0" ; then
155 printf "%s\n" "$OUTPUT"
156 false
157 return
158 fi
159
160 UNEXPECTED="Keyname = ${SUBKEY}"
161 printf "%s\n" "$OUTPUT" | grep '^Keyname' | grep ${SUBKEY}
162 if test "x$?" = "x0" ; then
163 echo "ERROR: found '$UNEXPECTED' after delete in output"
164 echo "output:"
165 printf "%s\n" "$OUTPUT"
166 false
167 fi
168
169 # check enumerate of key itself does not work anymore:
170 ${NETREG} enumerate ${KEY}
171 if test "x$?" = "x0" ; then
172 echo "ERROR: 'enumerate ${KEY}' works after 'deletekey ${KEY}'"
173 false
174 else
175 true
176 fi
177}
178
179test_deletekey_nonexisting()
180{
181 KEY="$1"
182
183 OUTPUT=`test_deletekey "${KEY}"`
184 if test "x$?" != "x0" ; then
185 printf "%s\n" "${OUTPUT}"
186 false
187 return
188 fi
189
190 ${NETREG} deletekey "${KEY}"
191 if test "x$?" = "x0" ; then
192 echo "ERROR: delete after delete succeeded for key '${KEY}'"
193 false
194 fi
195}
196
197test_createkey_with_subkey()
198{
199 KEY="$1"
200 KEY2=`dirname ${KEY}`
201 SUBKEYNAME2=`basename ${KEY}`
202 BASENAME=`dirname ${KEY2}`
203 SUBKEYNAME1=`basename ${KEY2}`
204
205 OUTPUT=`${NETREG} createkey ${KEY}`
206 if test "x$?" != "x0" ; then
207 echo "ERROR: createkey ${KEY} failed"
208 printf "%s\n" "${OUTPUT}"
209 false
210 return
211 fi
212
213 # check we can enumerate to level key
214 OUTPUT=`${NETREG} enumerate ${KEY}`
215 if test "x$?" != "x0" ; then
216 echo "ERROR: failed to enumerate '${KEY}' after creation"
217 printf "%s\n" "${OUTPUT}"
218 false
219 return
220 fi
221
222 # clear:
223 ${NETREG} deletekey ${KEY} && ${NETREG} deletekey ${KEY2}
224}
225
226test_deletekey_with_subkey()
227{
228 KEY="$1"
229 KEY2=`dirname ${KEY}`
230
231 OUTPUT=`${NETREG} createkey ${KEY}`
232 if test "x$?" != "x0" ; then
233 printf "%s\n" "${OUTPUT}"
234 false
235 return
236 fi
237
238 OUTPUT=`${NETREG} deletekey ${KEY2}`
239
240 if test "x$?" = "x0" ; then
241 echo "ERROR: delete of key with subkey succeeded"
242 echo "output:"
243 printf "%s\n" "$OUTPUT"
244 false
245 return
246 fi
247
248 ${NETREG} deletekey ${KEY} && ${NETREG} deletekey ${KEY2}
249}
250
251test_setvalue()
252{
253 KEY="$1"
254 VALNAME="${2#_}"
255 VALTYPE="$3"
256 VALVALUE="$4"
257
258 OUTPUT=`test_createkey ${KEY}`
259 if test "x$?" != "x0" ; then
260 printf "%s\n" "${OUTPUT}"
261 false
262 return
263 fi
264
265 OUTPUT=`${NETREG} setvalue ${KEY} "${VALNAME}" ${VALTYPE} ${VALVALUE}`
266 if test "x$?" != "x0" ; then
267 echo "ERROR: failed to set value testval in key ${KEY}"
268 printf "%s\n" "${OUTPUT}"
269 false
270 return
271 fi
272
273 OUTPUT=`${NETREG} getvalueraw ${KEY} "${VALNAME}"`
274 if test "x$?" != "x0" ; then
275 echo "ERROR: failure calling getvalueraw for key ${KEY}"
276 echo output:
277 printf "%s\n" "${OUTPUT}"
278 false
279 return
280 fi
281
282 if test "x${OUTPUT}" != "x${VALVALUE}" ; then
283 echo "ERROR: failure retrieving value ${VALNAME} for key ${KEY}"
284 printf "expected: %s\ngot: %s\n" "${VALVALUE}" "${OUTPUT}"
285 false
286 return
287 fi
288
289}
290
291test_deletevalue()
292{
293 KEY="$1"
294 VALNAME="${2#_}"
295
296 ${NETREG} deletevalue ${KEY} "${VALNAME}"
297}
298
299test_deletevalue_nonexisting()
300{
301 KEY="$1"
302 VALNAME="${2#_}"
303
304 ${NETREG} deletevalue ${KEY} "${VALNAME}"
305 if test "x$?" = "x0" ; then
306 echo "ERROR: succeeded deleting value ${VALNAME}"
307 false
308 else
309 true
310 fi
311}
312
313test_setvalue_twice()
314{
315 KEY="$1"
316 VALNAME="${2#_}"
317 VALTYPE1="$3"
318 VALVALUE1="$4"
319 VALTYPE2="$5"
320 VALVALUE2="$6"
321
322 OUTPUT=`test_setvalue ${KEY} _"${VALNAME}" ${VALTYPE1} ${VALVALUE1}`
323 if test "x$?" != "x0" ; then
324 echo "ERROR: first setvalue call failed"
325 printf "%s\n" "$OUTPUT"
326 false
327 return
328 fi
329
330 ${NETREG} setvalue ${KEY} "${VALNAME}" ${VALTYPE2} ${VALVALUE2}
331}
332
333
334testit "enumerate HKLM" \
335 test_enumerate HKLM || \
336 failed=`expr $failed + 1`
337
338testit "enumerate nonexisting hive" \
339 test_enumerate_nonexisting XYZ || \
340 failed=`expr $failed + 1`
341
342testit "enumerate without key" \
343 test_enumerate_no_key || \
344 failed=`expr $failed + 1`
345
346# skip getsd test for registry currently: it fails
347if test "x${RPC}" != "xrpc" ; then
348testit "getsd HKLM" \
349 test_getsd HKLM || \
350 failed=`expr $failed + 1`
351fi
352
353testit "create existing HKLM" \
354 test_create_existing || \
355 failed=`expr $failed + 1`
356
357testit "create key" \
358 test_createkey HKLM/testkey || \
359 failed=`expr $failed + 1`
360
361testit "delete key" \
362 test_deletekey HKLM/testkey || \
363 failed=`expr $failed + 1`
364
365testit "delete^2 key" \
366 test_deletekey_nonexisting HKLM/testkey || \
367 failed=`expr $failed + 1`
368
369testit "enumerate nonexisting key" \
370 test_enumerate_nonexisting HKLM/testkey || \
371 failed=`expr $failed + 1`
372
373testit "create key with subkey" \
374 test_createkey_with_subkey HKLM/testkey/subkey || \
375 failed=`expr $failed + 1`
376
377testit "delete key with subkey" \
378 test_deletekey_with_subkey HKLM/testkey/subkey || \
379 failed=`expr $failed + 1`
380
381testit "set value" \
382 test_setvalue HKLM/testkey _testval sz moin || \
383 failed=`expr $failed + 1`
384
385testit "delete value" \
386 test_deletevalue HKLM/testkey _testval || \
387 failed=`expr $failed + 1`
388
389testit "delete nonexisting value" \
390 test_deletevalue_nonexisting HKLM/testkey _testval || \
391 failed=`expr $failed + 1`
392
393testit "set value to different type" \
394 test_setvalue_twice HKLM/testkey testval sz moin dword 42 || \
395 failed=`expr $failed + 1`
396
397testit "set default value" \
398 test_setvalue HKLM/testkey _"" sz 42 || \
399 failed=`expr $failed + 1`
400
401testit "delete default value" \
402 test_deletevalue HKLM/testkey _"" || \
403 failed=`expr $failed + 1`
404
405testit "delete nonexisting default value" \
406 test_deletevalue_nonexisting HKLM/testkey _"" || \
407 failed=`expr $failed + 1`
408
409testit "delete key with value" \
410 test_deletekey HKLM/testkey || \
411 failed=`expr $failed + 1`
412
413
414testok $0 $failed
415
Note: See TracBrowser for help on using the repository browser.