test047-ldap revision 1.1 1 1.1 lukem #! /bin/sh
2 1.1 lukem # $OpenLDAP: pkg/ldap/tests/scripts/test047-ldap,v 1.1.2.5 2008/02/11 23:26:51 kurt Exp $
3 1.1 lukem ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
4 1.1 lukem ##
5 1.1 lukem ## Copyright 1998-2008 The OpenLDAP Foundation.
6 1.1 lukem ## All rights reserved.
7 1.1 lukem ##
8 1.1 lukem ## Redistribution and use in source and binary forms, with or without
9 1.1 lukem ## modification, are permitted only as authorized by the OpenLDAP
10 1.1 lukem ## Public License.
11 1.1 lukem ##
12 1.1 lukem ## A copy of this license is available in the file LICENSE in the
13 1.1 lukem ## top-level directory of the distribution or, alternatively, at
14 1.1 lukem ## <http://www.OpenLDAP.org/license.html>.
15 1.1 lukem
16 1.1 lukem echo "running defines.sh"
17 1.1 lukem . $SRCDIR/scripts/defines.sh
18 1.1 lukem
19 1.1 lukem echo ""
20 1.1 lukem
21 1.1 lukem if test $BACKLDAP = ldapno ; then
22 1.1 lukem echo "ldap backend not available, test skipped"
23 1.1 lukem exit 0
24 1.1 lukem fi
25 1.1 lukem
26 1.1 lukem if test $RWM = rwmno ; then
27 1.1 lukem echo "rwm (rewrite/remap) overlay not available, test skipped"
28 1.1 lukem exit 0
29 1.1 lukem fi
30 1.1 lukem
31 1.1 lukem rm -rf $TESTDIR
32 1.1 lukem
33 1.1 lukem mkdir -p $TESTDIR $DBDIR1 $DBDIR2
34 1.1 lukem
35 1.1 lukem echo "Starting slapd on TCP/IP port $PORT1..."
36 1.1 lukem . $CONFFILTER $BACKEND $MONITORDB < $METACONF1 > $CONF1
37 1.1 lukem $SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
38 1.1 lukem PID=$!
39 1.1 lukem if test $WAIT != 0 ; then
40 1.1 lukem echo PID $PID
41 1.1 lukem read foo
42 1.1 lukem fi
43 1.1 lukem KILLPIDS="$PID"
44 1.1 lukem
45 1.1 lukem sleep 1
46 1.1 lukem
47 1.1 lukem echo "Using ldapsearch to check that slapd is running..."
48 1.1 lukem for i in 0 1 2 3 4 5; do
49 1.1 lukem $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \
50 1.1 lukem 'objectclass=*' > /dev/null 2>&1
51 1.1 lukem RC=$?
52 1.1 lukem if test $RC = 0 ; then
53 1.1 lukem break
54 1.1 lukem fi
55 1.1 lukem echo "Waiting 5 seconds for slapd to start..."
56 1.1 lukem sleep 5
57 1.1 lukem done
58 1.1 lukem if test $RC != 0 ; then
59 1.1 lukem echo "ldapsearch failed ($RC)!"
60 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
61 1.1 lukem exit $RC
62 1.1 lukem fi
63 1.1 lukem
64 1.1 lukem echo "Using ldapadd to populate the database..."
65 1.1 lukem $LDAPADD -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD < \
66 1.1 lukem $LDIFORDERED > $TESTOUT 2>&1
67 1.1 lukem RC=$?
68 1.1 lukem if test $RC != 0 ; then
69 1.1 lukem echo "ldapadd failed ($RC)!"
70 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
71 1.1 lukem exit $RC
72 1.1 lukem fi
73 1.1 lukem
74 1.1 lukem echo "Starting slapd on TCP/IP port $PORT2..."
75 1.1 lukem . $CONFFILTER $BACKEND $MONITORDB < $METACONF2 > $CONF2
76 1.1 lukem $SLAPD -f $CONF2 -h $URI2 -d $LVL $TIMING > $LOG2 2>&1 &
77 1.1 lukem PID=$!
78 1.1 lukem if test $WAIT != 0 ; then
79 1.1 lukem echo PID $PID
80 1.1 lukem read foo
81 1.1 lukem fi
82 1.1 lukem KILLPIDS="$KILLPIDS $PID"
83 1.1 lukem
84 1.1 lukem sleep 1
85 1.1 lukem
86 1.1 lukem echo "Using ldapsearch to check that slapd is running..."
87 1.1 lukem for i in 0 1 2 3 4 5; do
88 1.1 lukem $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT2 \
89 1.1 lukem 'objectclass=*' > /dev/null 2>&1
90 1.1 lukem RC=$?
91 1.1 lukem if test $RC = 0 ; then
92 1.1 lukem break
93 1.1 lukem fi
94 1.1 lukem echo "Waiting 5 seconds for slapd to start..."
95 1.1 lukem sleep 5
96 1.1 lukem done
97 1.1 lukem if test $RC != 0 ; then
98 1.1 lukem echo "ldapsearch failed ($RC)!"
99 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
100 1.1 lukem exit $RC
101 1.1 lukem fi
102 1.1 lukem
103 1.1 lukem echo "Using ldapadd to populate the database..."
104 1.1 lukem $LDAPADD -D "$METAMANAGERDN" -h $LOCALHOST -p $PORT2 -w $PASSWD < \
105 1.1 lukem $LDIFMETA >> $TESTOUT 2>&1
106 1.1 lukem RC=$?
107 1.1 lukem if test $RC != 0 ; then
108 1.1 lukem echo "ldapadd failed ($RC)!"
109 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
110 1.1 lukem exit $RC
111 1.1 lukem fi
112 1.1 lukem
113 1.1 lukem echo "Starting slapd on TCP/IP port $PORT3..."
114 1.1 lukem . $CONFFILTER $BACKEND $MONITORDB < $GLUELDAPCONF > $CONF3
115 1.1 lukem $SLAPD -f $CONF3 -h $URI3 -d $LVL $TIMING > $LOG3 2>&1 &
116 1.1 lukem PID=$!
117 1.1 lukem if test $WAIT != 0 ; then
118 1.1 lukem echo PID $PID
119 1.1 lukem read foo
120 1.1 lukem fi
121 1.1 lukem KILLPIDS="$KILLPIDS $PID"
122 1.1 lukem
123 1.1 lukem sleep 1
124 1.1 lukem
125 1.1 lukem echo "Using ldapsearch to check that slapd is running..."
126 1.1 lukem for i in 0 1 2 3 4 5; do
127 1.1 lukem $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT3 \
128 1.1 lukem 'objectclass=*' > /dev/null 2>&1
129 1.1 lukem RC=$?
130 1.1 lukem if test $RC = 0 ; then
131 1.1 lukem break
132 1.1 lukem fi
133 1.1 lukem echo "Waiting 5 seconds for slapd to start..."
134 1.1 lukem sleep 5
135 1.1 lukem done
136 1.1 lukem if test $RC != 0 ; then
137 1.1 lukem echo "ldapsearch failed ($RC)!"
138 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
139 1.1 lukem exit $RC
140 1.1 lukem fi
141 1.1 lukem
142 1.1 lukem cat /dev/null > $SEARCHOUT
143 1.1 lukem
144 1.1 lukem BASEDN="o=Example,c=US"
145 1.1 lukem echo "Searching base=\"$BASEDN\"..."
146 1.1 lukem echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
147 1.1 lukem $LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" >> $SEARCHOUT 2>&1
148 1.1 lukem RC=$?
149 1.1 lukem #if test $RC != 0 ; then
150 1.1 lukem # echo "Search failed ($RC)!"
151 1.1 lukem # test $KILLSERVERS != no && kill -HUP $KILLPIDS
152 1.1 lukem # exit $RC
153 1.1 lukem #fi
154 1.1 lukem case $RC in
155 1.1 lukem 0)
156 1.1 lukem ;;
157 1.1 lukem 51)
158 1.1 lukem echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
159 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
160 1.1 lukem exit 0
161 1.1 lukem ;;
162 1.1 lukem *)
163 1.1 lukem echo "Search failed ($RC)!"
164 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
165 1.1 lukem exit $RC
166 1.1 lukem ;;
167 1.1 lukem esac
168 1.1 lukem
169 1.1 lukem # ITS#4195: spurious matchedDN when the search scopes the main target,
170 1.1 lukem # and the searchBase is not present, so that target returns noSuchObject
171 1.1 lukem BASEDN="ou=Meta,o=Example,c=US"
172 1.1 lukem echo "Searching base=\"$BASEDN\"..."
173 1.1 lukem echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
174 1.1 lukem $LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" >> $SEARCHOUT 2>&1
175 1.1 lukem RC=$?
176 1.1 lukem #if test $RC != 0 ; then
177 1.1 lukem # echo "Search failed ($RC)!"
178 1.1 lukem # test $KILLSERVERS != no && kill -HUP $KILLPIDS
179 1.1 lukem # exit $RC
180 1.1 lukem #fi
181 1.1 lukem case $RC in
182 1.1 lukem 0)
183 1.1 lukem ;;
184 1.1 lukem 51)
185 1.1 lukem echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
186 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
187 1.1 lukem exit 0
188 1.1 lukem ;;
189 1.1 lukem *)
190 1.1 lukem echo "Search failed ($RC)!"
191 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
192 1.1 lukem exit $RC
193 1.1 lukem ;;
194 1.1 lukem esac
195 1.1 lukem
196 1.1 lukem #
197 1.1 lukem # Do some modifications
198 1.1 lukem #
199 1.1 lukem
200 1.1 lukem BASEDN="o=Example,c=US"
201 1.1 lukem echo "Modifying database \"$BASEDN\"..."
202 1.1 lukem $LDAPMODIFY -v -D "cn=Manager,$BASEDN" -h $LOCALHOST -p $PORT3 -w $PASSWD \
203 1.1 lukem -M >> $TESTOUT 2>&1 << EOMODS
204 1.1 lukem # These operations (updates with objectClass mapping) triggered ITS#3499
205 1.1 lukem dn: cn=Added Group,ou=Groups,$BASEDN
206 1.1 lukem changetype: add
207 1.1 lukem objectClass: groupOfNames
208 1.1 lukem objectClass: uidObject
209 1.1 lukem cn: Added Group
210 1.1 lukem member: cn=Added Group,ou=Groups,$BASEDN
211 1.1 lukem uid: added
212 1.1 lukem
213 1.1 lukem dn: cn=Another Added Group,ou=Groups,$BASEDN
214 1.1 lukem changetype: add
215 1.1 lukem objectClass: groupOfNames
216 1.1 lukem cn: Another Added Group
217 1.1 lukem member: cn=Added Group,ou=Groups,$BASEDN
218 1.1 lukem member: cn=Another Added Group,ou=Groups,$BASEDN
219 1.1 lukem
220 1.1 lukem dn: cn=Another Added Group,ou=Groups,$BASEDN
221 1.1 lukem changetype: modify
222 1.1 lukem add: objectClass
223 1.1 lukem objectClass: uidObject
224 1.1 lukem -
225 1.1 lukem add: uid
226 1.1 lukem uid: added
227 1.1 lukem -
228 1.1 lukem
229 1.1 lukem dn: cn=Added Group,ou=Groups,$BASEDN
230 1.1 lukem changetype: modify
231 1.1 lukem delete: objectClass
232 1.1 lukem objectClass: uidObject
233 1.1 lukem -
234 1.1 lukem delete: uid
235 1.1 lukem -
236 1.1 lukem
237 1.1 lukem dn: ou=Meta,$BASEDN
238 1.1 lukem changetype: modify
239 1.1 lukem add: description
240 1.1 lukem description: added to "ou=Meta,$BASEDN"
241 1.1 lukem -
242 1.1 lukem
243 1.1 lukem dn: ou=Who's going to handle this?,$BASEDN
244 1.1 lukem changetype: add
245 1.1 lukem objectClass: organizationalUnit
246 1.1 lukem ou: Who's going to handle this?
247 1.1 lukem description: added
248 1.1 lukem description: will be deleted
249 1.1 lukem
250 1.1 lukem dn: ou=Same as above,$BASEDN
251 1.1 lukem changetype: add
252 1.1 lukem objectClass: organizationalUnit
253 1.1 lukem ou: Same as above
254 1.1 lukem description: added right after "Who's going to handle this?"
255 1.1 lukem description: will be preserved
256 1.1 lukem
257 1.1 lukem dn: ou=Who's going to handle this?,$BASEDN
258 1.1 lukem changetype: delete
259 1.1 lukem
260 1.1 lukem dn: ou=Who's going to handle this?,ou=Meta,$BASEDN
261 1.1 lukem changetype: add
262 1.1 lukem objectClass: organizationalUnit
263 1.1 lukem ou: Who's going to handle this?
264 1.1 lukem description: added
265 1.1 lukem description: will be deleted
266 1.1 lukem
267 1.1 lukem dn: ou=Same as above,ou=Meta,$BASEDN
268 1.1 lukem changetype: add
269 1.1 lukem objectClass: organizationalUnit
270 1.1 lukem ou: Same as above
271 1.1 lukem description: added right after "Who's going to handle this?"
272 1.1 lukem description: will be preserved
273 1.1 lukem
274 1.1 lukem dn: cn=Added User,ou=Same as above,ou=Meta,$BASEDN
275 1.1 lukem changetype: add
276 1.1 lukem objectClass: inetOrgPerson
277 1.1 lukem cn: Added User
278 1.1 lukem sn: User
279 1.1 lukem userPassword: secret
280 1.1 lukem
281 1.1 lukem dn: ou=Who's going to handle this?,ou=Meta,$BASEDN
282 1.1 lukem changetype: delete
283 1.1 lukem EOMODS
284 1.1 lukem
285 1.1 lukem RC=$?
286 1.1 lukem #if test $RC != 0 ; then
287 1.1 lukem # echo "Modify failed ($RC)!"
288 1.1 lukem # test $KILLSERVERS != no && kill -HUP $KILLPIDS
289 1.1 lukem # exit $RC
290 1.1 lukem #fi
291 1.1 lukem case $RC in
292 1.1 lukem 0)
293 1.1 lukem ;;
294 1.1 lukem 51)
295 1.1 lukem echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
296 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
297 1.1 lukem exit 0
298 1.1 lukem ;;
299 1.1 lukem *)
300 1.1 lukem echo "Modify failed ($RC)!"
301 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
302 1.1 lukem exit $RC
303 1.1 lukem ;;
304 1.1 lukem esac
305 1.1 lukem
306 1.1 lukem echo "Searching base=\"$BASEDN\"..."
307 1.1 lukem echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
308 1.1 lukem $LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" >> $SEARCHOUT 2>&1
309 1.1 lukem RC=$?
310 1.1 lukem #if test $RC != 0 ; then
311 1.1 lukem # echo "Search failed ($RC)!"
312 1.1 lukem # test $KILLSERVERS != no && kill -HUP $KILLPIDS
313 1.1 lukem # exit $RC
314 1.1 lukem #fi
315 1.1 lukem case $RC in
316 1.1 lukem 0)
317 1.1 lukem ;;
318 1.1 lukem 51)
319 1.1 lukem echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
320 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
321 1.1 lukem exit 0
322 1.1 lukem ;;
323 1.1 lukem *)
324 1.1 lukem echo "Search failed ($RC)!"
325 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
326 1.1 lukem exit $RC
327 1.1 lukem ;;
328 1.1 lukem esac
329 1.1 lukem
330 1.1 lukem BASEDN="o=Example,c=US"
331 1.1 lukem echo " base=\"$BASEDN\"..."
332 1.1 lukem echo "# base=\"$BASEDN\"..." >> $SEARCHOUT
333 1.1 lukem $LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" -M "$FILTER" '*' ref \
334 1.1 lukem >> $SEARCHOUT 2>&1
335 1.1 lukem RC=$?
336 1.1 lukem #if test $RC != 0 ; then
337 1.1 lukem # echo "Search failed ($RC)!"
338 1.1 lukem # test $KILLSERVERS != no && kill -HUP $KILLPIDS
339 1.1 lukem # exit $RC
340 1.1 lukem #fi
341 1.1 lukem case $RC in
342 1.1 lukem 0)
343 1.1 lukem ;;
344 1.1 lukem 51)
345 1.1 lukem echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
346 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
347 1.1 lukem exit 0
348 1.1 lukem ;;
349 1.1 lukem *)
350 1.1 lukem echo "Search failed ($RC)!"
351 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
352 1.1 lukem exit $RC
353 1.1 lukem ;;
354 1.1 lukem esac
355 1.1 lukem
356 1.1 lukem BASEDN="o=Example,c=US"
357 1.1 lukem FILTER="(seeAlso=cn=all staff,ou=Groups,$BASEDN)"
358 1.1 lukem echo "Searching filter=\"$FILTER\""
359 1.1 lukem echo " attrs=\"seeAlso\""
360 1.1 lukem echo " base=\"$BASEDN\"..."
361 1.1 lukem echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
362 1.1 lukem echo "# attrs=\"seeAlso\"" >> $SEARCHOUT
363 1.1 lukem echo "# base=\"$BASEDN\"..." >> $SEARCHOUT
364 1.1 lukem $LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" "$FILTER" seeAlso \
365 1.1 lukem >> $SEARCHOUT 2>&1
366 1.1 lukem RC=$?
367 1.1 lukem #if test $RC != 0 ; then
368 1.1 lukem # echo "Search failed ($RC)!"
369 1.1 lukem # test $KILLSERVERS != no && kill -HUP $KILLPIDS
370 1.1 lukem # exit $RC
371 1.1 lukem #fi
372 1.1 lukem case $RC in
373 1.1 lukem 0)
374 1.1 lukem ;;
375 1.1 lukem 51)
376 1.1 lukem echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
377 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
378 1.1 lukem exit 0
379 1.1 lukem ;;
380 1.1 lukem *)
381 1.1 lukem echo "Search failed ($RC)!"
382 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
383 1.1 lukem exit $RC
384 1.1 lukem ;;
385 1.1 lukem esac
386 1.1 lukem
387 1.1 lukem FILTER="(uid=example)"
388 1.1 lukem echo "Searching filter=\"$FILTER\""
389 1.1 lukem echo " attrs=\"uid\""
390 1.1 lukem echo " base=\"$BASEDN\"..."
391 1.1 lukem echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
392 1.1 lukem echo "# attrs=\"uid\"" >> $SEARCHOUT
393 1.1 lukem echo "# base=\"$BASEDN\"..." >> $SEARCHOUT
394 1.1 lukem $LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" "$FILTER" uid \
395 1.1 lukem >> $SEARCHOUT 2>&1
396 1.1 lukem RC=$?
397 1.1 lukem #if test $RC != 0 ; then
398 1.1 lukem # echo "Search failed ($RC)!"
399 1.1 lukem # test $KILLSERVERS != no && kill -HUP $KILLPIDS
400 1.1 lukem # exit $RC
401 1.1 lukem #fi
402 1.1 lukem case $RC in
403 1.1 lukem 0)
404 1.1 lukem ;;
405 1.1 lukem 51)
406 1.1 lukem echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
407 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
408 1.1 lukem exit 0
409 1.1 lukem ;;
410 1.1 lukem *)
411 1.1 lukem echo "Search failed ($RC)!"
412 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
413 1.1 lukem exit $RC
414 1.1 lukem ;;
415 1.1 lukem esac
416 1.1 lukem
417 1.1 lukem FILTER="(member=cn=Another Added Group,ou=Groups,$BASEDN)"
418 1.1 lukem echo "Searching filter=\"$FILTER\""
419 1.1 lukem echo " attrs=\"member\""
420 1.1 lukem echo " base=\"$BASEDN\"..."
421 1.1 lukem echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
422 1.1 lukem echo "# attrs=\"member\"" >> $SEARCHOUT
423 1.1 lukem echo "# base=\"$BASEDN\"..." >> $SEARCHOUT
424 1.1 lukem $LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" "$FILTER" member \
425 1.1 lukem >> $SEARCHOUT 2>&1
426 1.1 lukem RC=$?
427 1.1 lukem #if test $RC != 0 ; then
428 1.1 lukem # echo "Search failed ($RC)!"
429 1.1 lukem # test $KILLSERVERS != no && kill -HUP $KILLPIDS
430 1.1 lukem # exit $RC
431 1.1 lukem #fi
432 1.1 lukem case $RC in
433 1.1 lukem 0)
434 1.1 lukem ;;
435 1.1 lukem 51)
436 1.1 lukem echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
437 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
438 1.1 lukem exit 0
439 1.1 lukem ;;
440 1.1 lukem *)
441 1.1 lukem echo "Search failed ($RC)!"
442 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
443 1.1 lukem exit $RC
444 1.1 lukem ;;
445 1.1 lukem esac
446 1.1 lukem
447 1.1 lukem echo "Waiting 10 seconds for cached connections to timeout..."
448 1.1 lukem sleep 10
449 1.1 lukem
450 1.1 lukem echo "Searching with a timed out connection..."
451 1.1 lukem echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
452 1.1 lukem echo "# attrs=\"member\"" >> $SEARCHOUT
453 1.1 lukem echo "# base=\"$BASEDN\"" >> $SEARCHOUT
454 1.1 lukem echo "# with a timed out connection..." >> $SEARCHOUT
455 1.1 lukem $LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -D "cn=Manager,$BASEDN" -w $PASSWD \
456 1.1 lukem -b "$BASEDN" "$FILTER" member \
457 1.1 lukem >> $SEARCHOUT 2>&1
458 1.1 lukem RC=$?
459 1.1 lukem #if test $RC != 0 ; then
460 1.1 lukem # echo "Search failed ($RC)!"
461 1.1 lukem # test $KILLSERVERS != no && kill -HUP $KILLPIDS
462 1.1 lukem # exit $RC
463 1.1 lukem #fi
464 1.1 lukem case $RC in
465 1.1 lukem 0)
466 1.1 lukem ;;
467 1.1 lukem 51)
468 1.1 lukem echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
469 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
470 1.1 lukem exit 0
471 1.1 lukem ;;
472 1.1 lukem *)
473 1.1 lukem echo "Search failed ($RC)!"
474 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
475 1.1 lukem exit $RC
476 1.1 lukem ;;
477 1.1 lukem esac
478 1.1 lukem
479 1.1 lukem # NOTE: cannot send to $SEARCHOUT because the returned entries
480 1.1 lukem # are not predictable...
481 1.1 lukem echo "Checking server-enforced size limit..."
482 1.1 lukem echo "# Checking server-enforced size limit..." >> $SEARCHOUT
483 1.1 lukem $LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 \
484 1.1 lukem -D "cn=Bjorn Jensen,ou=Information Technology Division,ou=People,$BASEDN" -w bjorn \
485 1.1 lukem -b "$BASEDN" "(objectClass=*)" 1.1 \
486 1.1 lukem >> $TESTOUT 2>&1
487 1.1 lukem RC=$?
488 1.1 lukem case $RC in
489 1.1 lukem 0)
490 1.1 lukem echo "Search should have failed ($RC)!"
491 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
492 1.1 lukem exit -1
493 1.1 lukem ;;
494 1.1 lukem 4)
495 1.1 lukem ;;
496 1.1 lukem *)
497 1.1 lukem echo "Search failed ($RC)!"
498 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
499 1.1 lukem exit $RC
500 1.1 lukem ;;
501 1.1 lukem esac
502 1.1 lukem
503 1.1 lukem # NOTE: cannot send to $SEARCHOUT because the returned entries
504 1.1 lukem # are not predictable...
505 1.1 lukem echo "Checking client-requested size limit..."
506 1.1 lukem echo "# Checking client-requested size limit..." >> $SEARCHOUT
507 1.1 lukem $LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 \
508 1.1 lukem -D "cn=Bjorn Jensen,ou=Information Technology Division,ou=People,$BASEDN" -w bjorn \
509 1.1 lukem -b "$BASEDN" -z 2 "(objectClass=*)" 1.1 \
510 1.1 lukem >> $TESTOUT 2>&1
511 1.1 lukem RC=$?
512 1.1 lukem case $RC in
513 1.1 lukem 0)
514 1.1 lukem echo "Search should have failed ($RC)!"
515 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
516 1.1 lukem exit -1
517 1.1 lukem ;;
518 1.1 lukem 4)
519 1.1 lukem ;;
520 1.1 lukem *)
521 1.1 lukem echo "Search failed ($RC)!"
522 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
523 1.1 lukem exit $RC
524 1.1 lukem ;;
525 1.1 lukem esac
526 1.1 lukem
527 1.1 lukem echo "Filtering ldapsearch results..."
528 1.1 lukem . $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
529 1.1 lukem echo "Filtering original ldif used to create database..."
530 1.1 lukem . $LDIFFILTER < $METAOUT > $LDIFFLT
531 1.1 lukem echo "Comparing filter output..."
532 1.1 lukem $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
533 1.1 lukem
534 1.1 lukem if test $? != 0 ; then
535 1.1 lukem echo "comparison failed - meta search/modification didn't succeed"
536 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
537 1.1 lukem exit 1
538 1.1 lukem fi
539 1.1 lukem
540 1.1 lukem # ITS#4458 needs patch to slapo-rwm for global rewriting of passwd_exop
541 1.1 lukem BASEDN="o=Example,c=US"
542 1.1 lukem echo "Changing password to database \"$BASEDN\"..."
543 1.1 lukem $LDAPPASSWD -h $LOCALHOST -p $PORT3 -D "cn=Manager,$BASEDN" -w $PASSWD \
544 1.1 lukem -s $PASSWD "cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN" \
545 1.1 lukem >> $TESTOUT 2>&1
546 1.1 lukem RC=$?
547 1.1 lukem #if test $RC != 0 ; then
548 1.1 lukem # echo "Passwd ExOp failed ($RC)!"
549 1.1 lukem # test $KILLSERVERS != no && kill -HUP $KILLPIDS
550 1.1 lukem # exit $RC
551 1.1 lukem #fi
552 1.1 lukem case $RC in
553 1.1 lukem 0)
554 1.1 lukem ;;
555 1.1 lukem # 51)
556 1.1 lukem # echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
557 1.1 lukem # test $KILLSERVERS != no && kill -HUP $KILLPIDS
558 1.1 lukem # exit 0
559 1.1 lukem # ;;
560 1.1 lukem # 80)
561 1.1 lukem 1)
562 1.1 lukem echo "Passwd ExOp failed ($RC)! ITS#4458?"
563 1.1 lukem ;;
564 1.1 lukem *)
565 1.1 lukem echo "Passwd ExOp failed ($RC)!"
566 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
567 1.1 lukem exit $RC
568 1.1 lukem ;;
569 1.1 lukem esac
570 1.1 lukem
571 1.1 lukem if test $RC = 0 ; then
572 1.1 lukem echo "Binding with newly changed password to database \"$BASEDN\"..."
573 1.1 lukem $LDAPWHOAMI -h $LOCALHOST -p $PORT3 \
574 1.1 lukem -D "cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN" \
575 1.1 lukem -w $PASSWD >> $TESTOUT 2>&1
576 1.1 lukem RC=$?
577 1.1 lukem #if test $RC != 0 ; then
578 1.1 lukem # echo "WhoAmI failed ($RC)!"
579 1.1 lukem # test $KILLSERVERS != no && kill -HUP $KILLPIDS
580 1.1 lukem # exit $RC
581 1.1 lukem #fi
582 1.1 lukem case $RC in
583 1.1 lukem 0)
584 1.1 lukem ;;
585 1.1 lukem 51)
586 1.1 lukem echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
587 1.1 lukem ;;
588 1.1 lukem *)
589 1.1 lukem echo "WhoAmI failed ($RC)!"
590 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
591 1.1 lukem exit $RC
592 1.1 lukem ;;
593 1.1 lukem esac
594 1.1 lukem fi
595 1.1 lukem
596 1.1 lukem echo "Binding as newly added user to database \"$BASEDN\"..."
597 1.1 lukem $LDAPWHOAMI -h $LOCALHOST -p $PORT3 \
598 1.1 lukem -D "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
599 1.1 lukem -w $PASSWD >> $TESTOUT 2>&1
600 1.1 lukem RC=$?
601 1.1 lukem #if test $RC != 0 ; then
602 1.1 lukem # echo "WhoAmI failed ($RC)!"
603 1.1 lukem # test $KILLSERVERS != no && kill -HUP $KILLPIDS
604 1.1 lukem # exit $RC
605 1.1 lukem #fi
606 1.1 lukem case $RC in
607 1.1 lukem 0)
608 1.1 lukem ;;
609 1.1 lukem 51)
610 1.1 lukem echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
611 1.1 lukem ;;
612 1.1 lukem *)
613 1.1 lukem echo "WhoAmI failed ($RC)!"
614 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
615 1.1 lukem exit $RC
616 1.1 lukem ;;
617 1.1 lukem esac
618 1.1 lukem
619 1.1 lukem echo "Changing password to database \"$BASEDN\"..."
620 1.1 lukem $LDAPPASSWD -h $LOCALHOST -p $PORT3 -D "cn=Manager,$BASEDN" -w $PASSWD \
621 1.1 lukem -s meta "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
622 1.1 lukem >> $TESTOUT 2>&1
623 1.1 lukem RC=$?
624 1.1 lukem #if test $RC != 0 ; then
625 1.1 lukem # echo "Passwd ExOp failed ($RC)!"
626 1.1 lukem # test $KILLSERVERS != no && kill -HUP $KILLPIDS
627 1.1 lukem # exit $RC
628 1.1 lukem #fi
629 1.1 lukem case $RC in
630 1.1 lukem 0)
631 1.1 lukem ;;
632 1.1 lukem # 51)
633 1.1 lukem # echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
634 1.1 lukem # test $KILLSERVERS != no && kill -HUP $KILLPIDS
635 1.1 lukem # exit 0
636 1.1 lukem # ;;
637 1.1 lukem # 80)
638 1.1 lukem 1)
639 1.1 lukem echo "Passwd ExOp failed ($RC)! ITS#4458?"
640 1.1 lukem ;;
641 1.1 lukem *)
642 1.1 lukem echo "Passwd ExOp failed ($RC)!"
643 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
644 1.1 lukem exit $RC
645 1.1 lukem ;;
646 1.1 lukem esac
647 1.1 lukem
648 1.1 lukem if test $RC = 0 ; then
649 1.1 lukem echo "Binding with newly changed password to database \"$BASEDN\"..."
650 1.1 lukem $LDAPWHOAMI -h $LOCALHOST -p $PORT3 \
651 1.1 lukem -D "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
652 1.1 lukem -w meta >> $TESTOUT 2>&1
653 1.1 lukem RC=$?
654 1.1 lukem #if test $RC != 0 ; then
655 1.1 lukem # echo "WhoAmI failed ($RC)!"
656 1.1 lukem # test $KILLSERVERS != no && kill -HUP $KILLPIDS
657 1.1 lukem # exit $RC
658 1.1 lukem #fi
659 1.1 lukem case $RC in
660 1.1 lukem 0)
661 1.1 lukem ;;
662 1.1 lukem 51)
663 1.1 lukem echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
664 1.1 lukem ;;
665 1.1 lukem *)
666 1.1 lukem echo "WhoAmI failed ($RC)!"
667 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
668 1.1 lukem exit $RC
669 1.1 lukem ;;
670 1.1 lukem esac
671 1.1 lukem fi
672 1.1 lukem
673 1.1 lukem echo "Binding with incorrect password to database \"$BASEDN\"..."
674 1.1 lukem $LDAPWHOAMI -h $LOCALHOST -p $PORT3 \
675 1.1 lukem -D "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
676 1.1 lukem -w bogus >> $TESTOUT 2>&1
677 1.1 lukem RC=$?
678 1.1 lukem #if test $RC != 0 ; then
679 1.1 lukem # echo "WhoAmI failed ($RC)!"
680 1.1 lukem # test $KILLSERVERS != no && kill -HUP $KILLPIDS
681 1.1 lukem # exit $RC
682 1.1 lukem #fi
683 1.1 lukem case $RC in
684 1.1 lukem 0)
685 1.1 lukem echo "WhoAmI should have failed ($RC)!"
686 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
687 1.1 lukem exit -1
688 1.1 lukem ;;
689 1.1 lukem 51)
690 1.1 lukem echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
691 1.1 lukem ;;
692 1.1 lukem *)
693 1.1 lukem ;;
694 1.1 lukem esac
695 1.1 lukem
696 1.1 lukem echo "Binding with non-existing user to database \"$BASEDN\"..."
697 1.1 lukem $LDAPWHOAMI -h $LOCALHOST -p $PORT3 \
698 1.1 lukem -D "cn=Non-existing User,ou=Same as above,ou=Meta,$BASEDN" \
699 1.1 lukem -w bogus >> $TESTOUT 2>&1
700 1.1 lukem RC=$?
701 1.1 lukem #if test $RC != 0 ; then
702 1.1 lukem # echo "WhoAmI failed ($RC)!"
703 1.1 lukem # test $KILLSERVERS != no && kill -HUP $KILLPIDS
704 1.1 lukem # exit $RC
705 1.1 lukem #fi
706 1.1 lukem case $RC in
707 1.1 lukem 0)
708 1.1 lukem echo "WhoAmI should have failed ($RC)!"
709 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
710 1.1 lukem exit -1
711 1.1 lukem ;;
712 1.1 lukem 51)
713 1.1 lukem echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
714 1.1 lukem ;;
715 1.1 lukem *)
716 1.1 lukem ;;
717 1.1 lukem esac
718 1.1 lukem
719 1.1 lukem echo "Comparing to database \"$BASEDN\"..."
720 1.1 lukem $LDAPCOMPARE -h $LOCALHOST -p $PORT3 \
721 1.1 lukem "cn=Another Added Group,ou=Groups,$BASEDN" \
722 1.1 lukem "member:cn=Added Group,ou=Groups,$BASEDN" >> $TESTOUT 2>&1
723 1.1 lukem RC=$?
724 1.1 lukem #if test $RC != 6 ; then
725 1.1 lukem # echo "Compare failed ($RC)!"
726 1.1 lukem # test $KILLSERVERS != no && kill -HUP $KILLPIDS
727 1.1 lukem # exit -1
728 1.1 lukem #fi
729 1.1 lukem case $RC in
730 1.1 lukem 6)
731 1.1 lukem ;;
732 1.1 lukem 51)
733 1.1 lukem echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
734 1.1 lukem ;;
735 1.1 lukem *)
736 1.1 lukem echo "Compare failed ($RC)!"
737 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
738 1.1 lukem exit $RC
739 1.1 lukem ;;
740 1.1 lukem esac
741 1.1 lukem
742 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
743 1.1 lukem
744 1.1 lukem echo ">>>>> Test succeeded"
745 1.1 lukem
746 1.1 lukem test $KILLSERVERS != no && wait
747 1.1 lukem
748 1.1 lukem exit 0
749