xref: /netbsd-src/external/bsd/openldap/dist/tests/scripts/sql-test901-syncrepl (revision e670fd5c413e99c2f6a37901bb21c537fcd322d2)
12de962bdSlukem#! /bin/sh
2d11b170bStron# $OpenLDAP$
32de962bdSlukem## This work is part of OpenLDAP Software <http://www.openldap.org/>.
42de962bdSlukem##
5*e670fd5cSchristos## Copyright 1998-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 $BACKSQL = "sqlno" ; then
202de962bdSlukem	echo "SQL backend not available, test skipped"
212de962bdSlukem	exit 0
222de962bdSlukemfi
232de962bdSlukem
242de962bdSlukemif test $RDBMS = "rdbmsno" ; then
252de962bdSlukem	echo "SQL test not requested, test skipped"
262de962bdSlukem	exit 0
272de962bdSlukemfi
282de962bdSlukem
292de962bdSlukemif test "${RDBMSWRITE}" != "yes"; then
302de962bdSlukem	echo "write test disabled for ${RDBMS}; set SLAPD_USE_SQLWRITE=yes to enable"
312de962bdSlukem	exit 0
322de962bdSlukemfi
332de962bdSlukem
342de962bdSlukemmkdir -p $TESTDIR $DBDIR2A
352de962bdSlukem
362de962bdSlukemecho "Starting slapd on TCP/IP port $PORT1..."
37*e670fd5cSchristos. $CONFFILTER $BACKEND < $SQLSRPROVIDERCONF > $CONF1
38*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
392de962bdSlukemPID=$!
402de962bdSlukemif test $WAIT != 0 ; then
412de962bdSlukem    echo PID $PID
422de962bdSlukem    read foo
432de962bdSlukemfi
442de962bdSlukemKILLPIDS="$PID"
452de962bdSlukem
462de962bdSlukemecho "Testing SQL backend write 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
64*e670fd5cSchristosecho "Starting consumer slapd on TCP/IP port $PORT2..."
65*e670fd5cSchristos. $CONFFILTER $BACKEND < $R1SRCONSUMERCONF > $CONF2
66*e670fd5cSchristos$SLAPD -f $CONF2 -h $URI2 -d $LVL > $LOG2 2>&1 &
67*e670fd5cSchristosCONSUMERPID=$!
682de962bdSlukemif test $WAIT != 0 ; then
69*e670fd5cSchristos    echo CONSUMERPID $CONSUMERPID
702de962bdSlukem    read foo
712de962bdSlukemfi
72*e670fd5cSchristosKILLPIDS="$KILLPIDS $CONSUMERPID"
732de962bdSlukem
74*e670fd5cSchristosecho "Using ldapsearch to check that consumer slapd is running..."
752de962bdSlukemfor i in 0 1 2 3 4 5; do
76*e670fd5cSchristos	$LDAPSEARCH -s base -b "$MONITOR" -H $URI2 \
772de962bdSlukem		'objectclass=*' > /dev/null 2>&1
782de962bdSlukem	RC=$?
792de962bdSlukem	if test $RC = 0 ; then
802de962bdSlukem		break
812de962bdSlukem	fi
822de962bdSlukem	echo "Waiting 5 seconds for slapd to start..."
832de962bdSlukem	sleep 5
842de962bdSlukemdone
852de962bdSlukem
862de962bdSlukemif test $RC != 0 ; then
872de962bdSlukem	echo "ldapsearch failed ($RC)!"
882de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
892de962bdSlukem	exit $RC
902de962bdSlukemfi
912de962bdSlukem
922de962bdSlukemcat /dev/null > $SEARCHOUT
932de962bdSlukem
94*e670fd5cSchristosecho "Using ldapsearch to retrieve all the entries from the provider..."
95*e670fd5cSchristosecho "# Using ldapsearch to retrieve all the entries from the provider..." \
962de962bdSlukem	>> $SEARCHOUT
97*e670fd5cSchristos$LDAPSEARCH -S "" -H $URI1 -b "$BASEDN" \
982de962bdSlukem	-D "$MANAGERDN" -w $PASSWD \
992de962bdSlukem	 "(!(objectClass=referral))" >> $SEARCHOUT 2>&1
1002de962bdSlukem
1012de962bdSlukemRC=$?
1022de962bdSlukemif test $RC != 0 ; then
1032de962bdSlukem	echo "ldapsearch failed ($RC)!"
1042de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1052de962bdSlukem	exit $RC
1062de962bdSlukemfi
1072de962bdSlukem
1082de962bdSlukemcat /dev/null > $SEARCHOUT2
1092de962bdSlukem
110*e670fd5cSchristosecho "Using ldapsearch to retrieve all the entries from the consumer..."
111*e670fd5cSchristosecho "# Using ldapsearch to retrieve all the entries from the consumer..." \
1122de962bdSlukem	>> $SEARCHOUT2
113*e670fd5cSchristos$LDAPSEARCH -S "" -H $URI2 -b "$BASEDN" \
1142de962bdSlukem	-D "$UPDATEDN" -w $PASSWD \
1152de962bdSlukem	 "(objectClass=*)" >> $SEARCHOUT2 2>&1
1162de962bdSlukem
1172de962bdSlukemRC=$?
1182de962bdSlukemif test $RC != 0 ; then
1192de962bdSlukem	echo "ldapsearch failed ($RC)!"
1202de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1212de962bdSlukem	exit $RC
1222de962bdSlukemfi
1232de962bdSlukem
124*e670fd5cSchristosecho "Filtering ldapsearch results from provider..."
125ef2f90d3Sadam$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
126*e670fd5cSchristosecho "Filtering ldapsearch results from consumer..."
127ef2f90d3Sadam$LDIFFILTER < $SEARCHOUT2 > $SEARCHFLT2
1282de962bdSlukemecho "Comparing filter output..."
1292de962bdSlukem$CMP $SEARCHFLT $SEARCHFLT2 > $CMPOUT
1302de962bdSlukem
1312de962bdSlukemif test $? != 0 ; then
1322de962bdSlukem	echo "Comparison failed"
1332de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1342de962bdSlukem	exit 1
1352de962bdSlukemfi
1362de962bdSlukem
1372de962bdSlukemcat /dev/null > $SEARCHOUT
1382de962bdSlukem
1392de962bdSlukemecho "Using ldapsearch to retrieve all the entries..."
1402de962bdSlukemecho "# Using ldapsearch to retrieve all the entries..." >> $SEARCHOUT
141*e670fd5cSchristos$LDAPSEARCH -S "" -H $URI1 -b "$BASEDN" \
1422de962bdSlukem	 "objectClass=*" >> $SEARCHOUT 2>&1
1432de962bdSlukem
1442de962bdSlukemRC=$?
1452de962bdSlukemif test $RC != 0 ; then
1462de962bdSlukem	echo "ldapsearch failed ($RC)!"
1472de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1482de962bdSlukem	exit $RC
1492de962bdSlukemfi
1502de962bdSlukem
1512de962bdSlukemcase ${RDBMS} in
1522de962bdSlukem	# list here the RDBMSes whose mapping allows writes
1532de962bdSlukempgsql|ibmdb2)
1542de962bdSlukem	MANAGERDN="cn=Manager,${BASEDN}"
1552de962bdSlukem	echo "Testing add..."
1562de962bdSlukem	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
157*e670fd5cSchristos		-H $URI1 >> $TESTOUT 2>&1 << EOMODS
1582de962bdSlukemversion: 1
1592de962bdSlukem
1602de962bdSlukem# Adding an organization...
1612de962bdSlukemdn: o=An Org,${BASEDN}
1622de962bdSlukemchangetype: add
1632de962bdSlukemobjectClass: organization
1642de962bdSlukemo: An Org
1652de962bdSlukem
1662de962bdSlukem# Adding an organization with an "auxiliary" objectClass..
1672de962bdSlukemdn: dc=subnet,${BASEDN}
1682de962bdSlukemchangetype: add
1692de962bdSlukemobjectClass: organization
1702de962bdSlukemobjectClass: dcObject
1712de962bdSlukemo: SubNet
1722de962bdSlukemdc: subnet
1732de962bdSlukem
1742de962bdSlukem# Adding another organization with an "auxiliary" objectClass..
1752de962bdSlukemdn: dc=subnet2,${BASEDN}
1762de962bdSlukemchangetype: add
1772de962bdSlukemobjectClass: organization
1782de962bdSlukemobjectClass: dcObject
1792de962bdSlukemo: SubNet 2
1802de962bdSlukemdc: subnet2
1812de962bdSlukem
1822de962bdSlukem# Adding a person...
1832de962bdSlukemdn: cn=Lev Tolstoij,${BASEDN}
1842de962bdSlukemchangetype: add
1852de962bdSlukemobjectClass: inetOrgPerson
1862de962bdSlukemcn: Lev Tolstoij
1872de962bdSlukemsn: Tolstoij
1882de962bdSlukemgivenName: Lev
1892de962bdSlukemtelephoneNumber: +39 02 XXXX YYYY
1902de962bdSlukemtelephoneNumber: +39 02 XXXX ZZZZ
1912de962bdSlukemuserPassword: tanja
1922de962bdSlukem
1932de962bdSlukem# Adding a person with an "auxiliary" objectClass...
1942de962bdSlukemdn: cn=Some One,${BASEDN}
1952de962bdSlukemchangetype: add
1962de962bdSlukemobjectClass: inetOrgPerson
1972de962bdSlukemobjectClass: simpleSecurityObject
1982de962bdSlukemcn: Some One
1992de962bdSlukemsn: One
2002de962bdSlukemgivenName: Some
2012de962bdSlukemtelephoneNumber: +1 800 900 1234
2022de962bdSlukemtelephoneNumber: +1 800 900 1235
2032de962bdSlukemuserPassword: someone
2042de962bdSlukem
2052de962bdSlukem# Adding a person in another subtree...
2062de962bdSlukemdn: cn=SubNet User,dc=subnet,${BASEDN}
2072de962bdSlukemchangetype: add
2082de962bdSlukemobjectClass: inetOrgPerson
2092de962bdSlukemcn: SubNet User
2102de962bdSlukemsn: User
2112de962bdSlukemgivenName: SubNet
2122de962bdSlukem
2132de962bdSlukem# Adding a document...
2142de962bdSlukemdn: documentTitle=War and Peace,${BASEDN}
2152de962bdSlukemchangetype: add
2162de962bdSlukemobjectClass: document
2172de962bdSlukemdescription: Historical novel
2182de962bdSlukemdocumentTitle: War and Peace
2192de962bdSlukemdocumentAuthor: cn=Lev Tolstoij,dc=example,dc=com
2202de962bdSlukemdocumentIdentifier: document 3
2212de962bdSlukemEOMODS
2222de962bdSlukem
2232de962bdSlukem	RC=$?
2242de962bdSlukem	if test $RC != 0 ; then
2252de962bdSlukem		echo "ldapmodify failed ($RC)!"
2262de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
2272de962bdSlukem		exit $RC
2282de962bdSlukem	fi
2292de962bdSlukem
2302de962bdSlukem	echo "Using ldapsearch to retrieve all the entries..."
2312de962bdSlukem	echo "# Using ldapsearch to retrieve all the entries..." >> $SEARCHOUT
232*e670fd5cSchristos	$LDAPSEARCH -S "" -H $URI1 -b "$BASEDN" \
2332de962bdSlukem		 "objectClass=*" >> $SEARCHOUT 2>&1
2342de962bdSlukem
2352de962bdSlukem	RC=$?
2362de962bdSlukem	if test $RC != 0 ; then
2372de962bdSlukem		echo "ldapsearch failed ($RC)!"
2382de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
2392de962bdSlukem		exit $RC
2402de962bdSlukem	fi
2412de962bdSlukem
2422de962bdSlukem	echo "Testing modify..."
2432de962bdSlukem	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
244*e670fd5cSchristos		-H $URI1 >> $TESTOUT 2>&1 << EOMODS
2452de962bdSlukemversion: 1
2462de962bdSlukem
2472de962bdSlukem# Deleting all telephone numbers...
2482de962bdSlukemdn: cn=Some One,${BASEDN}
2492de962bdSlukemchangetype: modify
2502de962bdSlukemdelete: telephoneNumber
2512de962bdSlukem-
2522de962bdSlukem
2532de962bdSlukem# Adding a telephone number...
2542de962bdSlukemdn: cn=Mitya Kovalev,${BASEDN}
2552de962bdSlukemchangetype: modify
2562de962bdSlukemadd: telephoneNumber
2572de962bdSlukemtelephoneNumber: +1 800 123 4567
2582de962bdSlukem-
2592de962bdSlukem
2602de962bdSlukem# Deleting a specific telephone number and adding a new one...
2612de962bdSlukemdn: cn=Lev Tolstoij,${BASEDN}
2622de962bdSlukemchangetype: modify
2632de962bdSlukemdelete: telephoneNumber
2642de962bdSlukemtelephoneNumber: +39 02 XXXX YYYY
2652de962bdSlukem-
2662de962bdSlukemadd: telephoneNumber
2672de962bdSlukemtelephoneNumber: +39 333 ZZZ 1234
2682de962bdSlukem-
2692de962bdSlukem
2702de962bdSlukem# Adding an author to a document...
2712de962bdSlukemdn: documentTitle=book1,${BASEDN}
2722de962bdSlukemchangetype: modify
2732de962bdSlukemadd: documentAuthor
2742de962bdSlukemdocumentAuthor: cn=Lev Tolstoij,${BASEDN}
2752de962bdSlukem-
2762de962bdSlukem
2772de962bdSlukem# Adding an author to another document...
2782de962bdSlukemdn: documentTitle=book2,${BASEDN}
2792de962bdSlukemchangetype: modify
2802de962bdSlukemadd: documentAuthor
2812de962bdSlukemdocumentAuthor: cn=Lev Tolstoij,${BASEDN}
2822de962bdSlukem-
2832de962bdSlukem
2842de962bdSlukem# Adding an "auxiliary" objectClass...
2852de962bdSlukemdn: cn=Mitya Kovalev,${BASEDN}
2862de962bdSlukemchangetype: modify
2872de962bdSlukemadd: objectClass
2882de962bdSlukemobjectClass: simpleSecurityObject
2892de962bdSlukem-
2902de962bdSlukem
2912de962bdSlukem# Deleting an "auxiliary" objectClass...
2922de962bdSlukemdn: cn=Some One,${BASEDN}
2932de962bdSlukemchangetype: modify
2942de962bdSlukemdelete: objectClass
2952de962bdSlukemobjectClass: simpleSecurityObject
2962de962bdSlukem-
2972de962bdSlukem
2982de962bdSlukem# Deleting userPasswords
2992de962bdSlukemdn: cn=Lev Tolstoij,${BASEDN}
3002de962bdSlukemchangetype: modify
3012de962bdSlukemdelete: userPassword
3022de962bdSlukem-
3032de962bdSlukemEOMODS
3042de962bdSlukem
3052de962bdSlukem	RC=$?
3062de962bdSlukem	if test $RC != 0 ; then
3072de962bdSlukem		echo "ldapmodify failed ($RC)!"
3082de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
3092de962bdSlukem		exit $RC
3102de962bdSlukem	fi
3112de962bdSlukem
3122de962bdSlukem	echo "Using ldapsearch to retrieve all the entries..."
3132de962bdSlukem	echo "# Using ldapsearch to retrieve all the entries..." >> $SEARCHOUT
314*e670fd5cSchristos	$LDAPSEARCH -S "" -H $URI1 -b "$BASEDN" \
3152de962bdSlukem		 "objectClass=*" >> $SEARCHOUT 2>&1
3162de962bdSlukem
3172de962bdSlukem	RC=$?
3182de962bdSlukem	if test $RC != 0 ; then
3192de962bdSlukem		echo "ldapsearch failed ($RC)!"
3202de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
3212de962bdSlukem		exit $RC
3222de962bdSlukem	fi
3232de962bdSlukem
3242de962bdSlukem	echo "Testing delete..."
3252de962bdSlukem	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
326*e670fd5cSchristos		-H $URI1 >> $TESTOUT 2>&1 << EOMODS
3272de962bdSlukemversion: 1
3282de962bdSlukem
3292de962bdSlukem# Deleting a person...
3302de962bdSlukemdn: cn=Torvlobnor Puzdoy,${BASEDN}
3312de962bdSlukemchangetype: delete
3322de962bdSlukem
3332de962bdSlukem# Deleting a document...
3342de962bdSlukemdn: documentTitle=book1,${BASEDN}
3352de962bdSlukemchangetype: delete
3362de962bdSlukem
3372de962bdSlukem# Deleting an organization with an "auxiliary" objectClass...
3382de962bdSlukemdn: dc=subnet2,${BASEDN}
3392de962bdSlukemchangetype: delete
3402de962bdSlukemEOMODS
3412de962bdSlukem
3422de962bdSlukem	RC=$?
3432de962bdSlukem	if test $RC != 0 ; then
3442de962bdSlukem		echo "ldapmodify failed ($RC)!"
3452de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
3462de962bdSlukem		exit $RC
3472de962bdSlukem	fi
3482de962bdSlukem
3492de962bdSlukem	echo "Using ldapsearch to retrieve all the entries..."
3502de962bdSlukem	echo "# Using ldapsearch to retrieve all the entries..." >> $SEARCHOUT
351*e670fd5cSchristos	$LDAPSEARCH -S "" -H $URI1 -b "$BASEDN" \
3522de962bdSlukem		 "objectClass=*" >> $SEARCHOUT 2>&1
3532de962bdSlukem
3542de962bdSlukem	RC=$?
3552de962bdSlukem	if test $RC != 0 ; then
3562de962bdSlukem		echo "ldapsearch failed ($RC)!"
3572de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
3582de962bdSlukem		exit $RC
3592de962bdSlukem	fi
3602de962bdSlukem
3612de962bdSlukem	echo "Testing rename..."
3622de962bdSlukem	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
363*e670fd5cSchristos		-H $URI1 >> $TESTOUT 2>&1 << EOMODS
3642de962bdSlukemversion: 1
3652de962bdSlukem
3662de962bdSlukem# Renaming an organization...
3672de962bdSlukemdn: o=An Org,${BASEDN}
3682de962bdSlukemchangetype: modrdn
3692de962bdSlukemnewrdn: o=Renamed Org
3702de962bdSlukemdeleteoldrdn: 1
3712de962bdSlukem
3722de962bdSlukem# Moving a person to another subtree...
3732de962bdSlukemdn: cn=Lev Tolstoij,${BASEDN}
3742de962bdSlukemchangetype: modrdn
3752de962bdSlukemnewrdn: cn=Lev Tolstoij
3762de962bdSlukemdeleteoldrdn: 0
3772de962bdSlukemnewsuperior: dc=subnet,${BASEDN}
3782de962bdSlukem
3792de962bdSlukem# Renaming a book...
3802de962bdSlukemdn: documentTitle=book2,${BASEDN}
3812de962bdSlukemchangetype: modrdn
3822de962bdSlukemnewrdn: documentTitle=Renamed Book
3832de962bdSlukemdeleteoldrdn: 1
3842de962bdSlukemEOMODS
3852de962bdSlukem
3862de962bdSlukem	RC=$?
3872de962bdSlukem	if test $RC != 0 ; then
3882de962bdSlukem		echo "ldapmodify failed ($RC)!"
3892de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
3902de962bdSlukem		exit $RC
3912de962bdSlukem	fi
3922de962bdSlukem
3932de962bdSlukem	echo "Using ldapsearch to retrieve all the entries..."
3942de962bdSlukem	echo "# Using ldapsearch to retrieve all the entries..." >> $SEARCHOUT
395*e670fd5cSchristos	$LDAPSEARCH -S "" -H $URI1 -b "$BASEDN" \
3962de962bdSlukem		 "objectClass=*" >> $SEARCHOUT 2>&1
3972de962bdSlukem
3982de962bdSlukem	RC=$?
3992de962bdSlukem	if test $RC != 0 ; then
4002de962bdSlukem		echo "ldapsearch failed ($RC)!"
4012de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
4022de962bdSlukem		exit $RC
4032de962bdSlukem	fi
4042de962bdSlukem
4052de962bdSlukem	echo "Adding a child to a referral (should fail)..."
4062de962bdSlukem	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
407*e670fd5cSchristos		-H $URI1 >> $TESTOUT 2>&1 << EOMODS
4082de962bdSlukemversion: 1
4092de962bdSlukem
4102de962bdSlukemdn: cn=Should Fail,ou=Referral,${BASEDN}
4112de962bdSlukemchangetype: add
4122de962bdSlukemobjectClass: inetOrgPerson
4132de962bdSlukemcn: Should Fail
4142de962bdSlukemsn: Fail
4152de962bdSlukemtelephoneNumber: +39 02 23456789
4162de962bdSlukemEOMODS
4172de962bdSlukem
4182de962bdSlukem	RC=$?
4192de962bdSlukem	if test $RC = 0 ; then
4202de962bdSlukem		echo "ldapmodify should have failed ($RC)!"
4212de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
4222de962bdSlukem		exit 1
4232de962bdSlukem	fi
4242de962bdSlukem
4252de962bdSlukem	echo "Modifying a referral (should fail)..."
4262de962bdSlukem	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
427*e670fd5cSchristos		-H $URI1 >> $TESTOUT 2>&1 << EOMODS
4282de962bdSlukemversion: 1
4292de962bdSlukem
4302de962bdSlukemdn: ou=Referral,${BASEDN}
4312de962bdSlukemchangetype: modify
4322de962bdSlukemreplace: ref
4332de962bdSlukemref: ldap://localhost:9009/
4342de962bdSlukem-
4352de962bdSlukemEOMODS
4362de962bdSlukem
4372de962bdSlukem	RC=$?
4382de962bdSlukem	if test $RC = 0 ; then
4392de962bdSlukem		echo "ldapmodify should have failed ($RC)!"
4402de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
4412de962bdSlukem		exit 1
4422de962bdSlukem	fi
4432de962bdSlukem
4442de962bdSlukem	echo "Renaming a referral (should fail)..."
4452de962bdSlukem	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
446*e670fd5cSchristos		-H $URI1 >> $TESTOUT 2>&1 << EOMODS
4472de962bdSlukemversion: 1
4482de962bdSlukem
4492de962bdSlukemdn: ou=Referral,${BASEDN}
4502de962bdSlukemchangetype: modrdn
4512de962bdSlukemnewrdn: ou=Renamed Referral
4522de962bdSlukemdeleteoldrdn: 1
4532de962bdSlukemEOMODS
4542de962bdSlukem
4552de962bdSlukem	RC=$?
4562de962bdSlukem	if test $RC = 0 ; then
4572de962bdSlukem		echo "ldapmodify should have failed ($RC)!"
4582de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
4592de962bdSlukem		exit 1
4602de962bdSlukem	fi
4612de962bdSlukem
4622de962bdSlukem	echo "Deleting a referral (should fail)..."
4632de962bdSlukem	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
464*e670fd5cSchristos		-H $URI1 >> $TESTOUT 2>&1 << EOMODS
4652de962bdSlukemversion: 1
4662de962bdSlukem
4672de962bdSlukemdn: ou=Referral,${BASEDN}
4682de962bdSlukemchangetype: delete
4692de962bdSlukemEOMODS
4702de962bdSlukem
4712de962bdSlukem	RC=$?
4722de962bdSlukem	if test $RC = 0 ; then
4732de962bdSlukem		echo "ldapmodify should have failed ($RC)!"
4742de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
4752de962bdSlukem		exit 1
4762de962bdSlukem	fi
4772de962bdSlukem
4782de962bdSlukem	echo "Adding a referral..."
4792de962bdSlukem	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
480*e670fd5cSchristos		-H $URI1 -M >> $TESTOUT 2>&1 << EOMODS
4812de962bdSlukemversion: 1
4822de962bdSlukem
4832de962bdSlukemdn: ou=Another Referral,${BASEDN}
4842de962bdSlukemchangetype: add
4852de962bdSlukemobjectClass: referral
4862de962bdSlukemobjectClass: extensibleObject
4872de962bdSlukemou: Another Referral
4882de962bdSlukemref: ldap://localhost:9009/
4892de962bdSlukemEOMODS
4902de962bdSlukem
4912de962bdSlukem	RC=$?
4922de962bdSlukem	if test $RC != 0 ; then
4932de962bdSlukem		echo "ldapmodify failed ($RC)!"
4942de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
4952de962bdSlukem		exit $RC
4962de962bdSlukem	fi
4972de962bdSlukem
4982de962bdSlukem	echo "Modifying a referral with manageDSAit..."
4992de962bdSlukem	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
500*e670fd5cSchristos		-H $URI1 -M >> $TESTOUT 2>&1 << EOMODS
5012de962bdSlukemversion: 1
5022de962bdSlukem
5032de962bdSlukemdn: ou=Referral,${BASEDN}
5042de962bdSlukemchangetype: modify
5052de962bdSlukemreplace: ref
5062de962bdSlukemref: ldap://localhost:9009/
5072de962bdSlukem-
5082de962bdSlukemEOMODS
5092de962bdSlukem
5102de962bdSlukem	RC=$?
5112de962bdSlukem	if test $RC != 0 ; then
5122de962bdSlukem		echo "ldapmodify failed ($RC)!"
5132de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
5142de962bdSlukem		exit $RC
5152de962bdSlukem	fi
5162de962bdSlukem
5172de962bdSlukem	echo "Using ldapsearch to retrieve the modified entry..."
5182de962bdSlukem	echo "# Using ldapsearch to retrieve the modified entry..." >> $SEARCHOUT
519*e670fd5cSchristos	$LDAPSEARCH -S "" -H $URI1 -b "ou=Referral,$BASEDN" -M \
5202de962bdSlukem		 "objectClass=*" '*' ref >> $SEARCHOUT 2>&1
5212de962bdSlukem
5222de962bdSlukem	RC=$?
5232de962bdSlukem	if test $RC != 0 ; then
5242de962bdSlukem		echo "ldapsearch failed ($RC)!"
5252de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
5262de962bdSlukem		exit $RC
5272de962bdSlukem	fi
5282de962bdSlukem
5292de962bdSlukem	echo "Renaming a referral with manageDSAit..."
5302de962bdSlukem	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
531*e670fd5cSchristos		-H $URI1 -M >> $TESTOUT 2>&1 << EOMODS
5322de962bdSlukemversion: 1
5332de962bdSlukem
5342de962bdSlukemdn: ou=Referral,${BASEDN}
5352de962bdSlukemchangetype: modrdn
5362de962bdSlukemnewrdn: ou=Renamed Referral
5372de962bdSlukemdeleteoldrdn: 1
5382de962bdSlukemEOMODS
5392de962bdSlukem
5402de962bdSlukem	RC=$?
5412de962bdSlukem	if test $RC != 0 ; then
5422de962bdSlukem		echo "ldapmodify failed ($RC)!"
5432de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
5442de962bdSlukem		exit $RC
5452de962bdSlukem	fi
5462de962bdSlukem
5472de962bdSlukem	echo "Using ldapsearch to retrieve the renamed entry..."
5482de962bdSlukem	echo "# Using ldapsearch to retrieve the renamed entry..." >> $SEARCHOUT
549*e670fd5cSchristos	$LDAPSEARCH -S "" -H $URI1 -b "ou=Renamed Referral,$BASEDN" -M \
5502de962bdSlukem		 "objectClass=*" '*' ref >> $SEARCHOUT 2>&1
5512de962bdSlukem
5522de962bdSlukem	RC=$?
5532de962bdSlukem	if test $RC != 0 ; then
5542de962bdSlukem		echo "ldapsearch failed ($RC)!"
5552de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
5562de962bdSlukem		exit $RC
5572de962bdSlukem	fi
5582de962bdSlukem
5592de962bdSlukem	echo "Deleting a referral with manageDSAit..."
5602de962bdSlukem	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
561*e670fd5cSchristos		-H $URI1 -M >> $TESTOUT 2>&1 << EOMODS
5622de962bdSlukemversion: 1
5632de962bdSlukem
5642de962bdSlukemdn: ou=Renamed Referral,${BASEDN}
5652de962bdSlukemchangetype: delete
5662de962bdSlukemEOMODS
5672de962bdSlukem
5682de962bdSlukem	RC=$?
5692de962bdSlukem	if test $RC != 0 ; then
5702de962bdSlukem		echo "ldapmodify failed ($RC)!"
5712de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
5722de962bdSlukem		exit $RC
5732de962bdSlukem	fi
5742de962bdSlukem
5752de962bdSlukem	BINDDN="cn=Mitya Kovalev,${BASEDN}"
5762de962bdSlukem	BINDPW="mit"
5772de962bdSlukem	NEWPW="newsecret"
5782de962bdSlukem	echo "Testing passwd change..."
579*e670fd5cSchristos	$LDAPPASSWD -H $URI1 \
5802de962bdSlukem		-D "${BINDDN}" -w ${BINDPW} -s ${NEWPW} \
5812de962bdSlukem		"$BINDDN" >> $TESTOUT 2>&1
5822de962bdSlukem
5832de962bdSlukem	RC=$?
5842de962bdSlukem	if test $RC != 0 ; then
5852de962bdSlukem		echo "ldappasswd failed ($RC)!"
5862de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
5872de962bdSlukem		exit $RC
5882de962bdSlukem	fi
5892de962bdSlukem
5902de962bdSlukem	echo -n "Testing bind with new secret... "
591*e670fd5cSchristos	$LDAPWHOAMI -H $URI1 -D "$BINDDN" -w $NEWPW
5922de962bdSlukem	RC=$?
5932de962bdSlukem	if test $RC != 0 ; then
5942de962bdSlukem		echo "ldapwhoami failed ($RC)!"
5952de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
5962de962bdSlukem		exit $RC
5972de962bdSlukem	fi
5982de962bdSlukem
5992de962bdSlukem	BINDDN="cn=Some One,${BASEDN}"
6002de962bdSlukem	BINDPW="someone"
6012de962bdSlukem	echo -n "Testing bind with newly added user... "
602*e670fd5cSchristos	$LDAPWHOAMI -H $URI1 -D "$BINDDN" -w $BINDPW
6032de962bdSlukem	RC=$?
6042de962bdSlukem	if test $RC != 0 ; then
6052de962bdSlukem		echo "ldapwhoami failed ($RC)!"
6062de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
6072de962bdSlukem		exit $RC
6082de962bdSlukem	fi
6092de962bdSlukem
6102de962bdSlukem	echo "Using ldapsearch to retrieve all the entries..."
6112de962bdSlukem	echo "# Using ldapsearch to retrieve all the entries..." >> $SEARCHOUT
612*e670fd5cSchristos	$LDAPSEARCH -S "" -H $URI1 -b "$BASEDN" \
6132de962bdSlukem		 "objectClass=*" >> $SEARCHOUT 2>&1
6142de962bdSlukem
6152de962bdSlukem	RC=$?
6162de962bdSlukem	if test $RC != 0 ; then
6172de962bdSlukem		echo "ldapsearch failed ($RC)!"
6182de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
6192de962bdSlukem		exit $RC
6202de962bdSlukem	fi
6212de962bdSlukem
6222de962bdSlukem	echo "Filtering ldapsearch results..."
623ef2f90d3Sadam	$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
6242de962bdSlukem	echo "Filtering modified ldif..."
625ef2f90d3Sadam	$LDIFFILTER < $SQLWRITE > $LDIFFLT
6262de962bdSlukem	echo "Comparing filter output..."
6272de962bdSlukem	$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
6282de962bdSlukem
6292de962bdSlukem	if test $? != 0 ; then
6302de962bdSlukem		echo "comparison failed - SQL mods search didn't succeed"
6312de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
6322de962bdSlukem		exit 1
6332de962bdSlukem	fi
6342de962bdSlukem
635*e670fd5cSchristos	echo "Waiting 25 seconds for provider to send changes..."
6362de962bdSlukem	sleep 25
6372de962bdSlukem
6382de962bdSlukem	cat /dev/null > $SEARCHOUT
6392de962bdSlukem
640*e670fd5cSchristos	echo "Using ldapsearch to retrieve all the entries from the provider..."
641*e670fd5cSchristos	echo "# Using ldapsearch to retrieve all the entries from the provider..." \
6422de962bdSlukem		>> $SEARCHOUT
643*e670fd5cSchristos	$LDAPSEARCH -S "" -H $URI1 -b "$BASEDN" \
6442de962bdSlukem		-D "$MANAGERDN" -w $PASSWD \
6452de962bdSlukem		 "(!(objectClass=referral))" >> $SEARCHOUT 2>&1
6462de962bdSlukem
6472de962bdSlukem	RC=$?
6482de962bdSlukem	if test $RC != 0 ; then
6492de962bdSlukem		echo "ldapsearch failed ($RC)!"
6502de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
6512de962bdSlukem		exit $RC
6522de962bdSlukem	fi
6532de962bdSlukem
6542de962bdSlukem	cat /dev/null > $SEARCHOUT2
6552de962bdSlukem
656*e670fd5cSchristos	echo "Using ldapsearch to retrieve all the entries from the consumer..."
657*e670fd5cSchristos	echo "# Using ldapsearch to retrieve all the entries from the consumer..." \
6582de962bdSlukem		>> $SEARCHOUT2
659*e670fd5cSchristos	$LDAPSEARCH -S "" -H $URI2 -b "$BASEDN" \
6602de962bdSlukem		-D "$UPDATEDN" -w $PASSWD \
6612de962bdSlukem		 "(objectClass=*)" >> $SEARCHOUT2 2>&1
6622de962bdSlukem
6632de962bdSlukem	RC=$?
6642de962bdSlukem	if test $RC != 0 ; then
6652de962bdSlukem		echo "ldapsearch failed ($RC)!"
6662de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
6672de962bdSlukem		exit $RC
6682de962bdSlukem	fi
6692de962bdSlukem
670*e670fd5cSchristos	echo "Filtering ldapsearch results from provider..."
671ef2f90d3Sadam	$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
672*e670fd5cSchristos	echo "Filtering ldapsearch results from consumer..."
673ef2f90d3Sadam	$LDIFFILTER < $SEARCHOUT2 > $SEARCHFLT2
6742de962bdSlukem	echo "Comparing filter output..."
6752de962bdSlukem	$CMP $SEARCHFLT $SEARCHFLT2 > $CMPOUT
6762de962bdSlukem
6772de962bdSlukem	if test $? != 0 ; then
6782de962bdSlukem		echo "Comparison failed"
6792de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
6802de962bdSlukem		exit 1
6812de962bdSlukem	fi
6822de962bdSlukem	;;
6832de962bdSlukem
6842de962bdSlukem*)
6852de962bdSlukem	echo "apparently ${RDBMS} does not support writes; skipping..."
6862de962bdSlukem	;;
6872de962bdSlukemesac
6882de962bdSlukem
6892de962bdSlukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS
6902de962bdSlukem
6912de962bdSlukemecho ">>>>> Test succeeded"
6922de962bdSlukemexit 0
693