#! /bin/sh # $OpenLDAP$ ## This work is part of OpenLDAP Software . ## ## Copyright 1998-2006 The OpenLDAP Foundation. ## All rights reserved. ## ## Redistribution and use in source and binary forms, with or without ## modification, are permitted only as authorized by the OpenLDAP ## Public License. ## ## A copy of this license is available in the file LICENSE in the ## top-level directory of the distribution or, alternatively, at ## . echo "running defines.sh" . $SRCDIR/scripts/defines.sh mkdir -p $TESTDIR $DBDIR1 echo "Running slapadd to build slapd database..." . $CONFFILTER $BACKEND $MONITORDB < $CONF > $CONF1 $SLAPADD -f $CONF1 -l $LDIFORDERED RC=$? if test $RC != 0 ; then echo "slapadd failed ($RC)!" exit $RC fi echo "Starting slapd on TCP/IP port $PORT1..." $SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 & PID=$! if test $WAIT != 0 ; then echo PID $PID read foo fi KILLPIDS="$PID" sleep 1 echo "Testing slapd Manage operations..." for i in 0 1 2 3 4 5; do $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \ 'objectclass=*' > /dev/null 2>&1 RC=$? if test $RC = 0 ; then break fi echo "Waiting 5 seconds for slapd to start..." sleep 5 done if test $RC != 0 ; then echo "ldapsearch failed ($RC)!" test $KILLSERVERS != no && kill -HUP $KILLPIDS exit $RC fi # ITS#3898: #ifndef LDAP_DEVEL, the control is not available MANAGEDITOID="1.3.6.1.4.1.4203.666.5.12" case `$LDAPSEARCH -s base -b "" -h $LOCALHOST -p $PORT1 \ '(supportedControl:objectIdentifierMatch:='${MANAGEDITOID}')' \ supportedControl | grep "supportedControl: ${MANAGEDITOID}"` in "supportedControl: ${MANAGEDITOID}") ;; *) echo "The \"manageDIT\" control appears to be unsupported; test disabled" test $KILLSERVERS != no && kill -HUP $KILLPIDS exit 0 ;; esac echo "Testing modify, add, and delete..." $LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD \ -e \!manageDIT > \ $TESTOUT 2>&1 << EOMODS version: 1 # # Working Tests # # # ObjectClass tests # dn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,dc=example, dc=com # add obsolete auxiliary objectclass changetype: modify add: objectClass objectClass: obsoletePerson dn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,dc=example, dc=com # add obsolete attribute changetype: modify add: testObsolete testObsolete: TRUE # # create/modify timestamp test # dn: ou=Groups,dc=example,dc=com # change creatorsName changetype: modify replace: creatorsName creatorsName: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc=com dn: cn=ITD Staff,ou=Groups,dc=example,dc=com # change modifiersName changetype: modify replace: modifiersName modifiersName: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc=com dn: dc=example,dc=com # change timestamps changetype: modify replace: modifyTimestamp modifyTimestamp: 19700101000000Z - replace: createTimestamp createTimestamp: 19700101000000Z - dn: cn=All Staff,ou=Groups,dc=example,dc=com # change entryUUID changetype: modify replace: entryUUID entryUUID: badbadba-dbad-1029-92f7-badbadbadbad dn: cn=All Staff,dc=example,dc=com changetype: add objectClass: groupOfNames cn: All Staff member: creatorsName: cn=Someone createTimestamp: 19700101000000Z modifiersName: cn=Someone Else modifyTimestamp: 19700101000000Z entryUUID: badbadef-dbad-1029-92f7-badbadbadbad EOMODS RC=$? if test $RC != 0 ; then echo "ldapmodify failed ($RC)!" test $KILLSERVERS != no && kill -HUP $KILLPIDS exit $RC fi echo "Testing modify, add, and delete..." $LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD \ -e \!manageDIT > \ $TESTOUT 2>&1 << EOMODS version: 1 # # Non-working tests # dn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,dc=example, dc=com # update structural object class of entry via objectClass replace changetype: modify replace: objectClass objectClass: obsoletePerson - replace: structuralObjectClass structuralObjectClass: testPerson dn: cn=James A Jones 1,ou=Alumni Association,ou=People,dc=example,dc=com # update structural object class of entry via objectClass add changetype: modify add: objectClass objectClass: testPerson - replace: structuralObjectClass structuralObjectClass: testPerson dn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc=com # update structural object class of entry via objectClass delete/add changetype: modify delete: objectClass objectClass: OpenLDAPperson - add: objectClass objectClass: testPerson - delete: structuralObjectClass - add: structuralObjectClass structuralObjectClass: testPerson EOMODS RC=$? if test $RC != 0 ; then echo "ldapmodify failed ($RC)! IGNORED" # test $KILLSERVERS != no && kill -HUP $KILLPIDS # exit $RC fi echo "Using ldapsearch to retrieve all the entries..." $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \ 'objectClass=*' '*' creatorsName modifiersName > $SEARCHOUT 2>&1 RC=$? if test $RC != 0 ; then test $KILLSERVERS != no && kill -HUP $KILLPIDS echo "ldapsearch failed ($RC)!" exit $RC fi $LDAPSEARCH -S "" -b "$BASEDN" -s base -h $LOCALHOST -p $PORT1 \ 'objectClass=*' '*' creatorsName createTimestamp \ modifiersName modifyTimestamp >> $SEARCHOUT 2>&1 RC=$? if test $RC != 0 ; then test $KILLSERVERS != no && kill -HUP $KILLPIDS echo "ldapsearch failed ($RC)!" exit $RC fi $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \ '(cn=All Staff)' '*' entryUUID >> $SEARCHOUT 2>&1 RC=$? test $KILLSERVERS != no && kill -HUP $KILLPIDS if test $RC != 0 ; then echo "ldapsearch failed ($RC)!" exit $RC fi LDIF=$MANAGEOUT echo "Filtering ldapsearch results..." . $LDIFFILTER < $SEARCHOUT > $SEARCHFLT echo "Filtering original ldif used to create database..." . $LDIFFILTER < $LDIF > $LDIFFLT echo "Comparing filter output..." $CMP $SEARCHFLT $LDIFFLT > $CMPOUT if test $? != 0 ; then echo "comparison failed - manage operations did not complete correctly" exit 1 fi echo ">>>>> Test succeeded" test $KILLSERVERS != no && wait exit 0