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