xref: /netbsd-src/external/bsd/openldap/dist/tests/scripts/test023-refint (revision e670fd5c413e99c2f6a37901bb21c537fcd322d2)
12de962bdSlukem#! /bin/sh
2d11b170bStron# $OpenLDAP$
32de962bdSlukem## This work is part of OpenLDAP Software <http://www.openldap.org/>.
42de962bdSlukem##
5*e670fd5cSchristos## Copyright 2004-2021 The OpenLDAP Foundation.
62de962bdSlukem## All rights reserved.
72de962bdSlukem##
82de962bdSlukem## Redistribution and use in source and binary forms, with or without
92de962bdSlukem## modification, are permitted only as authorized by the OpenLDAP
102de962bdSlukem## Public License.
112de962bdSlukem##
122de962bdSlukem## A copy of this license is available in the file LICENSE in the
132de962bdSlukem## top-level directory of the distribution or, alternatively, at
142de962bdSlukem## <http://www.OpenLDAP.org/license.html>.
152de962bdSlukem
162de962bdSlukemecho "running defines.sh"
172de962bdSlukem. $SRCDIR/scripts/defines.sh
182de962bdSlukem
192de962bdSlukemif test $REFINT = refintno; then
202de962bdSlukem	echo "Referential Integrity overlay not available, test skipped"
212de962bdSlukem	exit 0
222de962bdSlukemfi
232de962bdSlukem
242de962bdSlukemmkdir -p $TESTDIR $DBDIR1
252de962bdSlukem
262de962bdSlukemecho "Running slapadd to build slapd database..."
27*e670fd5cSchristos. $CONFFILTER $BACKEND < $REFINTCONF > $CONF1
282de962bdSlukem$SLAPADD -f $CONF1 -l $LDIFREFINT
292de962bdSlukemRC=$?
302de962bdSlukemif test $RC != 0 ; then
312de962bdSlukem	echo "slapadd failed ($RC)!"
322de962bdSlukem	exit $RC
332de962bdSlukemfi
342de962bdSlukem
352de962bdSlukemecho "Starting slapd on TCP/IP port $PORT1..."
36*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
372de962bdSlukemPID=$!
382de962bdSlukemif test $WAIT != 0 ; then
392de962bdSlukem    echo PID $PID
402de962bdSlukem    read foo
412de962bdSlukemfi
422de962bdSlukemKILLPIDS="$PID"
432de962bdSlukem
442de962bdSlukemsleep 1
452de962bdSlukem
462de962bdSlukemecho "Testing slapd referential integrity operations..."
472de962bdSlukemfor i in 0 1 2 3 4 5; do
48*e670fd5cSchristos	$LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
492de962bdSlukem		'objectclass=*' > /dev/null 2>&1
502de962bdSlukem	RC=$?
512de962bdSlukem	if test $RC = 0 ; then
522de962bdSlukem		break
532de962bdSlukem	fi
542de962bdSlukem	echo "Waiting 5 seconds for slapd to start..."
552de962bdSlukem	sleep 5
562de962bdSlukemdone
572de962bdSlukem
582de962bdSlukemif test $RC != 0 ; then
592de962bdSlukem	echo "ldapsearch failed ($RC)!"
602de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
612de962bdSlukem	exit $RC
622de962bdSlukemfi
632de962bdSlukem
642de962bdSlukemecho "Searching unmodified database..."
652de962bdSlukem
66*e670fd5cSchristos$LDAPSEARCH -S "" -b "o=refint" -H $URI1 > $SEARCHOUT 2>&1
672de962bdSlukemRC=$?
682de962bdSlukemif test $RC != 0 ; then
692de962bdSlukem	echo "ldapsearch failed ($RC)!"
702de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
712de962bdSlukem	exit $RC
722de962bdSlukemfi
732de962bdSlukem
742de962bdSlukem$EGREP_CMD "(manager|secretary):" $SEARCHOUT | sed "s/george/foster/g" | \
752de962bdSlukem	sort > $TESTOUT 2>&1
762de962bdSlukem
772de962bdSlukemecho "Testing modrdn..."
78*e670fd5cSchristos$LDAPMODRDN -D "$REFINTDN" -r -H $URI1 -w $PASSWD > \
792de962bdSlukem	/dev/null 2>&1 'uid=george,ou=users,o=refint' 'uid=foster'
80*e670fd5cSchristos#$LDAPMODRDN -D "$REFINTDN" -r -H $URI1 -w $PASSWD  \
812de962bdSlukem#	'uid=george,ou=users,o=refint' 'uid=foster'
822de962bdSlukem
832de962bdSlukemRC=$?
842de962bdSlukemif test $RC != 0 ; then
852de962bdSlukem	echo "ldapmodrdn failed ($RC)!"
862de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
872de962bdSlukem	exit $RC
882de962bdSlukemfi
892de962bdSlukem
902de962bdSlukemsleep 1;
912de962bdSlukem
922de962bdSlukemecho "Using ldapsearch to check dependents new rdn..."
932de962bdSlukem
94*e670fd5cSchristos$LDAPSEARCH -S "" -b "o=refint" -H $URI1 > $SEARCHOUT 2>&1
952de962bdSlukem
962de962bdSlukemRC=$?
972de962bdSlukem	if test $RC != 0 ; then
982de962bdSlukem	echo "ldapsearch failed ($RC)!"
992de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1002de962bdSlukem	exit $RC
1012de962bdSlukemfi
1022de962bdSlukem
1032de962bdSlukem$EGREP_CMD "(manager|secretary):" $SEARCHOUT | sort > $SEARCHFLT 2>&1
1042de962bdSlukem
1052de962bdSlukemecho "Comparing ldapsearch results against original..."
1062de962bdSlukem$CMP $TESTOUT $SEARCHFLT > $CMPOUT
1072de962bdSlukem
1082de962bdSlukemif test $? != 0 ; then
1092de962bdSlukem	echo "comparison failed - modify operations did not complete correctly"
1102de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1112de962bdSlukem	exit 1
1122de962bdSlukemfi
1132de962bdSlukem
1142de962bdSlukemecho "Testing delete..."
115*e670fd5cSchristos$LDAPMODIFY -v -D "$REFINTDN" -H $URI1 -w $PASSWD > \
1162de962bdSlukem	$TESTOUT 2>&1 << EDEL
1172de962bdSlukemversion: 1
1182de962bdSlukemdn: uid=foster,ou=users,o=refint
1192de962bdSlukemchangetype: delete
1202de962bdSlukemEDEL
1212de962bdSlukem
1222de962bdSlukemRC=$?
1232de962bdSlukemif test $RC != 0 ; then
1242de962bdSlukem	echo "ldapmodify failed ($RC)!"
1252de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1262de962bdSlukem	exit $RC
1272de962bdSlukemfi
1282de962bdSlukem
1292de962bdSlukemsleep 1;
1302de962bdSlukem
1312de962bdSlukemecho "Using ldapsearch to verify dependents have been deleted..."
132*e670fd5cSchristos$LDAPSEARCH -S "" -b "o=refint" -H $URI1 > $SEARCHOUT 2>&1
1332de962bdSlukem
1342de962bdSlukemRC=$?
1352de962bdSlukemif test $RC != 0 ; then
1362de962bdSlukem	echo "ldapsearch failed ($RC)!"
1372de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1382de962bdSlukem	exit $RC
1392de962bdSlukemfi
1402de962bdSlukem
1412de962bdSlukem$EGREP_CMD "(manager|secretary):" $SEARCHOUT > $SEARCHFLT 2>&1
1422de962bdSlukem
1432de962bdSlukemRC=`grep -c foster $SEARCHFLT`
1442de962bdSlukemif test $RC != 0 ; then
1452de962bdSlukem	echo "dependent modify failed - dependents were not deleted"
1462de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1472de962bdSlukem	exit 1
1482de962bdSlukemfi
1492de962bdSlukem
1502de962bdSlukemecho "Additional test records..."
1512de962bdSlukem
152*e670fd5cSchristos$LDAPADD -D "$REFINTDN" -H $URI1 -w $PASSWD > \
1532de962bdSlukem	$TESTOUT 2>&1 << ETEST
1542de962bdSlukemdn: uid=special,ou=users,o=refint
1552de962bdSlukemobjectClass: inetOrgPerson
1562de962bdSlukemobjectClass: extensibleObject
1572de962bdSlukemuid: special
1582de962bdSlukemsn: special
1592de962bdSlukemcn: special
1602de962bdSlukembusinessCategory: nothing
1612de962bdSlukemcarLicense: FOO
1622de962bdSlukemdepartmentNumber: 933
1632de962bdSlukemdisplayName: special
1642de962bdSlukememployeeNumber: 41491
1652de962bdSlukememployeeType: vendor
1662de962bdSlukemgivenName: special
1672de962bdSlukemmember: uid=alice,ou=users,o=refint
1682de962bdSlukemETEST
1692de962bdSlukem
1702de962bdSlukemRC=$?
1712de962bdSlukemif test $RC != 0 ; then
1722de962bdSlukem	echo "ldapadd failed ($RC)!"
1732de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1742de962bdSlukem	exit $RC
1752de962bdSlukemfi
1762de962bdSlukem
1772de962bdSlukemecho "Testing delete when referential attribute is a MUST..."
178*e670fd5cSchristos$LDAPMODIFY -v -D "$REFINTDN" -H $URI1 -w $PASSWD > \
1792de962bdSlukem	$TESTOUT 2>&1 << EDEL
1802de962bdSlukemversion: 1
1812de962bdSlukemdn: uid=alice,ou=users,o=refint
1822de962bdSlukemchangetype: delete
1832de962bdSlukemEDEL
1842de962bdSlukem
1852de962bdSlukemRC=$?
1862de962bdSlukemif test $RC != 0 ; then
1872de962bdSlukem	echo "ldapmodify failed ($RC)!"
1882de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1892de962bdSlukem	exit $RC
1902de962bdSlukemfi
1912de962bdSlukem
192*e670fd5cSchristos$LDAPMODIFY -v -D "$REFINTDN" -H $URI1 -w $PASSWD > \
1932de962bdSlukem	$TESTOUT 2>&1 << EDEL
1942de962bdSlukemversion: 1
1952de962bdSlukemdn: cn=group,o=refint
1962de962bdSlukemchangetype: add
1972de962bdSlukemobjectClass: groupOfNames
1982de962bdSlukemcn: group
1992de962bdSlukemmember: uid=bill,ou=users,o=refint
2002de962bdSlukemmember: uid=bob,ou=users,o=refint
2012de962bdSlukemmember: uid=dave,ou=users,o=refint
2022de962bdSlukemmember: uid=jorge,ou=users,o=refint
2032de962bdSlukemmember: uid=theman,ou=users,o=refint
2042de962bdSlukemmember: uid=richard,ou=users,o=refint
2052de962bdSlukemEDEL
2062de962bdSlukem
2072de962bdSlukemRC=$?
2082de962bdSlukemif test $RC != 0 ; then
2092de962bdSlukem	echo "ldapmodify failed ($RC)!"
2102de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
2112de962bdSlukem	exit $RC
2122de962bdSlukemfi
2132de962bdSlukem
2142de962bdSlukemsleep 1;
2152de962bdSlukem
216*e670fd5cSchristos$LDAPSEARCH -S "" -b "o=refint" -H $URI1 \
2172de962bdSlukem	manager member secretary > $SEARCHOUT 2>&1
2182de962bdSlukemRC=$?
2192de962bdSlukemif test $RC != 0 ; then
2202de962bdSlukem	echo "ldapsearch failed ($RC)!"
2212de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
2222de962bdSlukem	exit $RC
2232de962bdSlukemfi
2242de962bdSlukem
2252de962bdSlukem$EGREP_CMD "(manager|member|secretary):" $SEARCHOUT \
2262de962bdSlukem	| sed "s/ou=users/ou=people/g" | \
2272de962bdSlukem	sort > $TESTOUT 2>&1
2282de962bdSlukem
2292de962bdSlukemecho "testing subtree rename"
230*e670fd5cSchristos$LDAPMODRDN -D "$REFINTDN" -r -H $URI1 -w $PASSWD > \
2312de962bdSlukem	/dev/null 2>&1 'ou=users,o=refint' 'ou=people'
2322de962bdSlukemRC=$?
2332de962bdSlukemif test $RC != 0 ; then
2342de962bdSlukem	echo "ldapmodrdn failed ($RC)!"
2352de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
2362de962bdSlukem	exit $RC
2372de962bdSlukemfi
2382de962bdSlukem
2392de962bdSlukemsleep 1;
2402de962bdSlukem
2412de962bdSlukemecho "Using ldapsearch to check dependents new rdn..."
2422de962bdSlukem
243*e670fd5cSchristos$LDAPSEARCH -S "" -b "o=refint" -H $URI1 \
2442de962bdSlukem	manager member secretary > $SEARCHOUT 2>&1
2452de962bdSlukem
2462de962bdSlukemRC=$?
2472de962bdSlukemif test $RC != 0 ; then
2482de962bdSlukem	echo "ldapsearch failed ($RC)!"
2492de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
2502de962bdSlukem	exit $RC
2512de962bdSlukemfi
2522de962bdSlukem
2532de962bdSlukem$EGREP_CMD "(manager|member|secretary):" $SEARCHOUT \
2542de962bdSlukem	| sort > $SEARCHFLT 2>&1
2552de962bdSlukem
2562de962bdSlukemecho "Comparing ldapsearch results against original..."
2572de962bdSlukem$CMP $TESTOUT $SEARCHFLT > $CMPOUT
2582de962bdSlukem
2592de962bdSlukemif test $? != 0 ; then
2602de962bdSlukem	echo "comparison failed - subtree rename operations did not complete correctly"
2612de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
2622de962bdSlukem	exit 1
2632de962bdSlukemfi
2642de962bdSlukem
2652de962bdSlukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS
2662de962bdSlukem
2672de962bdSlukemecho ">>>>> Test succeeded"
2682de962bdSlukem
2692de962bdSlukemtest $KILLSERVERS != no && wait
2702de962bdSlukem
2712de962bdSlukemexit 0
272