#!/bin/bash echo "running defines.sh" . $SRCDIR/scripts/defines.sh if test $CONSTRAINT = constraintno; then echo "Constraint overlay not available, test skipped" exit 0 fi CONSTRAINTDIR="$DATADIR/constraint" ROOTLDIF="$CONSTRAINTDIR/root.ldif" USERLDIF="$CONSTRAINTDIR/user.ldif" RESULTOUT="$CONSTRAINTDIR/constraint.out" SCRIPTOUT="$TESTDIR/constraint.out" USERDN="cn=user,$BASEDN" CONFDIR=$TESTDIR/slapd.d mkdir -p $TESTDIR $CONFDIR $DBDIR1 $SLAPPASSWD -g -n >$CONFIGPWF $SLAPADD -F $CONFDIR -n 0 < $LOG1 2>&1 & PID=$! if test $WAIT != 0 ; then echo PID $PID read foo fi sleep 1 echo "Inserting constraint overlay... " if [ "$CONSTRAINT" = constraintmod ]; then $LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF < $TESTOUT 2>&1 dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulePath: $TESTWD/../servers/slapd/overlays olcModuleLoad: constraint.la EOF RC=$? if test $RC != 0 ; then echo "ldapadd failed ($RC)!" test $KILLSERVERS != no && kill -HUP $PID exit $RC fi fi $LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF <> $TESTOUT 2>&1 dn: olcOverlay=constraint,olcDatabase={1}$BACKEND,cn=config objectClass: olcOverlayConfig objectClass: olcConstraintConfig olcOverlay: constraint olcConstraintAttribute: mail count 3 olcConstraintAttribute: mail regex ^[[:alnum:]]+@example.com$ olcConstraintAttribute: description count 2 EOF RC=$? if test $RC != 0 ; then echo "ldapadd failed ($RC)!" test $KILLSERVERS != no && kill -HUP $PID exit $RC fi echo "Adding basic structure..." $LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD -f $ROOTLDIF &>/dev/null RC=$? if test $RC != 0 ; then echo "ldapadd failed ($RC)!" test $KILLSERVERS != no && kill -HUP $PID exit $RC fi $LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD -f $USERLDIF &>/dev/null RC=$? if test $RC != 0 ; then echo "ldapadd failed ($RC)!" test $KILLSERVERS != no && kill -HUP $PID exit $RC fi echo "Running constraint tests..." for ldif in $SRCDIR/data/constraint/{*ok*,*fail*}.ldif; do ### reload $LDAPDELETE -D "$MANAGERDN" -H $URI1 -w $PASSWD $USERDN &>/dev/null RC=$? if test $RC != 0 ; then echo "ldapdelete failed ($RC)!" test $KILLSERVERS != no && kill -HUP $PID exit $RC fi $LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD -f $USERLDIF &>/dev/null RC=$? if test $RC != 0 ; then echo "ldapadd failed ($RC)!" test $KILLSERVERS != no && kill -HUP $PID exit $RC fi ### info echo -n " [$ldif]: " ### modify $LDAPMODIFY -H $URI1 -x -D "$MANAGERDN" -f $ldif -w $PASSWD &>/dev/null RC=$? if test $RC == 0 ; then echo "OK" | tee -a $SCRIPTOUT elif test $RC == 19 ; then echo "FAIL" | tee -a $SCRIPTOUT else echo "UNEXPECTED ($RC)" fi done echo "Comparing output..." $DIFF $SCRIPTOUT $RESULTOUT > $CMPOUT RC=$? if test $RC != 0 ; then echo "Comparison failed" test $KILLSERVERS != no && kill -HUP $PID exit $RC fi test $KILLSERVERS != no && kill -HUP $PID echo ">>>>> Test succeeded" test $KILLSERVERS != no && wait exit 0