mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-03-07 14:18:15 +08:00
ldapsearch: use draft guidelines for determining when to use -t only writes binary attributes to files -tt writes all attributes to files output now lists URL instead of path to such files -T dir can be used to specify directory to create temp files in -V urlprefix can be used to change the URL prefix LDIF is now commented (can be disabled using -LL) LDIF now contains version attribute (can be disabled with -LLL) LDIF: put interface changed to allow caller to specify how to encode put interface uses draft guidelines for determine when to base64 encode wrapping kludged to match old off by one bug Tests: removed trailing space from some attributes (to avoid base64 encoding) enabled -LLL in defines.sh (should sed output to remove wrapping/comments/redundant separators) Misc: updated codes outputting LDIF to use new put interface TODO: handling of version attribute on input handling of URLs on input (ie: fetch URL)
218 lines
5.4 KiB
Bash
Executable File
218 lines
5.4 KiB
Bash
Executable File
#! /bin/sh
|
|
|
|
if test $# -eq 0 ; then
|
|
SRCDIR="."
|
|
else
|
|
SRCDIR=$1; shift
|
|
fi
|
|
if test $# -eq 1 ; then
|
|
BACKEND=$1; shift
|
|
fi
|
|
|
|
echo "running defines.sh $SRCDIR $BACKEND"
|
|
. $SRCDIR/scripts/defines.sh
|
|
|
|
echo "Cleaning up in $DBDIR..."
|
|
|
|
rm -f $DBDIR/[!C]*
|
|
|
|
echo "Running ldif2ldbm to build slapd database..."
|
|
$LDIF2LDBM -f $CONF -i $LDIF -e ../servers/slapd/tools
|
|
RC=$?
|
|
if test $RC != 0 ; then
|
|
echo "ldif2ldbm failed!"
|
|
exit $RC
|
|
fi
|
|
|
|
echo "Starting slapd on TCP/IP port $PORT..."
|
|
$SLAPD -f $CONF -p $PORT -d $LVL $TIMING > $MASTERLOG 2>&1 &
|
|
PID=$!
|
|
echo "Testing slapd modrdn operations..."
|
|
|
|
# Make sure we can search the database
|
|
for i in 0 1 2 3 4 5; do
|
|
$LDAPSEARCH -s base -b "$MONITOR" -h localhost -p $PORT \
|
|
'objectclass=*' > /dev/null 2>&1
|
|
RC=$?
|
|
if test $RC = 1 ; then
|
|
echo "Waiting 5 seconds for slapd to start..."
|
|
sleep 5
|
|
fi
|
|
done
|
|
|
|
if test $RC != 0 ; then
|
|
echo "ldapsearch failed!"
|
|
kill -HUP $PID
|
|
exit $RC
|
|
fi
|
|
|
|
# -r used to do remove of old rdn
|
|
|
|
echo "Testing modrdn(deleteoldrdn=0)..."
|
|
$LDAPMODRDN -v -D "$MANAGERDN" -h localhost -p $PORT -w $PASSWD > \
|
|
$TESTOUT 2>&1 'cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US' 'cn=James A Jones III'
|
|
|
|
RC=$?
|
|
if test $RC != 0 ; then
|
|
echo "ldapmodrdn failed!"
|
|
kill -HUP $PID
|
|
exit $RC
|
|
fi
|
|
|
|
echo "Testing modrdn(deleteoldrdn=1)..."
|
|
$LDAPMODRDN -v -D "$MANAGERDN" -r -h localhost -p $PORT -w $PASSWD >> \
|
|
$TESTOUT 2>&1 'cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US' 'cn=James A Jones II'
|
|
|
|
RC=$?
|
|
if test $RC != 0 ; then
|
|
echo "ldapmodrdn failed!"
|
|
kill -HUP $PID
|
|
exit $RC
|
|
fi
|
|
|
|
# Ensure the new rdn's can be found
|
|
|
|
echo "Using ldapsearch to retrieve entries using new rdn (cn=James A Jones III)..."
|
|
$LDAPSEARCH -S "" -b "$BASEDN" -h localhost -p $PORT \
|
|
'cn=James A Jones III' | egrep -iv '^createtimestamp:|^modifytimestamp:' \
|
|
> $SEARCHOUT 2>&1
|
|
RC=$?
|
|
if test $RC != 0 ; then
|
|
echo "ldapsearch failed!"
|
|
kill -HUP $PID
|
|
exit $RC
|
|
fi
|
|
|
|
|
|
LDIF=$MODRDNOUTMASTER1
|
|
|
|
echo "Filtering ldapsearch results..."
|
|
. $SRCDIR/scripts/acfilter.sh < $SEARCHOUT > $SEARCHFLT
|
|
echo "Filtering original ldif used to create database..."
|
|
. $SRCDIR/scripts/acfilter.sh < $LDIF > $LDIFFLT
|
|
echo "Comparing filter output..."
|
|
cmp $SEARCHFLT $LDIFFLT
|
|
|
|
if test $? != 0 ; then
|
|
echo "comparison failed - modrdn operations did not complete correctly"
|
|
kill -HUP $PID
|
|
exit 1
|
|
fi
|
|
|
|
|
|
echo "Using ldapsearch to retrieve entries using new rdn (cn=James A Jones II)..."
|
|
$LDAPSEARCH -S "" -b "$BASEDN" -h localhost -p $PORT \
|
|
'cn=James A Jones II' | egrep -iv '^createtimestamp:|^modifytimestamp:' \
|
|
> $SEARCHOUT 2>&1
|
|
RC=$?
|
|
if test $RC != 0 ; then
|
|
echo "ldapsearch failed!"
|
|
kill -HUP $PID
|
|
exit $RC
|
|
fi
|
|
|
|
|
|
LDIF=$MODRDNOUTMASTER2
|
|
|
|
echo "Filtering ldapsearch results..."
|
|
. $SRCDIR/scripts/acfilter.sh < $SEARCHOUT > $SEARCHFLT
|
|
echo "Filtering original ldif used to create database..."
|
|
. $SRCDIR/scripts/acfilter.sh < $LDIF > $LDIFFLT
|
|
echo "Comparing filter output..."
|
|
cmp $SEARCHFLT $LDIFFLT
|
|
|
|
if test $? != 0 ; then
|
|
echo "comparison failed - modrdn operations did not complete correctly"
|
|
kill -HUP $PID
|
|
exit 1
|
|
fi
|
|
|
|
# Ensure that you cannot find the entry for which the rdn was deleted as
|
|
# an attribute.
|
|
|
|
echo "Using ldapsearch to retrieve entries using removed rdn (cn=James A Jones 2)..."
|
|
$LDAPSEARCH -S "" -b "$BASEDN" -h localhost -p $PORT \
|
|
'cn=James A Jones 2' | egrep -iv '^createtimestamp:|^modifytimestamp:' \
|
|
> /dev/null 2>&1
|
|
RC=$?
|
|
if test $RC = 0 ; then
|
|
echo "failure: ldapsearch found attribute that was to be removed!"
|
|
kill -HUP $PID
|
|
exit $RC
|
|
fi
|
|
|
|
echo "Using ldapsearch to retrieve all the entries..."
|
|
$LDAPSEARCH -S "" -b "$BASEDN" -h localhost -p $PORT \
|
|
'objectClass=*' > $SEARCHOUT 2>&1
|
|
RC=$?
|
|
if test $RC != 0 ; then
|
|
kill -HUP $PID
|
|
echo "ldapsearch failed!"
|
|
exit $RC
|
|
fi
|
|
|
|
LDIF=$MODRDNOUTMASTER0
|
|
|
|
echo "Filtering ldapsearch results..."
|
|
. $SRCDIR/scripts/acfilter.sh < $SEARCHOUT > $SEARCHFLT
|
|
echo "Filtering original ldif used to create database..."
|
|
. $SRCDIR/scripts/acfilter.sh < $LDIF > $LDIFFLT
|
|
echo "Comparing filter output..."
|
|
cmp $SEARCHFLT $LDIFFLT
|
|
|
|
if test $? != 0 ; then
|
|
echo "comparison failed - modrdn operations did not complete correctly"
|
|
kill -HUP $PID
|
|
exit 1
|
|
fi
|
|
|
|
|
|
echo "Testing modrdn(deleteoldrdn=1), modrdn with new rdn already an att val..."
|
|
$LDAPMODRDN -v -D "$MANAGERDN" -r -h localhost -p $PORT -w $PASSWD > \
|
|
/dev/null 2>&1 'cn=James A Jones III, ou=Alumni Association, ou=People, o=University of Michigan, c=US' 'cn=James A Jones 1'
|
|
|
|
RC=$?
|
|
if test $RC != 0 ; then
|
|
echo "ldapmodrdn failed!"
|
|
kill -HUP $PID
|
|
exit $RC
|
|
fi
|
|
|
|
# Test that you can use modrdn with an attribute value which was previously
|
|
# present
|
|
|
|
echo "Using ldapsearch to retrieve entries using new rdn (cn=James A Jones 1)..."
|
|
$LDAPSEARCH -S "" -b "$BASEDN" -h localhost -p $PORT \
|
|
'cn=James A Jones 1' | egrep -iv '^createtimestamp:|^modifytimestamp:' \
|
|
> $SEARCHOUT 2>&1
|
|
RC=$?
|
|
if test $RC != 0 ; then
|
|
echo "ldapsearch failed!"
|
|
kill -HUP $PID
|
|
exit $RC
|
|
fi
|
|
|
|
|
|
LDIF=$MODRDNOUTMASTER3
|
|
|
|
echo "Filtering ldapsearch results..."
|
|
. $SRCDIR/scripts/acfilter.sh < $SEARCHOUT > $SEARCHFLT
|
|
echo "Filtering original ldif used to create database..."
|
|
. $SRCDIR/scripts/acfilter.sh < $LDIF > $LDIFFLT
|
|
echo "Comparing filter output..."
|
|
cmp $SEARCHFLT $LDIFFLT
|
|
|
|
kill -HUP $PID
|
|
if test $? != 0 ; then
|
|
echo "comparison failed - modrdn operations did not complete correctly"
|
|
exit 1
|
|
fi
|
|
|
|
echo ">>>>> Test succeeded"
|
|
|
|
|
|
|
|
# echo "modrdn test not yet written"
|
|
|
|
exit 0
|