1129202Scognet#! /bin/sh
2129202Scognet# OpenLDAP: pkg/ldap/tests/scripts/test035-meta,v 1.14.2.8 2010/04/19 19:14:35 quanah Exp
3129202Scognet## This work is part of OpenLDAP Software <http://www.openldap.org/>.
4129202Scognet##
5129202Scognet## Copyright 1998-2010 The OpenLDAP Foundation.
6129202Scognet## All rights reserved.
7129202Scognet##
8129202Scognet## Redistribution and use in source and binary forms, with or without
9129202Scognet## modification, are permitted only as authorized by the OpenLDAP
10129202Scognet## Public License.
11129202Scognet##
12129202Scognet## A copy of this license is available in the file LICENSE in the
13129202Scognet## top-level directory of the distribution or, alternatively, at
14129202Scognet## <http://www.OpenLDAP.org/license.html>.
15129202Scognet
16129202Scognetecho "running defines.sh"
17129202Scognet. $SRCDIR/scripts/defines.sh
18129202Scognet
19129202Scognetecho ""
20129202Scognet
21129202Scognetif test $BACKMETA = metano ; then 
22129202Scognet	echo "meta backend not available, test skipped"
23129202Scognet	exit 0
24129202Scognetfi
25129202Scognet
26129202Scognetif test $BACKLDAP = ldapno ; then 
27129202Scognet	echo "ldap backend not available, test skipped"
28129202Scognet	exit 0
29129202Scognetfi
30129202Scognet
31129202Scognetrm -rf $TESTDIR
32129202Scognet
33129202Scognetmkdir -p $TESTDIR $DBDIR1 $DBDIR2
34129202Scognet
35129202Scognetecho "Starting slapd on TCP/IP port $PORT1..."
36129202Scognet. $CONFFILTER $BACKEND $MONITORDB < $METACONF1 > $CONF1
37129202Scognet$SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
38129202ScognetPID=$!
39129202Scognetif test $WAIT != 0 ; then
40129202Scognet    echo PID $PID
41129202Scognet    read foo
42129202Scognetfi
43129202ScognetKILLPIDS="$PID"
44129202Scognet
45137464Scognetsleep 1
46270882Sian
47288373Skibecho "Using ldapsearch to check that slapd is running..."
48288373Skibfor 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
57done
58if test $RC != 0 ; then
59	echo "ldapsearch failed ($RC)!"
60	test $KILLSERVERS != no && kill -HUP $KILLPIDS
61	exit $RC
62fi
63
64echo "Using ldapadd to populate the database..."
65$LDAPADD -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD < \
66	$LDIFORDERED > $TESTOUT 2>&1
67RC=$?
68if test $RC != 0 ; then
69	echo "ldapadd failed ($RC)!"
70	test $KILLSERVERS != no && kill -HUP $KILLPIDS
71	exit $RC
72fi
73
74echo "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 &
77PID=$!
78if test $WAIT != 0 ; then
79    echo PID $PID
80    read foo
81fi
82KILLPIDS="$KILLPIDS $PID"
83
84sleep 1
85
86echo "Using ldapsearch to check that slapd is running..."
87for 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
96done
97if test $RC != 0 ; then
98	echo "ldapsearch failed ($RC)!"
99	test $KILLSERVERS != no && kill -HUP $KILLPIDS
100	exit $RC
101fi
102
103echo "Using ldapadd to populate the database..."
104$LDAPADD -D "$METAMANAGERDN" -h $LOCALHOST -p $PORT2 -w $PASSWD < \
105	$LDIFMETA >> $TESTOUT 2>&1
106RC=$?
107if test $RC != 0 ; then
108	echo "ldapadd failed ($RC)!"
109	test $KILLSERVERS != no && kill -HUP $KILLPIDS
110	exit $RC
111fi
112
113echo "Starting slapd on TCP/IP port $PORT3..."
114. $CONFFILTER $BACKEND $MONITORDB < $METACONF > $CONF3
115$SLAPD -f $CONF3 -h $URI3 -d $LVL $TIMING > $LOG3 2>&1 &
116PID=$!
117if test $WAIT != 0 ; then
118    echo PID $PID
119    read foo
120fi
121KILLPIDS="$KILLPIDS $PID"
122
123sleep 1
124
125echo "Using ldapsearch to check that slapd is running..."
126for 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
135done
136if test $RC != 0 ; then
137	echo "ldapsearch failed ($RC)!"
138	test $KILLSERVERS != no && kill -HUP $KILLPIDS
139	exit $RC
140fi
141
142cat /dev/null > $SEARCHOUT
143
144BASEDN="o=Example,c=US"
145echo "Searching base=\"$BASEDN\"..."
146echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
147$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" >> $SEARCHOUT 2>&1
148RC=$?
149#if test $RC != 0 ; then
150#	echo "Search failed ($RC)!"
151#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
152#	exit $RC
153#fi
154case $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	;;
167esac
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
171BASEDN="ou=Meta,o=Example,c=US"
172echo "Searching base=\"$BASEDN\"..."
173echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
174$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" >> $SEARCHOUT 2>&1
175RC=$?
176#if test $RC != 0 ; then
177#	echo "Search failed ($RC)!"
178#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
179#	exit $RC
180#fi
181case $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	;;
194esac
195
196#
197# Do some modifications
198#
199
200BASEDN="o=Example,c=US"
201echo "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
205dn: cn=Added Group,ou=Groups,$BASEDN
206changetype: add
207objectClass: groupOfNames
208objectClass: uidObject
209cn: Added Group
210member: cn=Added Group,ou=Groups,$BASEDN
211uid: added
212
213dn: cn=Another Added Group,ou=Groups,$BASEDN
214changetype: add
215objectClass: groupOfNames
216cn: Another Added Group
217member: cn=Added Group,ou=Groups,$BASEDN
218member: cn=Another Added Group,ou=Groups,$BASEDN
219
220dn: cn=Another Added Group,ou=Groups,$BASEDN
221changetype: modify
222add: objectClass
223objectClass: uidObject
224-
225add: uid
226uid: added
227-
228
229dn: cn=Added Group,ou=Groups,$BASEDN
230changetype: modify
231delete: objectClass
232objectClass: uidObject
233-
234delete: uid
235-
236
237dn: ou=Meta,$BASEDN
238changetype: modify
239add: description
240description: added to "ou=Meta,$BASEDN"
241-
242
243dn: ou=Who's going to handle this?,$BASEDN
244changetype: add
245objectClass: organizationalUnit
246ou: Who's going to handle this?
247description: added
248description: will be deleted
249
250dn: ou=Same as above,$BASEDN
251changetype: add
252objectClass: organizationalUnit
253ou: Same as above
254description: added right after "Who's going to handle this?"
255description: will be preserved
256
257dn: ou=Who's going to handle this?,$BASEDN
258changetype: delete
259
260dn: ou=Who's going to handle this?,ou=Meta,$BASEDN
261changetype: add
262objectClass: organizationalUnit
263ou: Who's going to handle this?
264description: added
265description: will be deleted
266
267dn: ou=Same as above,ou=Meta,$BASEDN
268changetype: add
269objectClass: organizationalUnit
270ou: Same as above
271description: added right after "Who's going to handle this?"
272description: will be preserved
273
274dn: cn=Added User,ou=Same as above,ou=Meta,$BASEDN
275changetype: add
276objectClass: inetOrgPerson
277cn: Added User
278sn: User
279userPassword: secret
280
281dn: ou=Who's going to handle this?,ou=Meta,$BASEDN
282changetype: delete
283EOMODS
284
285RC=$?
286#if test $RC != 0 ; then
287#	echo "Modify failed ($RC)!"
288#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
289#	exit $RC
290#fi
291case $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	;;
304esac
305
306echo "Searching base=\"$BASEDN\"..."
307echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
308$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" >> $SEARCHOUT 2>&1
309RC=$?
310#if test $RC != 0 ; then
311#	echo "Search failed ($RC)!"
312#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
313#	exit $RC
314#fi
315case $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	;;
328esac
329
330BASEDN="o=Example,c=US"
331echo "	base=\"$BASEDN\"..."
332echo "# 	base=\"$BASEDN\"..." >> $SEARCHOUT
333$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" -M "$FILTER" '*' ref \
334	>> $SEARCHOUT 2>&1
335RC=$?
336#if test $RC != 0 ; then
337#	echo "Search failed ($RC)!"
338#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
339#	exit $RC
340#fi
341case $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	;;
354esac
355
356BASEDN="o=Example,c=US"
357FILTER="(seeAlso=cn=all staff,ou=Groups,$BASEDN)"
358echo "Searching filter=\"$FILTER\""
359echo "	attrs=\"seeAlso\""
360echo "	base=\"$BASEDN\"..."
361echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
362echo "# 	attrs=\"seeAlso\"" >> $SEARCHOUT
363echo "# 	base=\"$BASEDN\"..." >> $SEARCHOUT
364$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" "$FILTER" seeAlso \
365	>> $SEARCHOUT 2>&1
366RC=$?
367#if test $RC != 0 ; then
368#	echo "Search failed ($RC)!"
369#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
370#	exit $RC
371#fi
372case $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	;;
385esac
386
387FILTER="(uid=example)"
388echo "Searching filter=\"$FILTER\""
389echo "	attrs=\"uid\""
390echo "	base=\"$BASEDN\"..."
391echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
392echo "# 	attrs=\"uid\"" >> $SEARCHOUT
393echo "# 	base=\"$BASEDN\"..." >> $SEARCHOUT
394$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" "$FILTER" uid \
395	>> $SEARCHOUT 2>&1
396RC=$?
397#if test $RC != 0 ; then
398#	echo "Search failed ($RC)!"
399#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
400#	exit $RC
401#fi
402case $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	;;
415esac
416
417FILTER="(member=cn=Another Added Group,ou=Groups,$BASEDN)"
418echo "Searching filter=\"$FILTER\""
419echo "	attrs=\"member\""
420echo "	base=\"$BASEDN\"..."
421echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
422echo "# 	attrs=\"member\"" >> $SEARCHOUT
423echo "# 	base=\"$BASEDN\"..." >> $SEARCHOUT
424$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" "$FILTER" member \
425	>> $SEARCHOUT 2>&1
426RC=$?
427#if test $RC != 0 ; then
428#	echo "Search failed ($RC)!"
429#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
430#	exit $RC
431#fi
432case $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	;;
445esac
446
447echo "Waiting 10 seconds for cached connections to timeout..."
448sleep 10
449
450echo "Searching with a timed out connection..."
451echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
452echo "# 	attrs=\"member\"" >> $SEARCHOUT
453echo "# 	base=\"$BASEDN\"" >> $SEARCHOUT
454echo "# 	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
458RC=$?
459#if test $RC != 0 ; then
460#	echo "Search failed ($RC)!"
461#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
462#	exit $RC
463#fi
464case $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	;;
477esac
478
479# NOTE: cannot send to $SEARCHOUT because the returned entries
480# are not predictable...
481echo "Checking server-enforced size limit..."
482echo "# 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
487RC=$?
488case $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	;;
501esac
502
503# NOTE: cannot send to $SEARCHOUT because the returned entries
504# are not predictable...
505echo "Checking client-requested size limit..."
506echo "# 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
511RC=$?
512case $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	;;
525esac
526
527echo "Filtering ldapsearch results..."
528$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
529echo "Filtering original ldif used to create database..."
530$LDIFFILTER < $METAOUT > $LDIFFLT
531echo "Comparing filter output..."
532$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
533	
534if test $? != 0 ; then
535	echo "comparison failed - meta search/modification didn't succeed"
536	test $KILLSERVERS != no && kill -HUP $KILLPIDS
537	exit 1
538fi
539
540BASEDN="o=Example,c=US"
541echo "Changing password to database \"$BASEDN\"..."
542$LDAPPASSWD -h $LOCALHOST -p $PORT3 -D "cn=Manager,$BASEDN" -w $PASSWD \
543	-s $PASSWD "cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN" \
544	>> $TESTOUT 2>&1
545RC=$?
546#if test $RC != 0 ; then
547#	echo "Passwd ExOp failed ($RC)!"
548#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
549#	exit $RC
550#fi
551case $RC in 
552	0)
553	;;
554	51)
555		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
556		test $KILLSERVERS != no && kill -HUP $KILLPIDS
557		exit 0
558	;;
559	*)
560		echo "Passwd ExOp failed ($RC)!"
561		test $KILLSERVERS != no && kill -HUP $KILLPIDS
562		exit $RC
563	;;
564esac
565
566echo "Binding with newly changed password to database \"$BASEDN\"..."
567$LDAPWHOAMI -h $LOCALHOST -p $PORT3 \
568	-D "cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN" \
569	-w $PASSWD >> $TESTOUT 2>&1
570RC=$?
571#if test $RC != 0 ; then
572#	echo "WhoAmI failed ($RC)!"
573#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
574#	exit $RC
575#fi
576case $RC in 
577	0)
578	;;
579	51)
580		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
581	;;
582	*)
583		echo "WhoAmI failed ($RC)!"
584		test $KILLSERVERS != no && kill -HUP $KILLPIDS
585		exit $RC
586	;;
587esac
588
589echo "Binding as newly added user to database \"$BASEDN\"..."
590$LDAPWHOAMI -h $LOCALHOST -p $PORT3 \
591	-D "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
592	-w $PASSWD >> $TESTOUT 2>&1
593RC=$?
594#if test $RC != 0 ; then
595#	echo "WhoAmI failed ($RC)!"
596#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
597#	exit $RC
598#fi
599case $RC in 
600	0)
601	;;
602	51)
603		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
604	;;
605	*)
606		echo "WhoAmI failed ($RC)!"
607		test $KILLSERVERS != no && kill -HUP $KILLPIDS
608		exit $RC
609	;;
610esac
611
612echo "Changing password to database \"$BASEDN\"..."
613$LDAPPASSWD -h $LOCALHOST -p $PORT3 -D "cn=Manager,$BASEDN" -w $PASSWD \
614	-s meta "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
615	>> $TESTOUT 2>&1
616RC=$?
617#if test $RC != 0 ; then
618#	echo "Passwd ExOp failed ($RC)!"
619#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
620#	exit $RC
621#fi
622case $RC in 
623	0)
624	;;
625	51)
626		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
627		test $KILLSERVERS != no && kill -HUP $KILLPIDS
628		exit 0
629	;;
630	*)
631		echo "Passwd ExOp failed ($RC)!"
632		test $KILLSERVERS != no && kill -HUP $KILLPIDS
633		exit $RC
634	;;
635esac
636
637echo "Binding with newly changed password to database \"$BASEDN\"..."
638$LDAPWHOAMI -h $LOCALHOST -p $PORT3 \
639	-D "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
640	-w meta >> $TESTOUT 2>&1
641RC=$?
642#if test $RC != 0 ; then
643#	echo "WhoAmI failed ($RC)!"
644#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
645#	exit $RC
646#fi
647case $RC in 
648	0)
649	;;
650	51)
651		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
652	;;
653	*)
654		echo "WhoAmI failed ($RC)!"
655		test $KILLSERVERS != no && kill -HUP $KILLPIDS
656		exit $RC
657	;;
658esac
659
660echo "Binding with incorrect password to database \"$BASEDN\"..."
661$LDAPWHOAMI -h $LOCALHOST -p $PORT3 \
662	-D "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
663	-w bogus >> $TESTOUT 2>&1
664RC=$?
665#if test $RC != 0 ; then
666#	echo "WhoAmI failed ($RC)!"
667#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
668#	exit $RC
669#fi
670case $RC,$BACKEND in
671	0,null)
672	;;
673	0,*)
674		echo "WhoAmI should have failed ($RC)!"
675		test $KILLSERVERS != no && kill -HUP $KILLPIDS
676		exit -1
677	;;
678	51,*)
679		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
680	;;
681	*)
682	;;
683esac
684
685echo "Binding with non-existing user to database \"$BASEDN\"..."
686$LDAPWHOAMI -h $LOCALHOST -p $PORT3 \
687	-D "cn=Non-existing User,ou=Same as above,ou=Meta,$BASEDN" \
688	-w bogus >> $TESTOUT 2>&1
689RC=$?
690#if test $RC != 0 ; then
691#	echo "WhoAmI failed ($RC)!"
692#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
693#	exit $RC
694#fi
695case $RC,$BACKEND in
696	0,null)
697	;;
698	0,*)
699		echo "WhoAmI should have failed ($RC)!"
700		test $KILLSERVERS != no && kill -HUP $KILLPIDS
701		exit -1
702	;;
703	51,*)
704		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
705	;;
706	*)
707	;;
708esac
709
710echo "Comparing to database \"$BASEDN\"..."
711$LDAPCOMPARE -h $LOCALHOST -p $PORT3 \
712	"cn=Another Added Group,ou=Groups,$BASEDN" \
713	"member:cn=Added Group,ou=Groups,$BASEDN" >> $TESTOUT 2>&1
714RC=$?
715#if test $RC != 6 ; then
716#	echo "Compare failed ($RC)!"
717#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
718#	exit -1
719#fi
720case $RC,$BACKEND in
721	6,* | 5,null)
722	;;
723	51,*)
724		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
725	;;
726	*)
727		echo "Compare failed ($RC)!"
728		test $KILLSERVERS != no && kill -HUP $KILLPIDS
729		exit 1
730	;;
731esac
732
733test $KILLSERVERS != no && kill -HUP $KILLPIDS
734
735echo ">>>>> Test succeeded"
736
737test $KILLSERVERS != no && wait
738
739exit 0
740