mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-06 10:46:21 +08:00
add test for proxy massaging, in view of using rwm for back-ldap massaging
This commit is contained in:
parent
d7bdb8cb24
commit
6b6e41092d
2130
tests/data/proxymassage.out
Normal file
2130
tests/data/proxymassage.out
Normal file
File diff suppressed because it is too large
Load Diff
63
tests/data/slapd-proxymassage.conf
Normal file
63
tests/data/slapd-proxymassage.conf
Normal file
@ -0,0 +1,63 @@
|
||||
# master slapd config -- for testing
|
||||
# $OpenLDAP$
|
||||
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
|
||||
##
|
||||
## Copyright 1998-2004 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
|
||||
## <http://www.OpenLDAP.org/license.html>.
|
||||
|
||||
include ./schema/core.schema
|
||||
include ./schema/cosine.schema
|
||||
include ./schema/inetorgperson.schema
|
||||
include ./schema/openldap.schema
|
||||
include ./schema/nis.schema
|
||||
include ./schema/ppolicy.schema
|
||||
pidfile ./test-db/slapd.pid
|
||||
argsfile ./test-db/slapd.args
|
||||
|
||||
#mod#modulepath ../servers/slapd/back-@BACKEND@/
|
||||
#mod#moduleload back_@BACKEND@.la
|
||||
#ldapmod#modulepath ../servers/slapd/back-ldap/
|
||||
#ldapmod#moduleload back_ldap.la
|
||||
#monitormod#modulepath ../servers/slapd/back-monitor/
|
||||
#monitormod#moduleload back_monitor.la
|
||||
#rwmmod#modulepath ../servers/slapd/overlays/
|
||||
#rwmmod#moduleload rwm.la
|
||||
|
||||
#######################################################################
|
||||
# database definitions
|
||||
#######################################################################
|
||||
|
||||
database @BACKEND@
|
||||
suffix "dc=example,dc=com"
|
||||
directory ./testrun/db.1.a
|
||||
rootdn "cn=Manager,dc=example,dc=com"
|
||||
rootpw secret
|
||||
index objectClass eq
|
||||
|
||||
database ldap
|
||||
suffix "o=Example,c=US"
|
||||
uri "@URI1@"
|
||||
overlay rwm
|
||||
suffixmassage "o=Example,c=US" "dc=example,dc=com"
|
||||
|
||||
database ldap
|
||||
suffix "o=Esempio,c=IT"
|
||||
uri "@URI1@"
|
||||
overlay rwm
|
||||
suffixmassage "o=Esempio,c=IT" "dc=example,dc=com"
|
||||
|
||||
database ldap
|
||||
suffix "o=Beispiel,c=DE"
|
||||
uri "@URI1@"
|
||||
overlay rwm
|
||||
suffixmassage "o=Beispiel,c=DE" "dc=example,dc=com"
|
||||
|
||||
#monitor#database monitor
|
@ -74,6 +74,7 @@ LDAPGLUECONF1=$DATADIR/slapd-ldapglue.conf
|
||||
LDAPGLUECONF2=$DATADIR/slapd-ldapgluepeople.conf
|
||||
LDAPGLUECONF3=$DATADIR/slapd-ldapgluegroups.conf
|
||||
RWMCONF=$DATADIR/slapd-relay.conf
|
||||
PROXYMASSAGECONF=$DATADIR/slapd-proxymassage.conf
|
||||
SQLCONF=$DATADIR/slapd-sql.conf
|
||||
|
||||
CONF1=$TESTDIR/slapd.1.conf
|
||||
@ -110,6 +111,7 @@ LDAPPASSWD="$CLIENTDIR/ldappasswd $TOOLARGS"
|
||||
LDAPSASLSEARCH="$CLIENTDIR/ldapsearch $TOOLPROTO $LDAP_TOOLARGS -LLL"
|
||||
LDAPSEARCH="$CLIENTDIR/ldapsearch $TOOLPROTO $TOOLARGS -LLL"
|
||||
LDAPRSEARCH="$CLIENTDIR/ldapsearch $TOOLPROTO $TOOLARGS"
|
||||
LDAPDELETE="$CLIENTDIR/ldapdelete $TOOLPROTO $TOOLARGS"
|
||||
LDAPMODIFY="$CLIENTDIR/ldapmodify $TOOLPROTO $TOOLARGS"
|
||||
LDAPADD="$CLIENTDIR/ldapmodify -a $TOOLPROTO $TOOLARGS"
|
||||
LDAPMODRDN="$CLIENTDIR/ldapmodrdn $TOOLPROTO $TOOLARGS"
|
||||
@ -156,6 +158,7 @@ LDIFLDAPGLUE1=$DATADIR/test-ldapglue.ldif
|
||||
LDIFLDAPGLUE2=$DATADIR/test-ldapgluepeople.ldif
|
||||
LDIFLDAPGLUE3=$DATADIR/test-ldapgluegroups.ldif
|
||||
LDIFCOMPMATCH=$DATADIR/test-compmatch.ldif
|
||||
SQLADD=$DATADIR/sql-add.ldif
|
||||
MONITOR=""
|
||||
REFDN="c=US"
|
||||
BASEDN="dc=example,dc=com"
|
||||
@ -225,6 +228,7 @@ IDASSERTOUT=$DATADIR/idassert.out
|
||||
LDAPGLUEOUT=$DATADIR/ldapglue.out
|
||||
LDAPGLUEANONYMOUSOUT=$DATADIR/ldapglueanonymous.out
|
||||
RELAYOUT=$DATADIR/relay.out
|
||||
PROXYMASSAGEOUT=$DATADIR/proxymassage.out
|
||||
SQLREAD=$DATADIR/sql-read.out
|
||||
SQLWRITE=$DATADIR/sql-write.out
|
||||
|
||||
|
315
tests/scripts/test032-proxymassage
Executable file
315
tests/scripts/test032-proxymassage
Executable file
@ -0,0 +1,315 @@
|
||||
#! /bin/sh
|
||||
# $OpenLDAP$
|
||||
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
|
||||
##
|
||||
## Copyright 1998-2004 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
|
||||
## <http://www.OpenLDAP.org/license.html>.
|
||||
|
||||
echo "running defines.sh"
|
||||
. $SRCDIR/scripts/defines.sh
|
||||
|
||||
echo "### Proxy Massage test temporarily disabled"
|
||||
echo "### (assumes massage occurs via rwm overlay)"
|
||||
exit 0
|
||||
|
||||
if test $RWM = rwmno ; then
|
||||
echo "Rewrite/remap overlay not available, test skipped"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if test $BACKLDAP = "ldapno" ; then
|
||||
echo "LDAP backend not available, test skipped"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
mkdir -p $TESTDIR $DBDIR1
|
||||
|
||||
echo "Starting slapd on TCP/IP port $PORT1..."
|
||||
. $CONFFILTER $BACKEND $MONITORDB < $PROXYMASSAGECONF > $CONF1
|
||||
$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"
|
||||
|
||||
echo "Using ldapsearch to check that slapd is running..."
|
||||
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
|
||||
|
||||
echo "Using ldapadd to populate the database..."
|
||||
$LDAPADD -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD < \
|
||||
$LDIFORDERED > $TESTOUT 2>&1
|
||||
RC=$?
|
||||
if test $RC != 0 ; then
|
||||
echo "ldapadd failed ($RC)!"
|
||||
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||
exit $RC
|
||||
fi
|
||||
|
||||
cat /dev/null > $SEARCHOUT
|
||||
|
||||
BASEDN="dc=example,dc=com"
|
||||
echo "searching base=\"$BASEDN\"..."
|
||||
echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
|
||||
$LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" >> $SEARCHOUT 2>&1
|
||||
RC=$?
|
||||
if test $RC != 0 ; then
|
||||
echo "Search failed ($RC)!"
|
||||
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||
exit $RC
|
||||
fi
|
||||
|
||||
BASEDN="o=Example,c=US"
|
||||
echo "searching base=\"$BASEDN\"..."
|
||||
echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
|
||||
$LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" >> $SEARCHOUT 2>&1
|
||||
RC=$?
|
||||
if test $RC != 0 ; then
|
||||
echo "Search failed ($RC)!"
|
||||
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||
exit $RC
|
||||
fi
|
||||
|
||||
BASEDN="o=Esempio,c=IT"
|
||||
echo "searching base=\"$BASEDN\"..."
|
||||
echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
|
||||
$LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" >> $SEARCHOUT 2>&1
|
||||
RC=$?
|
||||
if test $RC != 0 ; then
|
||||
echo "Search failed ($RC)!"
|
||||
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||
exit $RC
|
||||
fi
|
||||
|
||||
BASEDN="o=Beispiel,c=DE"
|
||||
echo "searching base=\"$BASEDN\"..."
|
||||
echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
|
||||
$LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" >> $SEARCHOUT 2>&1
|
||||
RC=$?
|
||||
if test $RC != 0 ; then
|
||||
echo "Search failed ($RC)!"
|
||||
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||
exit $RC
|
||||
fi
|
||||
|
||||
#
|
||||
# Do some modifications
|
||||
#
|
||||
|
||||
BASEDN="o=Beispiel,c=DE"
|
||||
echo "modifying database \"$BASEDN\"..."
|
||||
$LDAPMODIFY -v -D "cn=Manager,$BASEDN" -h $LOCALHOST -p $PORT1 -w $PASSWD \
|
||||
-e manageDSAit >> $TESTOUT 2>&1 << EOMODS
|
||||
dn: cn=Added User,ou=Alumni Association,ou=People,$BASEDN
|
||||
changetype: add
|
||||
objectClass: OpenLDAPperson
|
||||
cn: Added User
|
||||
sn: User
|
||||
uid: auser
|
||||
seealso: cn=All Staff,ou=Groups,$BASEDN
|
||||
homephone: +49 1234567890
|
||||
drink: Beer
|
||||
mail: auser@mail.alumni.example.com
|
||||
telephonenumber: +49 1234-567-890
|
||||
description: Just added in o=Beispiel,c=DE naming context
|
||||
|
||||
dn: cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN
|
||||
changetype: modify
|
||||
add: seeAlso
|
||||
seeAlso: cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN
|
||||
-
|
||||
add: description
|
||||
description: Just added self to seeAlso in $BASEDN virtual naming context
|
||||
-
|
||||
|
||||
dn: cn=Mark Elliot,ou=Alumni Association,ou=People,$BASEDN
|
||||
changetype: delete
|
||||
|
||||
dn: cn=John Doe,ou=Information Technology Division,ou=People,$BASEDN
|
||||
changetype: modrdn
|
||||
newrdn: cn=John P. Doe
|
||||
deleteoldrdn: 1
|
||||
|
||||
dn: cn=Jane Doe,ou=Alumni Association,ou=People,$BASEDN
|
||||
changetype: modrdn
|
||||
newrdn: cn=Jane Q. Doe
|
||||
deleteoldrdn: 1
|
||||
newsuperior: ou=Information Technology Division,ou=People,$BASEDN
|
||||
|
||||
dn: cn=Jane Q. Doe,ou=Information Technology Division,ou=People,$BASEDN
|
||||
changetype: modify
|
||||
add: cn
|
||||
cn: Jane Qissapaolo Doe
|
||||
-
|
||||
|
||||
dn: ou=Referrals,$BASEDN
|
||||
changetype: add
|
||||
objectclass: referral
|
||||
objectclass: extensibleObject
|
||||
ou: Referrals
|
||||
ref: ldap://localhost.localdomain/ou=Referrals,$BASEDN
|
||||
description: Just added as ldap://localhost.localdomain:389/ou=Referrals,$BASEDN
|
||||
|
||||
dn: ou=Referrals,$BASEDN
|
||||
changetype: modify
|
||||
replace: ref
|
||||
ref: ldap://ldap.example.com:389/ou=Referrals,$BASEDN
|
||||
-
|
||||
add: description
|
||||
description: ...and modified as ldap://ldap.example.com:389/ou=Referrals,$BASEDN
|
||||
-
|
||||
EOMODS
|
||||
|
||||
if test $RC != 0 ; then
|
||||
echo "Modify failed ($RC)!"
|
||||
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||
exit $RC
|
||||
fi
|
||||
|
||||
BASEDN="o=Esempio,c=IT"
|
||||
echo "searching base=\"$BASEDN\"..."
|
||||
echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
|
||||
$LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" >> $SEARCHOUT 2>&1
|
||||
RC=$?
|
||||
if test $RC != 0 ; then
|
||||
echo "Search failed ($RC)!"
|
||||
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||
exit $RC
|
||||
fi
|
||||
|
||||
FILTER="(objectClass=referral)"
|
||||
echo "searching filter=\"$FILTER\""
|
||||
echo " attrs=\"'*' ref\""
|
||||
echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
|
||||
echo "# attrs=\"'*' ref\"" >> $SEARCHOUT
|
||||
|
||||
BASEDN="dc=example,dc=com"
|
||||
echo " base=\"$BASEDN\"..."
|
||||
echo "# base=\"$BASEDN\"..." >> $SEARCHOUT
|
||||
$LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" "$FILTER" "*" ref \
|
||||
-e manageDSAit >> $SEARCHOUT 2>&1
|
||||
RC=$?
|
||||
if test $RC != 0 ; then
|
||||
echo "Search failed ($RC)!"
|
||||
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||
exit $RC
|
||||
fi
|
||||
|
||||
BASEDN="o=Example,c=US"
|
||||
echo " base=\"$BASEDN\"..."
|
||||
echo "# base=\"$BASEDN\"..." >> $SEARCHOUT
|
||||
$LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" "$FILTER" "*" ref \
|
||||
-e manageDSAit >> $SEARCHOUT 2>&1
|
||||
RC=$?
|
||||
if test $RC != 0 ; then
|
||||
echo "Search failed ($RC)!"
|
||||
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||
exit $RC
|
||||
fi
|
||||
|
||||
BASEDN="o=Esempio,c=IT"
|
||||
echo " base=\"$BASEDN\"..."
|
||||
echo "# base=\"$BASEDN\"..." >> $SEARCHOUT
|
||||
$LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" "$FILTER" "*" ref \
|
||||
-e manageDSAit >> $SEARCHOUT 2>&1
|
||||
RC=$?
|
||||
if test $RC != 0 ; then
|
||||
echo "Search failed ($RC)!"
|
||||
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||
exit $RC
|
||||
fi
|
||||
|
||||
BASEDN="o=Example,c=US"
|
||||
FILTER="(seeAlso=cn=all staff,ou=Groups,$BASEDN)"
|
||||
echo "searching filter=\"$FILTER\""
|
||||
echo " attrs=\"seeAlso\""
|
||||
echo " base=\"$BASEDN\"..."
|
||||
echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
|
||||
echo "# attrs=\"seeAlso\"" >> $SEARCHOUT
|
||||
echo "# base=\"$BASEDN\"..." >> $SEARCHOUT
|
||||
$LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" "$FILTER" seeAlso \
|
||||
>> $SEARCHOUT 2>&1
|
||||
RC=$?
|
||||
if test $RC != 0 ; then
|
||||
echo "Search failed ($RC)!"
|
||||
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||
exit $RC
|
||||
fi
|
||||
|
||||
echo "Filtering ldapsearch results..."
|
||||
. $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
|
||||
echo "Filtering original ldif used to create database..."
|
||||
. $LDIFFILTER < $PROXYMASSAGEOUT > $LDIFFLT
|
||||
echo "Comparing filter output..."
|
||||
$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
|
||||
|
||||
if test $? != 0 ; then
|
||||
echo "comparison failed - back-ldap search/modification didn't succeed"
|
||||
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BASEDN="o=Example,c=US"
|
||||
echo "changing password to database \"$BASEDN\"..."
|
||||
$LDAPPASSWD -h $LOCALHOST -p $PORT1 -D "cn=Manager,$BASEDN" -w $PASSWD \
|
||||
"cn=Added User,ou=Alumni Association,ou=People,$BASEDN" \
|
||||
-s $PASSWD >> $TESTOUT 2>&1
|
||||
RC=$?
|
||||
if test $RC != 0 ; then
|
||||
echo "Passwd ExOp failed ($RC)!"
|
||||
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||
exit $RC
|
||||
fi
|
||||
|
||||
BASEDN="o=Beispiel,c=DE"
|
||||
echo "binding with newly changed password to database \"$BASEDN\"..."
|
||||
$LDAPWHOAMI -h $LOCALHOST -p $PORT1 \
|
||||
-D "cn=Added User,ou=Alumni Association,ou=People,$BASEDN" \
|
||||
-w $PASSWD >> $TESTOUT 2>&1
|
||||
RC=$?
|
||||
if test $RC != 0 ; then
|
||||
echo "WhoAmI failed ($RC)!"
|
||||
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||
exit $RC
|
||||
fi
|
||||
|
||||
BASEDN="o=Esempio,c=IT"
|
||||
echo "comparing to database \"$BASEDN\"..."
|
||||
$LDAPCOMPARE -h $LOCALHOST -p $PORT1 \
|
||||
"cn=Added User,ou=Alumni Association,ou=People,$BASEDN" \
|
||||
"seeAlso:cn=All Staff,ou=Groups,$BASEDN" >> $TESTOUT 2>&1
|
||||
RC=$?
|
||||
if test $RC != 6 ; then
|
||||
echo "Compare failed ($RC)!"
|
||||
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||
exit $RC
|
||||
fi
|
||||
|
||||
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||
|
||||
echo ">>>>> Test succeeded"
|
||||
exit 0
|
||||
|
Loading…
Reference in New Issue
Block a user