xref: /netbsd-src/external/bsd/openldap/dist/tests/scripts/test004-modify (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
192de962bdSlukemmkdir -p $TESTDIR $DBDIR1
202de962bdSlukem
212de962bdSlukemecho "Running slapadd to build slapd database..."
22*e670fd5cSchristos. $CONFFILTER $BACKEND < $CONF > $CONF1
232de962bdSlukem$SLAPADD -f $CONF1 -l $LDIFORDERED
242de962bdSlukemRC=$?
252de962bdSlukemif test $RC != 0 ; then
262de962bdSlukem	echo "slapadd failed ($RC)!"
272de962bdSlukem	exit $RC
282de962bdSlukemfi
292de962bdSlukem
302de962bdSlukemecho "Starting slapd on TCP/IP port $PORT1..."
31*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
322de962bdSlukemPID=$!
332de962bdSlukemif test $WAIT != 0 ; then
342de962bdSlukem    echo PID $PID
352de962bdSlukem    read foo
362de962bdSlukemfi
372de962bdSlukemKILLPIDS="$PID"
382de962bdSlukem
392de962bdSlukemsleep 1
402de962bdSlukem
412de962bdSlukemecho "Testing slapd modify operations..."
422de962bdSlukemfor i in 0 1 2 3 4 5; do
43*e670fd5cSchristos	$LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
442de962bdSlukem		'objectclass=*' > /dev/null 2>&1
452de962bdSlukem	RC=$?
462de962bdSlukem	if test $RC = 0 ; then
472de962bdSlukem		break
482de962bdSlukem	fi
492de962bdSlukem	echo "Waiting 5 seconds for slapd to start..."
502de962bdSlukem	sleep 5
512de962bdSlukemdone
522de962bdSlukem
532de962bdSlukemif test $RC != 0 ; then
542de962bdSlukem	echo "ldapsearch failed ($RC)!"
552de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
562de962bdSlukem	exit $RC
572de962bdSlukemfi
582de962bdSlukem
592de962bdSlukemecho "Testing modify, add, and delete..."
60*e670fd5cSchristos$LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD > \
61*e670fd5cSchristos	$TESTOUT -f $LDIFMODIFY
622de962bdSlukemRC=$?
632de962bdSlukemif test $RC != 0 ; then
642de962bdSlukem	echo "ldapmodify failed ($RC)!"
652de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
662de962bdSlukem	exit $RC
672de962bdSlukemfi
682de962bdSlukem
692de962bdSlukemecho "Using ldapmodify to add an empty entry (should fail with protocolError)..."
70*e670fd5cSchristos$LDAPMODIFY -D "$MANAGERDN" -H $URI1 -w $PASSWD \
712de962bdSlukem	 >> $TESTOUT 2>&1 << EOMODS
722de962bdSlukemdn: cn=Foo Bar,dc=example,dc=com
732de962bdSlukemchangetype: add
742de962bdSlukem# EMPTY SEQUENCE OF ATTRS
752de962bdSlukemEOMODS
762de962bdSlukem
772de962bdSlukemRC=$?
782de962bdSlukemcase $RC in
792de962bdSlukem2)
802de962bdSlukem	echo "	ldapmodify failed ($RC)"
812de962bdSlukem	;;
822de962bdSlukem0)
832de962bdSlukem	echo "	ldapmodify should have failed ($RC)!"
842de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
852de962bdSlukem	exit -1
862de962bdSlukem	;;
872de962bdSlukem*)
882de962bdSlukem	echo "	ldapmodify failed ($RC)!"
892de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
902de962bdSlukem	exit $RC
912de962bdSlukem	;;
922de962bdSlukemesac
932de962bdSlukem
942de962bdSlukemecho "Using ldapsearch to retrieve all the entries..."
95*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
962de962bdSlukem	    'objectClass=*' > $SEARCHOUT 2>&1
972de962bdSlukemRC=$?
982de962bdSlukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS
992de962bdSlukemif test $RC != 0 ; then
1002de962bdSlukem	echo "ldapsearch failed ($RC)!"
1012de962bdSlukem	exit $RC
1022de962bdSlukemfi
1032de962bdSlukem
104*e670fd5cSchristosLDIF=$MODIFYOUTPROVIDER
1052de962bdSlukem
1062de962bdSlukemecho "Filtering ldapsearch results..."
107ef2f90d3Sadam$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
1082de962bdSlukemecho "Filtering original ldif used to create database..."
109ef2f90d3Sadam$LDIFFILTER < $LDIF > $LDIFFLT
1102de962bdSlukemecho "Comparing filter output..."
1112de962bdSlukem$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
1122de962bdSlukem
1132de962bdSlukemif test $? != 0 ; then
1142de962bdSlukem	echo "comparison failed - modify operations did not complete correctly"
1152de962bdSlukem	exit 1
1162de962bdSlukemfi
1172de962bdSlukem
1182de962bdSlukemecho ">>>>> Test succeeded"
1192de962bdSlukem
1202de962bdSlukemtest $KILLSERVERS != no && wait
1212de962bdSlukem
1222de962bdSlukemexit 0
123