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