# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
-## Copyright 2004 The OpenLDAP Foundation.
+## Copyright 2004-2006 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
exit 0
fi
-if test $BACKEND = ldbm ; then
- echo "Translucent Proxy overlay not qualified for use with LDBM, skipping"
- exit 0
-fi
-
if test $AC_ldap = ldapno ; then
echo "Translucent Proxy overlay requires back-ldap backend, test skipped"
exit 0
REMOTEPID="$PID"
KILLPIDS="$PID"
+sleep 1
+
for i in 0 1 2 3 4 5; do
$LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
'objectclass=*' > /dev/null 2>&1
LOCALPID="$PID"
KILLPIDS="$LOCALPID $REMOTEPID"
+sleep 1
+
for i in 0 1 2 3 4 5; do
$LDAPSEARCH -s base -b "$MONITOR" -H $URI2 \
'objectclass=*' > /dev/null 2>&1
echo "ldapadd failed ($RC), expected INSUFFICIENT ACCESS!"
grep "$FAILURE" $TESTOUT
test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
+ exit 1
fi
echo "Testing add: valid local record, no_glue..."
echo "ldapadd failed ($RC), expected NO SUCH OBJECT!"
grep "$FAILURE" $TESTOUT
test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
+ exit 1
fi
echo "Testing modrdn: valid local record, no_glue..."
echo "ldapmodrdn failed ($RC), expected NO SUCH OBJECT!"
grep "$FAILURE" $TESTOUT
test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
+ exit 1
fi
echo "Shutting down local slapd..."
kill -HUP $LOCALPID
-sleep 5
+wait $LOCALPID
echo "Configuring local slapd without translucent_no_glue..."
. $CONFFILTER $BACKEND $MONITORDB < $TRANSLUCENTLOCALCONF | \
LOCALPID="$PID"
KILLPIDS="$REMOTEPID $PID"
+sleep 1
+
for i in 0 1 2 3 4 5; do
$LDAPSEARCH -s base -b "$MONITOR" -H $URI2 \
'objectclass=*' > /dev/null 2>&1
exit $RC
fi
-$CMP $SEARCHOUT $LDIFTRANSLUCENTMERGED > $CMPOUT
+. $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
+$CMP $SEARCHFLT $LDIFTRANSLUCENTMERGED > $CMPOUT
if test $? != 0 ; then
echo "Comparison failed -- local data failed to merge with remote!"
if test $RC != 6 ; then
echo "ldapcompare failed ($RC), expected TRUE!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
+ exit 1
fi
echo "Testing compare: valid remote..."
if test $RC != 6 ; then
echo "ldapcompare failed ($RC), expected TRUE!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
+ exit 1
fi
echo "Testing compare: bogus local..."
if test $RC != 5 ; then
echo "ldapcompare failed ($RC), expected FALSE!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
+ exit 1
fi
echo "Testing compare: bogus remote..."
if test $RC != 5 ; then
echo "ldapcompare failed ($RC), expected FALSE!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
+ exit 1
fi
echo "Testing modify: nonexistent record..."
echo "ldapmodify failed ($RC), expected NO SUCH OBJECT!"
grep "$FAILURE" $TESTOUT
test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
+ exit 1
fi
echo "Testing modify: valid local record, nonexistent attribute..."
echo "ldapmodify failed ($RC), expected NO SUCH ATTRIBUTE!"
grep "$FAILURE" $TESTOUT
test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
+ exit 1
fi
echo "Testing delete: valid local record, nonexistent attribute..."
echo "ldapmodrdn failed ($RC), expected INSUFFICIENT ACCESS!"
grep "$FAILURE" $TESTOUT
test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
+ exit 1
fi
echo "Testing modrdn: valid local record..."
echo "ldapadd failed ($RC), expected INSUFFICIENT ACCESS!"
grep "$FAILURE" $TESTOUT
test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
+ exit 1
fi
echo "Testing delete: valid local record..."
echo "ldapmodify failed ($RC), expected NO SUCH OBJECT!"
grep "$FAILURE" $TESTOUT
test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
+ exit 1
fi
echo "Testing delete: nonexistent local record, nonexistent attribute..."
echo "ldapmodify failed ($RC), expected NO SUCH ATTRIBUTE!"
grep "$FAILURE" $TESTOUT
test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
+ exit 1
fi
echo "Testing modify: valid remote record, combination add-modify-delete..."
echo "Shutting down local slapd..."
kill -HUP $LOCALPID
-sleep 5
+wait $LOCALPID
echo "Configuring local slapd with translucent_strict..."
echo translucent_strict >> $CONF2
LOCALPID="$PID"
KILLPIDS="$REMOTEPID $PID"
+sleep 1
+
for i in 0 1 2 3 4 5; do
$LDAPSEARCH -s base -b "$MONITOR" -H $URI2 \
'objectclass=*' > /dev/null 2>&1
echo "ldapmodify failed ($RC), expected CONSTRAINT VIOLATION!"
grep "$FAILURE" $TESTOUT
test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
+ exit 1
fi
echo "Testing strict mode delete: nonexistent remote attribute..."
echo "ldapmodify failed ($RC), expected CONSTRAINT VIOLATION!"
grep "$FAILURE" $TESTOUT
test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
+ exit 1
fi
echo "Testing strict mode modify: combination add-modify-delete..."
echo "ldapmodify failed ($RC), expected CONSTRAINT VIOLATION!"
grep "$FAILURE" $TESTOUT
test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
+ exit 1
+fi
+
+echo "Testing invalid Bind request..."
+$LDAPWHOAMI -D "$TRANSLUCENTDN" -H $URI2 -w Wrong"$TRANSLUCENTPASSWD" > \
+ $TESTOUT 2>&1
+RC=$?
+if test $RC != 49 ; then
+ echo "ldapwhoami failed ($RC), expected INVALID CREDENTIALS!"
+ grep "$FAILURE" $TESTOUT
+ test $KILLSERVERS != no && kill -HUP $KILLPIDS
+ exit 1
+fi
+
+$LDAPWHOAMI -D "$TRANSLUCENTDN" -H $URI2 -w "$TRANSLUCENTPASSWD" > \
+ $TESTOUT 2>&1
+RC=$?
+if test $RC != 0 ; then
+ echo "ldapwhoami failed ($RC), expected SUCCESS!"
+ grep "$FAILURE" $TESTOUT
+ test $KILLSERVERS != no && kill -HUP $KILLPIDS
+ exit 1
fi
test $KILLSERVERS != no && kill -HUP $KILLPIDS
echo ">>>>> Test succeeded"
+
+test $KILLSERVERS != no && wait
+
exit 0