xref: /netbsd-src/external/bsd/openldap/dist/tests/scripts/test044-dynlist (revision e670fd5c413e99c2f6a37901bb21c537fcd322d2)
12de962bdSlukem#! /bin/sh
22de962bdSlukem## This work is part of OpenLDAP Software <http://www.openldap.org/>.
32de962bdSlukem##
4*e670fd5cSchristos## Copyright 1998-2021 The OpenLDAP Foundation.
52de962bdSlukem## All rights reserved.
62de962bdSlukem##
72de962bdSlukem## Redistribution and use in source and binary forms, with or without
82de962bdSlukem## modification, are permitted only as authorized by the OpenLDAP
92de962bdSlukem## Public License.
102de962bdSlukem##
112de962bdSlukem## A copy of this license is available in the file LICENSE in the
122de962bdSlukem## top-level directory of the distribution or, alternatively, at
132de962bdSlukem## <http://www.OpenLDAP.org/license.html>.
142de962bdSlukem
152de962bdSlukemecho "running defines.sh"
162de962bdSlukem. $SRCDIR/scripts/defines.sh
172de962bdSlukem
182de962bdSlukemif test $DYNLIST = "dynlistno" ; then
192de962bdSlukem	echo "dynlist overlay not available, test skipped"
202de962bdSlukem	exit 0
212de962bdSlukemfi
222de962bdSlukem
23ef2f90d3Sadamif test $BACKEND = ldif ; then
24ef2f90d3Sadam	# dynlist+ldif fails because back-ldif lacks bi_op_compare()
25ef2f90d3Sadam	echo "$BACKEND backend unsuitable for dynlist overlay, test skipped"
26ef2f90d3Sadam	exit 0
27ef2f90d3Sadamfi
28ef2f90d3Sadam
292de962bdSlukemmkdir -p $TESTDIR $DBDIR1
302de962bdSlukem
312de962bdSlukem$SLAPPASSWD -g -n >$CONFIGPWF
322de962bdSlukemecho "rootpw `$SLAPPASSWD -T $CONFIGPWF`" >$TESTDIR/configpw.conf
332de962bdSlukem
34d11b170bStronDBIX=2
35d11b170bStron
362de962bdSlukemecho "Running slapadd to build slapd database..."
37*e670fd5cSchristos. $CONFFILTER $BACKEND < $DYNLISTCONF > $CONF1
38*e670fd5cSchristos$SLAPADD -f $CONF1 -l $LDIFORDERED
392de962bdSlukemRC=$?
402de962bdSlukemif test $RC != 0 ; then
412de962bdSlukem	echo "slapadd failed ($RC)!"
422de962bdSlukem	exit $RC
432de962bdSlukemfi
442de962bdSlukem
452de962bdSlukem
462de962bdSlukemecho "Starting slapd on TCP/IP port $PORT1..."
47*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
482de962bdSlukemPID=$!
492de962bdSlukemif test $WAIT != 0 ; then
502de962bdSlukem    echo PID $PID
512de962bdSlukem    read foo
522de962bdSlukemfi
532de962bdSlukemKILLPIDS="$PID"
542de962bdSlukem
552de962bdSlukemsleep 1
562de962bdSlukem
572de962bdSlukemecho "Testing slapd searching..."
582de962bdSlukemfor i in 0 1 2 3 4 5; do
59*e670fd5cSchristos	$LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
602de962bdSlukem		'(objectclass=*)' > /dev/null 2>&1
612de962bdSlukem	RC=$?
622de962bdSlukem	if test $RC = 0 ; then
632de962bdSlukem		break
642de962bdSlukem	fi
652de962bdSlukem	echo "Waiting 5 seconds for slapd to start..."
662de962bdSlukem	sleep 5
672de962bdSlukemdone
682de962bdSlukem
692de962bdSlukemif test $RC != 0 ; then
702de962bdSlukem	echo "ldapsearch failed ($RC)!"
712de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
722de962bdSlukem	exit $RC
732de962bdSlukemfi
742de962bdSlukem
752de962bdSlukemcat /dev/null > $SEARCHOUT
762de962bdSlukem
772de962bdSlukemLISTDN="ou=Dynamic Lists,$BASEDN"
782de962bdSlukemecho "Adding a dynamic list..."
79*e670fd5cSchristos$LDAPADD -v -D "$MANAGERDN" -H $URI1 -w $PASSWD \
802de962bdSlukem	> $TESTOUT 2>&1 << EOMODS
812de962bdSlukemdn: $LISTDN
822de962bdSlukemobjectClass: organizationalUnit
832de962bdSlukemou: Dynamic Lists
842de962bdSlukem
852de962bdSlukemdn: cn=Dynamic List,$LISTDN
862de962bdSlukemobjectClass: groupOfURLs
872de962bdSlukemcn: Dynamic List
882de962bdSlukemmemberURL: ldap:///ou=People,${BASEDN}?cn,mail?sub?(objectClass=person)
892de962bdSlukemEOMODS
902de962bdSlukem
912de962bdSlukemecho "Testing list search of all attrs..."
922de962bdSlukemecho "# Testing list search of all attrs..." >> $SEARCHOUT
93*e670fd5cSchristos$LDAPSEARCH -S "" -b "$LISTDN" -H $URI1 \
942de962bdSlukem	'(cn=Dynamic List)' '*' \
952de962bdSlukem	>> $SEARCHOUT 2>&1
962de962bdSlukemRC=$?
972de962bdSlukemif test $RC != 0 ; then
982de962bdSlukem	echo "ldapsearch failed ($RC)!"
992de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1002de962bdSlukem	exit $RC
1012de962bdSlukemfi
1022de962bdSlukem
1032de962bdSlukemecho "Testing list search of a listed attr..."
1042de962bdSlukemecho "# Testing list search of a listed attr..." >> $SEARCHOUT
105*e670fd5cSchristos$LDAPSEARCH -S "" -b "$LISTDN" -H $URI1 \
1062de962bdSlukem	'(cn=Dynamic List)' mail \
1072de962bdSlukem	>> $SEARCHOUT 2>&1
1082de962bdSlukemRC=$?
1092de962bdSlukemif test $RC != 0 ; then
1102de962bdSlukem	echo "ldapsearch failed ($RC)!"
1112de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1122de962bdSlukem	exit $RC
1132de962bdSlukemfi
1142de962bdSlukem
1152de962bdSlukemecho "Testing list search of a non-listed attr..."
1162de962bdSlukemecho "# Testing list search of a non-listed attr..." >> $SEARCHOUT
117*e670fd5cSchristos$LDAPSEARCH -S "" -b "$LISTDN" -H $URI1 \
1182de962bdSlukem	'(cn=Dynamic List)' objectClass \
1192de962bdSlukem	>> $SEARCHOUT 2>&1
1202de962bdSlukemRC=$?
1212de962bdSlukemif test $RC != 0 ; then
1222de962bdSlukem	echo "ldapsearch failed ($RC)!"
1232de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1242de962bdSlukem	exit $RC
1252de962bdSlukemfi
1262de962bdSlukem
1272de962bdSlukemecho "Testing list search with (critical) manageDSAit..."
1282de962bdSlukemecho "# Testing list search with (critical) manageDSAit..." >> $SEARCHOUT
129*e670fd5cSchristos$LDAPSEARCH -S "" -b "$LISTDN" -H $URI1 -MM \
1302de962bdSlukem	'(cn=Dynamic List)' '*' \
1312de962bdSlukem	>> $SEARCHOUT 2>&1
1322de962bdSlukemRC=$?
1332de962bdSlukemif test $RC != 0 ; then
1342de962bdSlukem	echo "ldapsearch failed ($RC)!"
1352de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1362de962bdSlukem	exit $RC
1372de962bdSlukemfi
1382de962bdSlukem
139*e670fd5cSchristosecho "Testing filtered search with all attrs..."
140*e670fd5cSchristosecho "# Testing filtered search with all attrs..." >> $SEARCHOUT
141*e670fd5cSchristos$LDAPSEARCH -S "" -b "$LISTDN" -H $URI1 \
142*e670fd5cSchristos	'(mail=jdoe@woof.net)' '*' \
143*e670fd5cSchristos	>> $SEARCHOUT 2>&1
144*e670fd5cSchristosRC=$?
145*e670fd5cSchristosif test $RC != 0 ; then
146*e670fd5cSchristos	echo "ldapsearch failed ($RC)!"
147*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
148*e670fd5cSchristos	exit $RC
149*e670fd5cSchristosfi
150*e670fd5cSchristos
151*e670fd5cSchristosecho "Testing filtered search of a listed attr..."
152*e670fd5cSchristosecho "# Testing filtered search of a listed attr..." >> $SEARCHOUT
153*e670fd5cSchristos$LDAPSEARCH -S "" -b "$LISTDN" -H $URI1 \
154*e670fd5cSchristos	'(mail=jdoe@woof.net)' mail \
155*e670fd5cSchristos	>> $SEARCHOUT 2>&1
156*e670fd5cSchristosRC=$?
157*e670fd5cSchristosif test $RC != 0 ; then
158*e670fd5cSchristos	echo "ldapsearch failed ($RC)!"
159*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
160*e670fd5cSchristos	exit $RC
161*e670fd5cSchristosfi
162*e670fd5cSchristos
163*e670fd5cSchristosecho "Testing filtered search of a non-listed attr..."
164*e670fd5cSchristosecho "# Testing filtered search of a non-listed attr..." >> $SEARCHOUT
165*e670fd5cSchristos$LDAPSEARCH -S "" -b "$LISTDN" -H $URI1 \
166*e670fd5cSchristos	'(mail=jdoe@woof.net)' objectClass \
167*e670fd5cSchristos	>> $SEARCHOUT 2>&1
168*e670fd5cSchristosRC=$?
169*e670fd5cSchristosif test $RC != 0 ; then
170*e670fd5cSchristos	echo "ldapsearch failed ($RC)!"
171*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
172*e670fd5cSchristos	exit $RC
173*e670fd5cSchristosfi
174*e670fd5cSchristos
175*e670fd5cSchristosecho "Testing filtered search of a non-present attr..."
176*e670fd5cSchristosecho "# Testing filtered search of a non-present attr..." >> $SEARCHOUT
177*e670fd5cSchristos$LDAPSEARCH -S "" -b "$LISTDN" -H $URI1 \
178*e670fd5cSchristos	'(mail=nobody@nowhere)' objectClass \
179*e670fd5cSchristos	>> $SEARCHOUT 2>&1
180*e670fd5cSchristosRC=$?
181*e670fd5cSchristosif test $RC != 0 ; then
182*e670fd5cSchristos	echo "ldapsearch failed ($RC)!"
183*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
184*e670fd5cSchristos	exit $RC
185*e670fd5cSchristosfi
186*e670fd5cSchristos
1872de962bdSlukemecho "Testing list compare..."
1882de962bdSlukemecho "# Testing list compare..." >> $SEARCHOUT
189*e670fd5cSchristos$LDAPCOMPARE -H $URI1 \
1902de962bdSlukem	"cn=Dynamic List,$LISTDN" "cn:Bjorn Jensen" \
1912de962bdSlukem	>> $SEARCHOUT 2>&1
1922de962bdSlukemRC=$?
1932de962bdSlukemcase $RC in
1942de962bdSlukem5)
1952de962bdSlukem	echo "ldapcompare returned FALSE ($RC)!"
1962de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1972de962bdSlukem	exit $RC
1982de962bdSlukem	;;
1992de962bdSlukem6)
2002de962bdSlukem	echo "ldapcompare returned TRUE ($RC)"
2012de962bdSlukem	;;
2022de962bdSlukem0)
2032de962bdSlukem	echo "ldapcompare returned success ($RC)!"
2042de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
2052de962bdSlukem	exit -1
2062de962bdSlukem	;;
2072de962bdSlukem*)
2082de962bdSlukem	echo "ldapcompare failed ($RC)!"
2092de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
2102de962bdSlukem	exit $RC
2112de962bdSlukem	;;
2122de962bdSlukemesac
2132de962bdSlukemecho "" >> $SEARCHOUT
2142de962bdSlukem
2152de962bdSlukemecho "Testing list compare (should return FALSE)..."
2162de962bdSlukemecho "# Testing list compare (should return FALSE)..." >> $SEARCHOUT
217*e670fd5cSchristos$LDAPCOMPARE -H $URI1 \
2182de962bdSlukem	"cn=Dynamic List,$LISTDN" "cn:FALSE" \
2192de962bdSlukem	>> $SEARCHOUT 2>&1
2202de962bdSlukemRC=$?
2212de962bdSlukemcase $RC in
2222de962bdSlukem5)
2232de962bdSlukem	echo "ldapcompare returned FALSE ($RC)"
2242de962bdSlukem	;;
2252de962bdSlukem6)
2262de962bdSlukem	echo "ldapcompare returned TRUE ($RC)!"
2272de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
2282de962bdSlukem	exit $RC
2292de962bdSlukem	;;
2302de962bdSlukem0)
2312de962bdSlukem	echo "ldapcompare returned success ($RC)!"
2322de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
2332de962bdSlukem	exit -1
2342de962bdSlukem	;;
2352de962bdSlukem*)
2362de962bdSlukem	echo "ldapcompare failed ($RC)!"
2372de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
2382de962bdSlukem	exit $RC
2392de962bdSlukem	;;
2402de962bdSlukemesac
2412de962bdSlukemecho "" >> $SEARCHOUT
2422de962bdSlukem
2432de962bdSlukemecho "Testing list compare (should return UNDEFINED)..."
2442de962bdSlukemecho "# Testing list compare (should return UNDEFINED)..." >> $SEARCHOUT
245*e670fd5cSchristos$LDAPCOMPARE -H $URI1 \
2462de962bdSlukem	"cn=Dynamic List,$LISTDN" "dc:UNDEFINED" \
2472de962bdSlukem	>> $SEARCHOUT 2>&1
2482de962bdSlukemRC=$?
2492de962bdSlukemcase $RC in
2502de962bdSlukem5)
2512de962bdSlukem	echo "ldapcompare returned FALSE ($RC)!"
2522de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
2532de962bdSlukem	exit $RC
2542de962bdSlukem	;;
2552de962bdSlukem6)
2562de962bdSlukem	echo "ldapcompare returned TRUE ($RC)!"
2572de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
2582de962bdSlukem	exit $RC
2592de962bdSlukem	;;
2602de962bdSlukem16|32)
2612de962bdSlukem	echo "ldapcompare returned UNDEFINED ($RC)"
2622de962bdSlukem	;;
2632de962bdSlukem0)
2642de962bdSlukem	echo "ldapcompare returned success ($RC)!"
2652de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
2662de962bdSlukem	exit -1
2672de962bdSlukem	;;
2682de962bdSlukem*)
2692de962bdSlukem	echo "ldapcompare failed ($RC)"
2702de962bdSlukem	;;
2712de962bdSlukemesac
2722de962bdSlukemecho "" >> $SEARCHOUT
2732de962bdSlukem
2742de962bdSlukemecho "Testing list compare with manageDSAit..."
2752de962bdSlukemecho "# Testing list compare with manageDSAit..." >> $SEARCHOUT
276*e670fd5cSchristos$LDAPCOMPARE -H $URI1 -MM \
2772de962bdSlukem	"cn=Dynamic List,$LISTDN" "cn:Bjorn Jensen" \
2782de962bdSlukem	>> $SEARCHOUT 2>&1
2792de962bdSlukemRC=$?
2802de962bdSlukemcase $RC in
2812de962bdSlukem5)
2822de962bdSlukem	echo "ldapcompare returned FALSE ($RC)"
2832de962bdSlukem	;;
2842de962bdSlukem6)
2852de962bdSlukem	echo "ldapcompare returned TRUE ($RC)!"
2862de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
2872de962bdSlukem	exit $RC
2882de962bdSlukem	;;
2892de962bdSlukem0)
2902de962bdSlukem	echo "ldapcompare returned success ($RC)!"
2912de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
2922de962bdSlukem	exit -1
2932de962bdSlukem	;;
2942de962bdSlukem*)
2952de962bdSlukem	echo "ldapcompare failed ($RC)!"
2962de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
2972de962bdSlukem	exit $RC
2982de962bdSlukem	;;
2992de962bdSlukemesac
3002de962bdSlukemecho "" >> $SEARCHOUT
3012de962bdSlukem
3022de962bdSlukemecho "Reconfiguring slapd..."
303*e670fd5cSchristos$LDAPMODIFY -x -D cn=config -H $URI1 -y $CONFIGPWF > \
3042de962bdSlukem	$TESTOUT 2>&1 << EOMODS
3052de962bdSlukemversion: 1
306d11b170bStrondn: olcOverlay={0}dynlist,olcDatabase={$DBIX}$BACKEND,cn=config
3072de962bdSlukemchangetype: modify
308*e670fd5cSchristosdelete: olcDynListAttrSet
309*e670fd5cSchristosolcDynListAttrSet: {0}
3102de962bdSlukem-
311*e670fd5cSchristosadd: olcDynListAttrSet
312*e670fd5cSchristosolcDynListAttrSet: groupOfURLs memberURL sn:cn mail
3134e6df137Slukem-
3144e6df137SlukemEOMODS
3154e6df137Slukem
316*e670fd5cSchristosRC=$?
317*e670fd5cSchristosif test $RC != 0 ; then
318*e670fd5cSchristos	echo "ldapmodify failed ($RC)!"
319*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
320*e670fd5cSchristos	exit $RC
321*e670fd5cSchristosfi
322*e670fd5cSchristos
3234e6df137Slukemecho "==========================================================" >> $LOG1
3244e6df137Slukem
3254e6df137Slukemecho "Testing attribute mapping"
3264e6df137Slukem
3274e6df137Slukemecho "Testing list search of all (mapped) attrs..."
3284e6df137Slukemecho "# Testing list search of all (mapped) attrs..." >> $SEARCHOUT
329*e670fd5cSchristos$LDAPSEARCH -S "" -b "$LISTDN" -H $URI1 \
3304e6df137Slukem	'(cn=Dynamic List)' '*' \
3314e6df137Slukem	>> $SEARCHOUT 2>&1
3324e6df137SlukemRC=$?
3334e6df137Slukemif test $RC != 0 ; then
3344e6df137Slukem	echo "ldapsearch failed ($RC)!"
3354e6df137Slukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
3364e6df137Slukem	exit $RC
3374e6df137Slukemfi
3384e6df137Slukem
3394e6df137Slukemecho "Testing list search of a (mapped) listed attr..."
3404e6df137Slukemecho "# Testing list search of a (mapped) listed attr..." >> $SEARCHOUT
341*e670fd5cSchristos$LDAPSEARCH -S "" -b "$LISTDN" -H $URI1 \
3424e6df137Slukem	'(cn=Dynamic List)' sn \
3434e6df137Slukem	>> $SEARCHOUT 2>&1
3444e6df137SlukemRC=$?
3454e6df137Slukemif test $RC != 0 ; then
3464e6df137Slukem	echo "ldapsearch failed ($RC)!"
3474e6df137Slukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
3484e6df137Slukem	exit $RC
3494e6df137Slukemfi
3504e6df137Slukem
3514e6df137Slukemecho "Testing list search of a (n unmapped) listed attr..."
3524e6df137Slukemecho "# Testing list search of a (n unmapped) listed attr..." >> $SEARCHOUT
353*e670fd5cSchristos$LDAPSEARCH -S "" -b "$LISTDN" -H $URI1 \
3544e6df137Slukem	'(cn=Dynamic List)' mail \
3554e6df137Slukem	>> $SEARCHOUT 2>&1
3564e6df137SlukemRC=$?
3574e6df137Slukemif test $RC != 0 ; then
3584e6df137Slukem	echo "ldapsearch failed ($RC)!"
3594e6df137Slukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
3604e6df137Slukem	exit $RC
3614e6df137Slukemfi
3624e6df137Slukem
3634e6df137Slukemecho "Testing list compare (mapped attrs) ..."
3644e6df137Slukemecho "# Testing list compare (mapped attrs) ..." >> $SEARCHOUT
365*e670fd5cSchristos$LDAPCOMPARE -H $URI1 \
3664e6df137Slukem	"cn=Dynamic List,$LISTDN" "sn:Bjorn Jensen" \
3674e6df137Slukem	>> $SEARCHOUT 2>&1
3684e6df137SlukemRC=$?
3694e6df137Slukemcase $RC in
3704e6df137Slukem5)
3714e6df137Slukem	echo "ldapcompare returned FALSE ($RC)!"
3724e6df137Slukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
3734e6df137Slukem	exit $RC
3744e6df137Slukem	;;
3754e6df137Slukem6)
3764e6df137Slukem	echo "ldapcompare returned TRUE ($RC)"
3774e6df137Slukem	;;
3784e6df137Slukem0)
3794e6df137Slukem	echo "ldapcompare returned success ($RC)!"
3804e6df137Slukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
3814e6df137Slukem	exit -1
3824e6df137Slukem	;;
3834e6df137Slukem*)
3844e6df137Slukem	echo "ldapcompare failed ($RC)!"
3854e6df137Slukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
3864e6df137Slukem	exit $RC
3874e6df137Slukem	;;
3884e6df137Slukemesac
3894e6df137Slukemecho "" >> $SEARCHOUT
3904e6df137Slukem
3914e6df137Slukemecho "Testing list compare (mapped attrs; should return FALSE)..."
3924e6df137Slukemecho "# Testing list compare (mapped attrs; should return FALSE)..." >> $SEARCHOUT
393*e670fd5cSchristos$LDAPCOMPARE -H $URI1 \
3944e6df137Slukem	"cn=Dynamic List,$LISTDN" "sn:FALSE" \
3954e6df137Slukem	>> $SEARCHOUT 2>&1
3964e6df137SlukemRC=$?
3974e6df137Slukemcase $RC in
3984e6df137Slukem5)
3994e6df137Slukem	echo "ldapcompare returned FALSE ($RC)"
4004e6df137Slukem	;;
4014e6df137Slukem6)
4024e6df137Slukem	echo "ldapcompare returned TRUE ($RC)!"
4034e6df137Slukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
4044e6df137Slukem	exit $RC
4054e6df137Slukem	;;
4064e6df137Slukem0)
4074e6df137Slukem	echo "ldapcompare returned success ($RC)!"
4084e6df137Slukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
4094e6df137Slukem	exit -1
4104e6df137Slukem	;;
4114e6df137Slukem*)
4124e6df137Slukem	echo "ldapcompare failed ($RC)!"
4134e6df137Slukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
4144e6df137Slukem	exit $RC
4154e6df137Slukem	;;
4164e6df137Slukemesac
4174e6df137Slukemecho "" >> $SEARCHOUT
4184e6df137Slukem
4194e6df137Slukemecho "Reconfiguring slapd..."
420*e670fd5cSchristos$LDAPMODIFY -x -D cn=config -H $URI1 -y $CONFIGPWF > \
4214e6df137Slukem	$TESTOUT 2>&1 << EOMODS
4224e6df137Slukemversion: 1
423d11b170bStrondn: olcOverlay={0}dynlist,olcDatabase={$DBIX}$BACKEND,cn=config
4244e6df137Slukemchangetype: modify
425*e670fd5cSchristosdelete: olcDynListAttrSet
426*e670fd5cSchristosolcDynListAttrSet: {0}
4274e6df137Slukem-
428*e670fd5cSchristosadd: olcDynListAttrSet
429*e670fd5cSchristosolcDynListAttrSet: groupOfURLs memberURL member
4304e6df137Slukem-
4312de962bdSlukemEOMODS
4322de962bdSlukem
433*e670fd5cSchristosRC=$?
434*e670fd5cSchristosif test $RC != 0 ; then
435*e670fd5cSchristos	echo "ldapmodify failed ($RC)!"
436*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
437*e670fd5cSchristos	exit $RC
438*e670fd5cSchristosfi
439*e670fd5cSchristos
4402de962bdSlukemecho "==========================================================" >> $LOG1
4412de962bdSlukem
4422de962bdSlukemecho "Adding a dynamic list..."
443*e670fd5cSchristos$LDAPADD -v -D "$MANAGERDN" -H $URI1 -w $PASSWD \
4442de962bdSlukem	> $TESTOUT 2>&1 << EOMODS
4452de962bdSlukemdn: cn=Dynamic List of Members,$LISTDN
4462de962bdSlukemobjectClass: groupOfURLs
4472de962bdSlukemcn: Dynamic List of Members
4482de962bdSlukemmemberURL: ldap:///ou=People,${BASEDN}??sub?(objectClass=person)
4492de962bdSlukemEOMODS
4502de962bdSlukem
4512de962bdSlukemecho "Testing list search of all attrs..."
4522de962bdSlukemecho "# Testing list search of all attrs..." >> $SEARCHOUT
453*e670fd5cSchristos$LDAPSEARCH -S "" -b "$LISTDN" -H $URI1 \
4542de962bdSlukem	'(cn=Dynamic List of Members)' '*' \
4552de962bdSlukem	>> $SEARCHOUT 2>&1
4562de962bdSlukemRC=$?
4572de962bdSlukemif test $RC != 0 ; then
4582de962bdSlukem	echo "ldapsearch failed ($RC)!"
4592de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
4602de962bdSlukem	exit $RC
4612de962bdSlukemfi
4622de962bdSlukem
4632de962bdSlukemecho "Testing list search of a listed attr..."
4642de962bdSlukemecho "# Testing list search of a listed attr..." >> $SEARCHOUT
465*e670fd5cSchristos$LDAPSEARCH -S "" -b "$LISTDN" -H $URI1 \
4662de962bdSlukem	'(cn=Dynamic List of Members)' member \
4672de962bdSlukem	>> $SEARCHOUT 2>&1
4682de962bdSlukemRC=$?
4692de962bdSlukemif test $RC != 0 ; then
4702de962bdSlukem	echo "ldapsearch failed ($RC)!"
4712de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
4722de962bdSlukem	exit $RC
4732de962bdSlukemfi
4742de962bdSlukem
4752de962bdSlukemecho "Testing list search of a non-listed attr..."
4762de962bdSlukemecho "# Testing list search of a non-listed attr..." >> $SEARCHOUT
477*e670fd5cSchristos$LDAPSEARCH -S "" -b "$LISTDN" -H $URI1 \
4782de962bdSlukem	'(cn=Dynamic List of Members)' objectClass \
4792de962bdSlukem	>> $SEARCHOUT 2>&1
4802de962bdSlukemRC=$?
4812de962bdSlukemif test $RC != 0 ; then
4822de962bdSlukem	echo "ldapsearch failed ($RC)!"
4832de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
4842de962bdSlukem	exit $RC
4852de962bdSlukemfi
4862de962bdSlukem
4872de962bdSlukemecho "Testing list search with (critical) manageDSAit..."
4882de962bdSlukemecho "# Testing list search with (critical) manageDSAit..." >> $SEARCHOUT
489*e670fd5cSchristos$LDAPSEARCH -S "" -b "$LISTDN" -H $URI1 -MM \
4902de962bdSlukem	'(&(cn=Dynamic List of Members)(objectClass=groupOfURLs))' '*' \
4912de962bdSlukem	>> $SEARCHOUT 2>&1
4922de962bdSlukemRC=$?
4932de962bdSlukemif test $RC != 0 ; then
4942de962bdSlukem	echo "ldapsearch failed ($RC)!"
4952de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
4962de962bdSlukem	exit $RC
4972de962bdSlukemfi
4982de962bdSlukem
4992de962bdSlukemCMPDN="$BJORNSDN"
5002de962bdSlukemecho "Testing list compare..."
5012de962bdSlukemecho "# Testing list compare..." >> $SEARCHOUT
502*e670fd5cSchristos$LDAPCOMPARE -H $URI1 \
5032de962bdSlukem	"cn=Dynamic List of Members,$LISTDN" "member:$CMPDN" \
5042de962bdSlukem	>> $SEARCHOUT 2>&1
5052de962bdSlukemRC=$?
5062de962bdSlukemcase $RC in
5072de962bdSlukem5)
5082de962bdSlukem	echo "ldapcompare returned FALSE ($RC)!"
5092de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
5102de962bdSlukem	exit $RC
5112de962bdSlukem	;;
5122de962bdSlukem6)
5132de962bdSlukem	echo "ldapcompare returned TRUE ($RC)"
5142de962bdSlukem	;;
5152de962bdSlukem0)
5162de962bdSlukem	echo "ldapcompare returned success ($RC)!"
5172de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
5182de962bdSlukem	exit -1
5192de962bdSlukem	;;
5202de962bdSlukem*)
5212de962bdSlukem	echo "ldapcompare failed ($RC)!"
5222de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
5232de962bdSlukem	exit $RC
5242de962bdSlukem	;;
5252de962bdSlukemesac
5262de962bdSlukemecho "" >> $SEARCHOUT
5272de962bdSlukem
5284e27b3e8SchristosCMPDN="$BADBJORNSDN"
5294e27b3e8Schristosecho "Testing list compare (should return FALSE)..."
5304e27b3e8Schristosecho "# Testing list compare... (should return FALSE)" >> $SEARCHOUT
531*e670fd5cSchristos$LDAPCOMPARE -H $URI1 \
5324e27b3e8Schristos	"cn=Dynamic List of Members,$LISTDN" "member:$CMPDN" \
5334e27b3e8Schristos	>> $SEARCHOUT 2>&1
5344e27b3e8SchristosRC=$?
5354e27b3e8Schristoscase $RC in
5364e27b3e8Schristos5)
5374e27b3e8Schristos	echo "ldapcompare returned FALSE ($RC)"
5384e27b3e8Schristos	;;
5394e27b3e8Schristos6)
5404e27b3e8Schristos	echo "ldapcompare returned TRUE ($RC)!"
5414e27b3e8Schristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
5424e27b3e8Schristos	exit $RC
5434e27b3e8Schristos	;;
5444e27b3e8Schristos0)
5454e27b3e8Schristos	echo "ldapcompare returned success ($RC)!"
5464e27b3e8Schristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
5474e27b3e8Schristos	exit -1
5484e27b3e8Schristos	;;
5494e27b3e8Schristos*)
5504e27b3e8Schristos	echo "ldapcompare failed ($RC)!"
5514e27b3e8Schristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
5524e27b3e8Schristos	exit $RC
5534e27b3e8Schristos	;;
5544e27b3e8Schristosesac
5554e27b3e8Schristosecho "" >> $SEARCHOUT
5564e27b3e8Schristos
5574e27b3e8SchristosCMPDN="$BJORNSDN"
5582de962bdSlukemecho "Testing list compare (should return FALSE)..."
5592de962bdSlukemecho "# Testing list compare (should return FALSE)..." >> $SEARCHOUT
560*e670fd5cSchristos$LDAPCOMPARE -H $URI1 \
5612de962bdSlukem	"cn=Dynamic List of Members,$LISTDN" "member:cn=Foo Bar" \
5622de962bdSlukem	>> $SEARCHOUT 2>&1
5632de962bdSlukemRC=$?
5642de962bdSlukemcase $RC in
5652de962bdSlukem5)
5662de962bdSlukem	echo "ldapcompare returned FALSE ($RC)"
5672de962bdSlukem	;;
5682de962bdSlukem6)
5692de962bdSlukem	echo "ldapcompare returned TRUE ($RC)!"
5702de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
5712de962bdSlukem	exit $RC
5722de962bdSlukem	;;
5732de962bdSlukem0)
5742de962bdSlukem	echo "ldapcompare returned success ($RC)!"
5752de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
5762de962bdSlukem	exit -1
5772de962bdSlukem	;;
5782de962bdSlukem*)
5792de962bdSlukem	echo "ldapcompare failed ($RC)!"
5802de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
5812de962bdSlukem	exit $RC
5822de962bdSlukem	;;
5832de962bdSlukemesac
5842de962bdSlukemecho "" >> $SEARCHOUT
5852de962bdSlukem
586*e670fd5cSchristosecho "Testing list compare with manageDSAit (should return UNDEFINED)..."
587*e670fd5cSchristosecho "# Testing list compare with manageDSAit (should return UNDEFINED)..." >> $SEARCHOUT
588*e670fd5cSchristos$LDAPCOMPARE -H $URI1 -MM \
5892de962bdSlukem	"cn=Dynamic List,$LISTDN" "member:$CMPDN" \
5902de962bdSlukem	>> $SEARCHOUT 2>&1
5912de962bdSlukemRC=$?
5922de962bdSlukemcase $RC in
5932de962bdSlukem5)
5942de962bdSlukem	echo "ldapcompare returned FALSE ($RC)"
595*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
596*e670fd5cSchristos	exit $RC
5972de962bdSlukem	;;
5982de962bdSlukem6)
5992de962bdSlukem	echo "ldapcompare returned TRUE ($RC)!"
6002de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
6012de962bdSlukem	exit $RC
6022de962bdSlukem	;;
603*e670fd5cSchristos16|32)
604*e670fd5cSchristos	echo "ldapcompare returned UNDEFINED ($RC)"
605*e670fd5cSchristos	;;
6062de962bdSlukem0)
6072de962bdSlukem	echo "ldapcompare returned success ($RC)!"
6082de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
6092de962bdSlukem	exit -1
6102de962bdSlukem	;;
6112de962bdSlukem*)
6122de962bdSlukem	echo "ldapcompare failed ($RC)!"
6132de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
6142de962bdSlukem	exit $RC
6152de962bdSlukem	;;
6162de962bdSlukemesac
6172de962bdSlukemecho "" >> $SEARCHOUT
6182de962bdSlukem
6192de962bdSlukemecho "==========================================================" >> $LOG1
6202de962bdSlukem
6212de962bdSlukemecho "Testing dgIdentity..."
6222de962bdSlukem
6232de962bdSlukem# Set ACL, require authentication to get list contents
624*e670fd5cSchristos$LDAPMODIFY -x -D cn=config -H $URI1 -y $CONFIGPWF > \
6252de962bdSlukem	$TESTOUT 2>&1 << EOMODS
6262de962bdSlukemversion: 1
627d11b170bStrondn: olcDatabase={$DBIX}$BACKEND,cn=config
6282de962bdSlukemchangetype: modify
6292de962bdSlukemadd: olcAccess
6302de962bdSlukemolcAccess: to dn.base="cn=Dynamic List of Members,$LISTDN" by * read
6312de962bdSlukemolcAccess: to * by users read by * search
6322de962bdSlukemEOMODS
6332de962bdSlukem
634*e670fd5cSchristosRC=$?
635*e670fd5cSchristosif test $RC != 0 ; then
636*e670fd5cSchristos	echo "ldapmodify failed ($RC)!"
637*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
638*e670fd5cSchristos	exit $RC
639*e670fd5cSchristosfi
640*e670fd5cSchristos
6412de962bdSlukemecho "Testing list search without dgIdentity..."
6422de962bdSlukemecho "# Testing list search without dgIdentity..." >> $SEARCHOUT
643*e670fd5cSchristos$LDAPSEARCH -S "" -b "$LISTDN" -H $URI1 \
6442de962bdSlukem	'(cn=Dynamic List of Members)' '*' \
6452de962bdSlukem	>> $SEARCHOUT 2>&1
6462de962bdSlukemRC=$?
6472de962bdSlukemif test $RC != 0 ; then
6482de962bdSlukem	echo "ldapsearch failed ($RC)!"
6492de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
6502de962bdSlukem	exit $RC
6512de962bdSlukemfi
6522de962bdSlukem
653*e670fd5cSchristos$LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD \
6542de962bdSlukem	> $TESTOUT 2>&1 << EOMODS
6552de962bdSlukemdn: cn=Dynamic List of Members,$LISTDN
6562de962bdSlukemchangetype: modify
6572de962bdSlukemadd: objectClass
6582de962bdSlukemobjectClass: dgIdentityAux
6592de962bdSlukem-
6602de962bdSlukemadd: dgIdentity
6612de962bdSlukemdgIdentity: $CMPDN
6622de962bdSlukemEOMODS
6632de962bdSlukem
664*e670fd5cSchristosRC=$?
665*e670fd5cSchristosif test $RC != 0 ; then
666*e670fd5cSchristos	echo "ldapmodify failed ($RC)!"
667*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
668*e670fd5cSchristos	exit $RC
669*e670fd5cSchristosfi
670*e670fd5cSchristos
6712de962bdSlukemecho "Testing list search with dgIdentity..."
6722de962bdSlukemecho "# Testing list search with dgIdentity..." >> $SEARCHOUT
673*e670fd5cSchristos$LDAPSEARCH -S "" -b "$LISTDN" -H $URI1 \
6742de962bdSlukem	'(cn=Dynamic List of Members)' '*' \
6752de962bdSlukem	>> $SEARCHOUT 2>&1
6762de962bdSlukemRC=$?
6772de962bdSlukemif test $RC != 0 ; then
6782de962bdSlukem	echo "ldapsearch failed ($RC)!"
6792de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
6802de962bdSlukem	exit $RC
6812de962bdSlukemfi
6822de962bdSlukem
6832de962bdSlukemecho "Testing dgAuthz..."
6842de962bdSlukem
6852de962bdSlukemCMPDN="cn=Bjorn Jensen,ou=Information Technology Division,ou=People,$BASEDN"
686*e670fd5cSchristos$LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD \
6872de962bdSlukem	> $TESTOUT 2>&1 << EOMODS
6882de962bdSlukemdn: cn=Dynamic List of Members,$LISTDN
6892de962bdSlukemchangetype: modify
6902de962bdSlukemadd: dgAuthz
6912de962bdSlukemdgAuthz: dn:$BABSDN
6922de962bdSlukemEOMODS
6932de962bdSlukem
694*e670fd5cSchristosRC=$?
695*e670fd5cSchristosif test $RC != 0 ; then
696*e670fd5cSchristos	echo "ldapmodify failed ($RC)!"
697*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
698*e670fd5cSchristos	exit $RC
699*e670fd5cSchristosfi
700*e670fd5cSchristos
7012de962bdSlukemecho "Testing list search with dgIdentity and dgAuthz anonymously..."
7022de962bdSlukemecho "# Testing list search with dgIdentity and dgAuthz anonymously..." >> $SEARCHOUT
703*e670fd5cSchristos$LDAPSEARCH -S "" -b "$LISTDN" -H $URI1 \
7042de962bdSlukem	'(cn=Dynamic List of Members)' '*' \
7052de962bdSlukem	>> $SEARCHOUT 2>&1
7062de962bdSlukemRC=$?
7072de962bdSlukemif test $RC != 0 ; then
7082de962bdSlukem	echo "ldapsearch failed ($RC)!"
7092de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
7102de962bdSlukem	exit $RC
7112de962bdSlukemfi
7122de962bdSlukem
7132de962bdSlukemecho "Testing list search with dgIdentity and dgAuthz as the authorized identity..."
7142de962bdSlukemecho "# Testing list search with dgIdentity and dgAuthz as the authorized identity..." >> $SEARCHOUT
715*e670fd5cSchristos$LDAPSEARCH -S "" -b "$LISTDN" -H $URI1 \
7162de962bdSlukem	-D "$BABSDN" -w bjensen \
7172de962bdSlukem	'(cn=Dynamic List of Members)' '*' \
7182de962bdSlukem	>> $SEARCHOUT 2>&1
7192de962bdSlukemRC=$?
7202de962bdSlukemif test $RC != 0 ; then
7212de962bdSlukem	echo "ldapsearch failed ($RC)!"
7222de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
7232de962bdSlukem	exit $RC
7242de962bdSlukemfi
7252de962bdSlukem
726*e670fd5cSchristosecho "Reconfiguring slapd..."
727*e670fd5cSchristos$LDAPMODIFY -x -D cn=config -H $URI1 -y $CONFIGPWF > \
728*e670fd5cSchristos	$TESTOUT 2>&1 << EOMODS
729*e670fd5cSchristosversion: 1
730*e670fd5cSchristosdn: olcOverlay={0}dynlist,olcDatabase={$DBIX}$BACKEND,cn=config
731*e670fd5cSchristoschangetype: modify
732*e670fd5cSchristosdelete: olcDynListAttrSet
733*e670fd5cSchristosolcDynListAttrSet: {0}
734*e670fd5cSchristos-
735*e670fd5cSchristosadd: olcDynListAttrSet
736*e670fd5cSchristosolcDynListAttrSet: groupOfURLs memberURL member+memberOf
737*e670fd5cSchristos-
738*e670fd5cSchristosEOMODS
739*e670fd5cSchristos
740*e670fd5cSchristosRC=$?
741*e670fd5cSchristosif test $RC != 0 ; then
742*e670fd5cSchristos	echo "ldapmodify failed ($RC)!"
743*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
744*e670fd5cSchristos	exit $RC
745*e670fd5cSchristosfi
746*e670fd5cSchristos
747*e670fd5cSchristosecho "==========================================================" >> $LOG1
748*e670fd5cSchristos
749*e670fd5cSchristosecho "Testing memberOf functionality..."
750*e670fd5cSchristosecho "# Testing memberOf functionality..." >> $SEARCHOUT
751*e670fd5cSchristos$LDAPSEARCH -S "" -b "ou=People,$BASEDN" -H $URI1 \
752*e670fd5cSchristos	-D "$BABSDN" -w bjensen \
753*e670fd5cSchristos	'(cn=Mark Elliot)' '*' 'memberOf' \
754*e670fd5cSchristos	>> $SEARCHOUT 2>&1
755*e670fd5cSchristosRC=$?
756*e670fd5cSchristosif test $RC != 0 ; then
757*e670fd5cSchristos	echo "ldapsearch failed ($RC)!"
758*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
759*e670fd5cSchristos	exit $RC
760*e670fd5cSchristosfi
761*e670fd5cSchristos
762*e670fd5cSchristosecho "Testing filtered memberOf functionality..."
763*e670fd5cSchristosecho "# Testing filtered memberOf functionality..." >> $SEARCHOUT
764*e670fd5cSchristos$LDAPSEARCH -S "" -b "ou=People,$BASEDN" -H $URI1 \
765*e670fd5cSchristos	-D "$BABSDN" -w bjensen \
766*e670fd5cSchristos	'(&(memberOf=cn=Dynamic List of Members,ou=Dynamic Lists,dc=example,dc=com)(cn=Mark Elliot))' '*' 'memberOf' \
767*e670fd5cSchristos	>> $SEARCHOUT 2>&1
768*e670fd5cSchristosRC=$?
769*e670fd5cSchristosif test $RC != 0 ; then
770*e670fd5cSchristos	echo "ldapsearch failed ($RC)!"
771*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
772*e670fd5cSchristos	exit $RC
773*e670fd5cSchristosfi
774*e670fd5cSchristos
775*e670fd5cSchristosecho "Reconfiguring slapd..."
776*e670fd5cSchristos$LDAPMODIFY -x -D cn=config -H $URI1 -y $CONFIGPWF > \
777*e670fd5cSchristos	$TESTOUT 2>&1 << EOMODS
778*e670fd5cSchristosversion: 1
779*e670fd5cSchristosdn: olcOverlay={0}dynlist,olcDatabase={$DBIX}$BACKEND,cn=config
780*e670fd5cSchristoschangetype: modify
781*e670fd5cSchristosdelete: olcDynListAttrSet
782*e670fd5cSchristosolcDynListAttrSet: {0}
783*e670fd5cSchristos-
784*e670fd5cSchristosadd: olcDynListAttrSet
785*e670fd5cSchristosolcDynListAttrSet: groupOfURLs memberURL member+memberOf@groupOfNames
786*e670fd5cSchristos-
787*e670fd5cSchristosEOMODS
788*e670fd5cSchristos
789*e670fd5cSchristosRC=$?
790*e670fd5cSchristosif test $RC != 0 ; then
791*e670fd5cSchristos	echo "ldapmodify failed ($RC)!"
792*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
793*e670fd5cSchristos	exit $RC
794*e670fd5cSchristosfi
795*e670fd5cSchristos
796*e670fd5cSchristosecho "==========================================================" >> $LOG1
797*e670fd5cSchristos
798*e670fd5cSchristosecho "Testing static group memberOf functionality..."
799*e670fd5cSchristosecho "# Testing static group memberOf functionality..." >> $SEARCHOUT
800*e670fd5cSchristos$LDAPSEARCH -S "" -b "ou=People,$BASEDN" -H $URI1 \
801*e670fd5cSchristos	-D "$BABSDN" -w bjensen \
802*e670fd5cSchristos	'(cn=Mark Elliot)' '*' 'memberOf' \
803*e670fd5cSchristos	>> $SEARCHOUT 2>&1
804*e670fd5cSchristosRC=$?
805*e670fd5cSchristosif test $RC != 0 ; then
806*e670fd5cSchristos	echo "ldapsearch failed ($RC)!"
807*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
808*e670fd5cSchristos	exit $RC
809*e670fd5cSchristosfi
810*e670fd5cSchristos
811*e670fd5cSchristosecho "Reconfiguring slapd..."
812*e670fd5cSchristos$LDAPMODIFY -x -D cn=config -H $URI1 -y $CONFIGPWF > \
813*e670fd5cSchristos	$TESTOUT 2>&1 << EOMODS
814*e670fd5cSchristosversion: 1
815*e670fd5cSchristosdn: olcOverlay={0}dynlist,olcDatabase={$DBIX}$BACKEND,cn=config
816*e670fd5cSchristoschangetype: modify
817*e670fd5cSchristosdelete: olcDynListAttrSet
818*e670fd5cSchristosolcDynListAttrSet: {0}
819*e670fd5cSchristos-
820*e670fd5cSchristosadd: olcDynListAttrSet
821*e670fd5cSchristosolcDynListAttrSet: groupOfURLs memberURL member+memberOf*
822*e670fd5cSchristos-
823*e670fd5cSchristosEOMODS
824*e670fd5cSchristos
825*e670fd5cSchristosRC=$?
826*e670fd5cSchristosif test $RC != 0 ; then
827*e670fd5cSchristos	echo "ldapmodify failed ($RC)!"
828*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
829*e670fd5cSchristos	exit $RC
830*e670fd5cSchristosfi
831*e670fd5cSchristos
832*e670fd5cSchristosecho "==========================================================" >> $LOG1
833*e670fd5cSchristos
834*e670fd5cSchristosecho "Adding a couple dynamic groups..."
835*e670fd5cSchristos$LDAPADD -v -D "$MANAGERDN" -H $URI1 -w $PASSWD \
836*e670fd5cSchristos	> $TESTOUT 2>&1 << EOMODS
837*e670fd5cSchristosdn: cn=The Smiths,$LISTDN
838*e670fd5cSchristosobjectClass: groupOfURLs
839*e670fd5cSchristoscn: The Smiths
840*e670fd5cSchristosmemberURL: ldap:///ou=People,${BASEDN}??sub?(sn=Smith)
841*e670fd5cSchristosdescription: Smith family
842*e670fd5cSchristos
843*e670fd5cSchristosdn: cn=Meta Group,$LISTDN
844*e670fd5cSchristosobjectClass: groupOfURLs
845*e670fd5cSchristoscn: Meta Group
846*e670fd5cSchristosmemberURL: ldap:///${LISTDN}??sub?(description=Smith%20family)
847*e670fd5cSchristosEOMODS
848*e670fd5cSchristos
849*e670fd5cSchristosRC=$?
850*e670fd5cSchristosif test $RC != 0 ; then
851*e670fd5cSchristos	echo "ldapadd failed ($RC)!"
852*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
853*e670fd5cSchristos	exit $RC
854*e670fd5cSchristosfi
855*e670fd5cSchristos
856*e670fd5cSchristosecho "Testing nested dynamic group functionality..."
857*e670fd5cSchristosecho "# Testing nested dynamic group functionality..." >> $SEARCHOUT
858*e670fd5cSchristos$LDAPSEARCH -S "" -b "$LISTDN" -H $URI1 \
859*e670fd5cSchristos	-D "$BABSDN" -w bjensen \
860*e670fd5cSchristos	'(objectclass=*)' '*' 'memberOf' \
861*e670fd5cSchristos	>> $SEARCHOUT 2>&1
862*e670fd5cSchristosRC=$?
863*e670fd5cSchristosif test $RC != 0 ; then
864*e670fd5cSchristos	echo "ldapsearch failed ($RC)!"
865*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
866*e670fd5cSchristos	exit $RC
867*e670fd5cSchristosfi
868*e670fd5cSchristos
869*e670fd5cSchristos$LDAPSEARCH -S "" -b "ou=People,$BASEDN" -H $URI1 \
870*e670fd5cSchristos	-D "$BABSDN" -w bjensen \
871*e670fd5cSchristos	'(cn=Mark Elliot)' '*' 'memberOf' \
872*e670fd5cSchristos	>> $SEARCHOUT 2>&1
873*e670fd5cSchristosRC=$?
874*e670fd5cSchristosif test $RC != 0 ; then
875*e670fd5cSchristos	echo "ldapsearch failed ($RC)!"
876*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
877*e670fd5cSchristos	exit $RC
878*e670fd5cSchristosfi
879*e670fd5cSchristos
880*e670fd5cSchristosecho "Reconfiguring slapd..."
881*e670fd5cSchristos$LDAPMODIFY -x -D cn=config -H $URI1 -y $CONFIGPWF > \
882*e670fd5cSchristos	$TESTOUT 2>&1 << EOMODS
883*e670fd5cSchristosversion: 1
884*e670fd5cSchristosdn: olcOverlay={0}dynlist,olcDatabase={$DBIX}$BACKEND,cn=config
885*e670fd5cSchristoschangetype: modify
886*e670fd5cSchristosdelete: olcDynListAttrSet
887*e670fd5cSchristosolcDynListAttrSet: {0}
888*e670fd5cSchristos-
889*e670fd5cSchristosadd: olcDynListAttrSet
890*e670fd5cSchristosolcDynListAttrSet: groupOfURLs memberURL member+memberOf@groupOfNames*
891*e670fd5cSchristosolcDynListAttrSet: labeledURIObject labeledURI uniqueMember+seeAlso@groupOfUniqueNames
892*e670fd5cSchristos-
893*e670fd5cSchristosEOMODS
894*e670fd5cSchristos
895*e670fd5cSchristosRC=$?
896*e670fd5cSchristosif test $RC != 0 ; then
897*e670fd5cSchristos	echo "ldapmodify failed ($RC)!"
898*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
899*e670fd5cSchristos	exit $RC
900*e670fd5cSchristosfi
901*e670fd5cSchristos
902*e670fd5cSchristosecho "==========================================================" >> $LOG1
903*e670fd5cSchristos
904*e670fd5cSchristosecho "Adding a couple static groups..."
905*e670fd5cSchristos$LDAPADD -v -D "$MANAGERDN" -H $URI1 -w $PASSWD \
906*e670fd5cSchristos	> $TESTOUT 2>&1 << EOMODS
907*e670fd5cSchristosdn: cn=The Jensens,ou=Groups,$BASEDN
908*e670fd5cSchristosobjectClass: groupOfnames
909*e670fd5cSchristoscn: The Jensens
910*e670fd5cSchristosmember: cn=Bjorn Jensen,ou=Information Technology DivisioN,ou=People,$BASEDN
911*e670fd5cSchristosmember: cn=Barbara Jensen,ou=Information Technology DivisioN,ou=People,$BASEDN
912*e670fd5cSchristos
913*e670fd5cSchristosdn: cn=JJs,ou=Groups,$BASEDN
914*e670fd5cSchristosobjectClass: groupOfnames
915*e670fd5cSchristoscn: JJs
916*e670fd5cSchristosmember: cn=James A Jones 1,ou=Alumni Association,ou=People,$BASEDN
917*e670fd5cSchristosmember: cn=James A Jones 2,ou=Information Technology Division,ou=People,$BASEDN
918*e670fd5cSchristosmember: cn=The Jensens,ou=Groups,$BASEDN
919*e670fd5cSchristosEOMODS
920*e670fd5cSchristos
921*e670fd5cSchristosRC=$?
922*e670fd5cSchristosif test $RC != 0 ; then
923*e670fd5cSchristos	echo "ldapadd failed ($RC)!"
924*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
925*e670fd5cSchristos	exit $RC
926*e670fd5cSchristosfi
927*e670fd5cSchristos
928*e670fd5cSchristosecho "Testing nested static group functionality..."
929*e670fd5cSchristosecho "# Testing nested static group functionality..." >> $SEARCHOUT
930*e670fd5cSchristos$LDAPSEARCH -S "" -b "ou=People,$BASEDN" -H $URI1 \
931*e670fd5cSchristos	-D "$BABSDN" -w bjensen \
932*e670fd5cSchristos	'(sn=Jensen)' '*' 'memberOf' \
933*e670fd5cSchristos	>> $SEARCHOUT 2>&1
934*e670fd5cSchristosRC=$?
935*e670fd5cSchristosif test $RC != 0 ; then
936*e670fd5cSchristos	echo "ldapsearch failed ($RC)!"
937*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
938*e670fd5cSchristos	exit $RC
939*e670fd5cSchristosfi
940*e670fd5cSchristos
941*e670fd5cSchristosecho "Adding another nested group..."
942*e670fd5cSchristos$LDAPADD -v -D "$MANAGERDN" -H $URI1 -w $PASSWD \
943*e670fd5cSchristos	> $TESTOUT 2>&1 << EOMODS
944*e670fd5cSchristosdn: cn=Bonus Group,ou=Groups,$BASEDN
945*e670fd5cSchristosobjectClass: groupOfnames
946*e670fd5cSchristoscn: Bonus Group
947*e670fd5cSchristosmember: cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN
948*e670fd5cSchristosmember: cn=Meta Group,$LISTDN
949*e670fd5cSchristosEOMODS
950*e670fd5cSchristos
951*e670fd5cSchristos$LDAPSEARCH -S "" -b "ou=People,$BASEDN" -H $URI1 \
952*e670fd5cSchristos	-D "$BABSDN" -w bjensen \
953*e670fd5cSchristos	'(sn=Hampster)' '*' 'memberOf' \
954*e670fd5cSchristos	>> $SEARCHOUT 2>&1
955*e670fd5cSchristosRC=$?
956*e670fd5cSchristosif test $RC != 0 ; then
957*e670fd5cSchristos	echo "ldapsearch failed ($RC)!"
958*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
959*e670fd5cSchristos	exit $RC
960*e670fd5cSchristosfi
961*e670fd5cSchristos
962*e670fd5cSchristos$LDAPSEARCH -S "" -b "ou=People,$BASEDN" -H $URI1 \
963*e670fd5cSchristos	-D "$BABSDN" -w bjensen \
964*e670fd5cSchristos	'(sn=Doe)' '*' 'memberOf' \
965*e670fd5cSchristos	>> $SEARCHOUT 2>&1
966*e670fd5cSchristosRC=$?
967*e670fd5cSchristosif test $RC != 0 ; then
968*e670fd5cSchristos	echo "ldapsearch failed ($RC)!"
969*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
970*e670fd5cSchristos	exit $RC
971*e670fd5cSchristosfi
972*e670fd5cSchristos
973*e670fd5cSchristos$LDAPSEARCH -S "" -b "ou=People,$BASEDN" -H $URI1 \
974*e670fd5cSchristos	-D "$BABSDN" -w bjensen \
975*e670fd5cSchristos	'(sn=Smith)' '*' 'memberOf' \
976*e670fd5cSchristos	>> $SEARCHOUT 2>&1
977*e670fd5cSchristosRC=$?
978*e670fd5cSchristosif test $RC != 0 ; then
979*e670fd5cSchristos	echo "ldapsearch failed ($RC)!"
980*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
981*e670fd5cSchristos	exit $RC
982*e670fd5cSchristosfi
983*e670fd5cSchristos
984*e670fd5cSchristosecho "Testing filtered nested memberOf functionality..."
985*e670fd5cSchristosecho "# Testing filtered nested memberOf functionality..." >> $SEARCHOUT
986*e670fd5cSchristos
987*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
988*e670fd5cSchristos	-D "$BABSDN" -w bjensen \
989*e670fd5cSchristos	"(memberOf=cn=bonus group,ou=groups,$BASEDN)" '*' 'memberOf' \
990*e670fd5cSchristos	>> $SEARCHOUT 2>&1
991*e670fd5cSchristosRC=$?
992*e670fd5cSchristosif test $RC != 0 ; then
993*e670fd5cSchristos	echo "ldapsearch failed ($RC)!"
994*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
995*e670fd5cSchristos	exit $RC
996*e670fd5cSchristosfi
997*e670fd5cSchristos
998*e670fd5cSchristosecho "Testing filtered nested member functionality..."
999*e670fd5cSchristosecho "# Testing filtered nested member functionality..." >> $SEARCHOUT
1000*e670fd5cSchristos
1001*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
1002*e670fd5cSchristos	-D "$BABSDN" -w bjensen \
1003*e670fd5cSchristos	"(member=cn=Jennifer Smith,ou=Alumni Association,ou=People,$BASEDN)" '*' 'memberOf' \
1004*e670fd5cSchristos	>> $SEARCHOUT 2>&1
1005*e670fd5cSchristosRC=$?
1006*e670fd5cSchristosif test $RC != 0 ; then
1007*e670fd5cSchristos	echo "ldapsearch failed ($RC)!"
1008*e670fd5cSchristos	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1009*e670fd5cSchristos	exit $RC
1010*e670fd5cSchristosfi
1011*e670fd5cSchristos
10122de962bdSlukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS
10132de962bdSlukem
10142de962bdSlukemLDIF=$DYNLISTOUT
10152de962bdSlukem
10162de962bdSlukemecho "Filtering ldapsearch results..."
1017ef2f90d3Sadam$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
10182de962bdSlukemecho "Filtering original ldif used to create database..."
1019ef2f90d3Sadam$LDIFFILTER < $LDIF > $LDIFFLT
10202de962bdSlukemecho "Comparing filter output..."
10212de962bdSlukem$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
10222de962bdSlukem
10232de962bdSlukemif test $? != 0 ; then
10242de962bdSlukem	echo "Comparison failed"
10252de962bdSlukem	exit 1
10262de962bdSlukemfi
10272de962bdSlukem
10282de962bdSlukemecho ">>>>> Test succeeded"
10292de962bdSlukem
10302de962bdSlukemtest $KILLSERVERS != no && wait
10312de962bdSlukem
10322de962bdSlukemexit 0
1033