xref: /netbsd-src/external/bsd/openldap/dist/tests/scripts/test037-manage (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 $BACKEND = "ldif" ; then
204e6df137Slukem	echo "LDIF backend does not support relax control, test skipped"
212de962bdSlukem	exit 0
222de962bdSlukemfi
232de962bdSlukem
242de962bdSlukemmkdir -p $TESTDIR $DBDIR1
252de962bdSlukem
262de962bdSlukemecho "Running slapadd to build slapd database..."
27*e670fd5cSchristos. $CONFFILTER $BACKEND < $CONF > $CONF1
282de962bdSlukem$SLAPADD -f $CONF1 -l $LDIFORDERED
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 Manage 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 "Testing modify, add, and delete..."
65*e670fd5cSchristos$LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD \
662de962bdSlukem	-e \!relax > \
672de962bdSlukem	$TESTOUT 2>&1 << EOMODS
682de962bdSlukemversion: 1
692de962bdSlukem#
702de962bdSlukem# Working Tests
712de962bdSlukem#
722de962bdSlukem
732de962bdSlukem#
742de962bdSlukem# ObjectClass tests
752de962bdSlukem#
762de962bdSlukem
772de962bdSlukemdn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,dc=example,
782de962bdSlukem dc=com
792de962bdSlukem# add obsolete auxiliary objectclass
802de962bdSlukemchangetype: modify
812de962bdSlukemadd: objectClass
822de962bdSlukemobjectClass: obsoletePerson
832de962bdSlukem
842de962bdSlukemdn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,dc=example,
852de962bdSlukem dc=com
862de962bdSlukem# add obsolete attribute
872de962bdSlukemchangetype: modify
882de962bdSlukemadd: testObsolete
892de962bdSlukemtestObsolete: TRUE
902de962bdSlukem
912de962bdSlukem#
922de962bdSlukem# create/modify timestamp test
932de962bdSlukem#
942de962bdSlukem
952de962bdSlukemdn: ou=Groups,dc=example,dc=com
962de962bdSlukem# change creatorsName
972de962bdSlukemchangetype: modify
982de962bdSlukemreplace: creatorsName
992de962bdSlukemcreatorsName: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc=com
1002de962bdSlukem
1012de962bdSlukemdn: cn=ITD Staff,ou=Groups,dc=example,dc=com
1022de962bdSlukem# change modifiersName
1032de962bdSlukemchangetype: modify
1042de962bdSlukemreplace: modifiersName
1052de962bdSlukemmodifiersName: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc=com
1062de962bdSlukem
1072de962bdSlukemdn: dc=example,dc=com
1082de962bdSlukem# change timestamps
1092de962bdSlukemchangetype: modify
1102de962bdSlukemreplace: modifyTimestamp
1112de962bdSlukemmodifyTimestamp: 19700101000000Z
1122de962bdSlukem-
1132de962bdSlukemreplace: createTimestamp
1142de962bdSlukemcreateTimestamp: 19700101000000Z
1152de962bdSlukem-
1162de962bdSlukem
1172de962bdSlukemdn: cn=All Staff,ou=Groups,dc=example,dc=com
1182de962bdSlukem# change entryUUID
1192de962bdSlukemchangetype: modify
1202de962bdSlukemreplace: entryUUID
1212de962bdSlukementryUUID: badbadba-dbad-1029-92f7-badbadbadbad
1222de962bdSlukem
1232de962bdSlukemdn: cn=All Staff,dc=example,dc=com
1242de962bdSlukemchangetype: add
1252de962bdSlukemobjectClass: groupOfNames
1262de962bdSlukemcn: All Staff
1272de962bdSlukemmember:
1282de962bdSlukemcreatorsName: cn=Someone
1292de962bdSlukemcreateTimestamp: 19700101000000Z
1302de962bdSlukemmodifiersName: cn=Someone Else
1312de962bdSlukemmodifyTimestamp: 19700101000000Z
1322de962bdSlukementryUUID: badbadef-dbad-1029-92f7-badbadbadbad
1332de962bdSlukem
1342de962bdSlukem#
1354e6df137Slukem# Tests that did not work until ITS#5792
1362de962bdSlukem#
1372de962bdSlukem
1382de962bdSlukemdn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,dc=example,
1392de962bdSlukem dc=com
1402de962bdSlukem# update structural object class of entry via objectClass replace
1412de962bdSlukemchangetype: modify
1422de962bdSlukemreplace: objectClass
1432de962bdSlukemobjectClass: obsoletePerson
1444e6df137SlukemobjectClass: testPerson
1452de962bdSlukem-
1462de962bdSlukem
1472de962bdSlukemdn: cn=James A Jones 1,ou=Alumni Association,ou=People,dc=example,dc=com
1482de962bdSlukem# update structural object class of entry via objectClass add
1492de962bdSlukemchangetype: modify
1502de962bdSlukemadd: objectClass
1512de962bdSlukemobjectClass: testPerson
1522de962bdSlukem-
1532de962bdSlukem
1542de962bdSlukemdn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc=com
1552de962bdSlukem# update structural object class of entry via objectClass delete/add
1562de962bdSlukemchangetype: modify
1572de962bdSlukemdelete: objectClass
1582de962bdSlukemobjectClass: OpenLDAPperson
1592de962bdSlukem-
1602de962bdSlukemadd: objectClass
1612de962bdSlukemobjectClass: testPerson
1622de962bdSlukem-
1632de962bdSlukemEOMODS
1642de962bdSlukem
1652de962bdSlukemRC=$?
1662de962bdSlukemif test $RC != 0 ; then
1674e6df137Slukem	echo "ldapmodify failed ($RC)!"
1684e6df137Slukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1694e6df137Slukem	exit $RC
1702de962bdSlukemfi
1712de962bdSlukem
1722de962bdSlukemecho "Using ldapsearch to retrieve all the entries..."
173*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
1742de962bdSlukem    'objectClass=*' '*' creatorsName modifiersName > $SEARCHOUT 2>&1
1752de962bdSlukemRC=$?
1762de962bdSlukemif test $RC != 0 ; then
1772de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1782de962bdSlukem	echo "ldapsearch failed ($RC)!"
1792de962bdSlukem	exit $RC
1802de962bdSlukemfi
1812de962bdSlukem
182*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -s base -H $URI1 \
1832de962bdSlukem    'objectClass=*' '*' creatorsName createTimestamp \
1842de962bdSlukem    modifiersName modifyTimestamp >> $SEARCHOUT 2>&1
1852de962bdSlukemRC=$?
1862de962bdSlukemif test $RC != 0 ; then
1872de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1882de962bdSlukem	echo "ldapsearch failed ($RC)!"
1892de962bdSlukem	exit $RC
1902de962bdSlukemfi
1912de962bdSlukem
192*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
1932de962bdSlukem    '(cn=All Staff)' '*' entryUUID >> $SEARCHOUT 2>&1
1942de962bdSlukemRC=$?
1952de962bdSlukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS
1962de962bdSlukemif test $RC != 0 ; then
1972de962bdSlukem	echo "ldapsearch failed ($RC)!"
1982de962bdSlukem	exit $RC
1992de962bdSlukemfi
2002de962bdSlukem
2012de962bdSlukemLDIF=$MANAGEOUT
2022de962bdSlukem
2032de962bdSlukemecho "Filtering ldapsearch results..."
204ef2f90d3Sadam$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
2052de962bdSlukemecho "Filtering original ldif used to create database..."
206ef2f90d3Sadam$LDIFFILTER < $LDIF > $LDIFFLT
2072de962bdSlukemecho "Comparing filter output..."
2082de962bdSlukem$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
2092de962bdSlukem
2102de962bdSlukemif test $? != 0 ; then
2112de962bdSlukem	echo "comparison failed - manage operations did not complete correctly"
2122de962bdSlukem	exit 1
2132de962bdSlukemfi
2142de962bdSlukem
2152de962bdSlukemecho ">>>>> Test succeeded"
2162de962bdSlukem
2172de962bdSlukemtest $KILLSERVERS != no && wait
2182de962bdSlukem
2192de962bdSlukemexit 0
220