From: Quanah Gibson-Mount Date: Mon, 9 Jul 2018 20:03:36 +0000 (+0000) Subject: ITS#8663 - Regression test X-Git-Url: https://git.sur5r.net/?p=openldap;a=commitdiff_plain;h=603a92b5eb6df4654992e114c0fd11a541a7f7e4 ITS#8663 - Regression test Adds a regression test for 8663 that checks that it is possible to modify all the cn=config related memberOf overlay settings. --- diff --git a/tests/data/regressions/its8663/its8663 b/tests/data/regressions/its8663/its8663 new file mode 100755 index 0000000000..fc73e891a3 --- /dev/null +++ b/tests/data/regressions/its8663/its8663 @@ -0,0 +1,279 @@ +#! /bin/sh +# $OpenLDAP$ +## This work is part of OpenLDAP Software . +## +## Copyright 1998-2018 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 + +if test $MEMBEROF = memberofno; then + echo "memberof overlay not available, test skipped" + exit 0 +fi + +echo "" +echo " This test tracks a case where it was not possible to modify the memberof overlay configuration" +echo " when the provider is dynamically configured for replication." +echo " See http://www.openldap.org/its/index.cgi/?findid=8663 for more information" +echo "" + +PRODIR=$TESTDIR/pro +CFPRO=$PRODIR/slapd.d + +mkdir -p $TESTDIR $DBDIR1 $PRODIR $CFPRO + +$SLAPPASSWD -g -n >$CONFIGPWF + +ITS=8663 +ITSDIR=$DATADIR/regressions/its$ITS + +echo "Starting provider slapd on TCP/IP port $PORT1..." +. $CONFFILTER $BACKEND $MONITORDB < $ITSDIR/slapd-provider.ldif > $CONFLDIF +$SLAPADD -F $CFPRO -n 0 -l $CONFLDIF +$SLAPD -F $CFPRO -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 "Using ldapsearch to check that provider slapd is running..." +for i in 0 1 2 3 4 5; do + $LDAPSEARCH -s base -b "" -H $URI1 \ + '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 "Populating database on provider..." +$LDAPADD -D $MANAGERDN -H $URI1 -w $PASSWD << EOMODS >> $TESTOUT 2>&1 +dn: dc=example,dc=com +changetype: add +objectClass: domain +objectClass: top +dc: example + +dn: ou=LDAPRoles,dc=example,dc=com +objectClass: top +objectClass: organizationalUnit +ou: LDAPRoles + +dn: dc=users,dc=example,dc=com +changetype: add +dc: users +objectClass: domain +objectClass: top + +dn: uid=johndoe,dc=users,dc=example,dc=com +changetype: add +objectClass: inetOrgPerson +objectClass: top +sn: Doe +cn: Johndoe +uid: johndoe + +dn: cn=replicator,ou=LDAPRoles,dc=example,dc=com +objectClass: top +objectClass: simpleSecurityObject +objectClass: organizationalRole +userPassword: secret +cn: replicator +EOMODS + +RC=$? +if test $RC != 0 ; then + echo "ldapadd failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + +if [ "$MEMBEROF" = memberofmod ]; then + echo "Configuring memberof module on the provider..." + $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: memberof.la +EOF + RC=$? + if test $RC != 0 ; then + echo "ldapadd failed for moduleLoad ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC + fi +fi + +echo "Configuring memberof on the provider..." +$LDAPMODIFY -D cn=config -H $URI1 -y $CONFIGPWF <>$TESTOUT 2>&1 +dn: olcOverlay={0}memberof,olcDatabase={1}$BACKEND,cn=config +changetype: add +objectClass: olcOverlayConfig +objectClass: olcConfig +objectClass: top +objectClass: olcMemberOf +olcMemberOfGroupOC: groupOfNames +olcMemberOfMemberAD: member +olcMemberOfMemberOfAD: memberOf +olcMemberOfDN: cn=Manager,dc=example,dc=com +olcMemberOfDangling: ignore +olcMemberOfDanglingError: 13 +olcMemberOfRefInt: FALSE +olcOverlay: {0}memberof +EOF + +RC=$? +if test $RC != 0 ; then + echo "ldapmodify failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + +sleep 1 + +echo "Setting olcMemberOfRefInt to TRUE on the provider..." +$LDAPMODIFY -D cn=config -H $URI1 -y $CONFIGPWF <>$TESTOUT 2>&1 +dn: olcOverlay={0}memberof,olcDatabase={1}$BACKEND,cn=config +changetype: modify +replace: olcMemberOfRefInt +olcMemberOfRefInt: TRUE +EOF + +RC=$? +if test $RC != 0 ; then + echo "ldapmodify failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + +sleep 1 + +echo "Changing olcMemberOfDangling to error on the provider..." +$LDAPMODIFY -D cn=config -H $URI1 -y $CONFIGPWF <>$TESTOUT 2>&1 +dn: olcOverlay={0}memberof,olcDatabase={1}$BACKEND,cn=config +changetype: modify +replace: olcMemberOfDangling +olcMemberOfDangling: error +EOF + +RC=$? +if test $RC != 0 ; then + echo "ldapmodify failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + +sleep 1 + +echo "Changing olcMemberOfDanglingError to 20 on the provider..." +$LDAPMODIFY -D cn=config -H $URI1 -y $CONFIGPWF <>$TESTOUT 2>&1 +dn: olcOverlay={0}memberof,olcDatabase={1}$BACKEND,cn=config +changetype: modify +replace: olcMemberOfDanglingError +olcMemberOfDanglingError: 20 +EOF + +RC=$? +if test $RC != 0 ; then + echo "ldapmodify failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + +sleep 1 + +echo "Setting olcMemberOfDN to cn=config on the provider..." +$LDAPMODIFY -D cn=config -H $URI1 -y $CONFIGPWF <>$TESTOUT 2>&1 +dn: olcOverlay={0}memberof,olcDatabase={1}$BACKEND,cn=config +changetype: modify +replace: olcMemberOfDN +olcMemberOfDN: cn=config +EOF + +RC=$? +if test $RC != 0 ; then + echo "ldapmodify failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + +sleep 1 + +echo "Changing olcMemberOfGroupOC to groupOfUniqueNames on the provider..." +$LDAPMODIFY -D cn=config -H $URI1 -y $CONFIGPWF <>$TESTOUT 2>&1 +dn: olcOverlay={0}memberof,olcDatabase={1}$BACKEND,cn=config +changetype: modify +replace: olcMemberOfGroupOC +olcMemberOfGroupOC: groupOfNames +EOF + +RC=$? +if test $RC != 0 ; then + echo "ldapmodify failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + +sleep 1 + +echo "Changing olcMemberOfMemberAD to uniqueMember on the provider..." +$LDAPMODIFY -D cn=config -H $URI1 -y $CONFIGPWF <>$TESTOUT 2>&1 +dn: olcOverlay={0}memberof,olcDatabase={1}$BACKEND,cn=config +changetype: modify +replace: olcMemberOfMemberAD +olcMemberOfMemberAD: uniqueMember +EOF + +RC=$? +if test $RC != 0 ; then + echo "ldapmodify failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + +echo "Changing olcMemberOfMemberOfAD to owner on the provider..." +$LDAPMODIFY -D cn=config -H $URI1 -y $CONFIGPWF <>$TESTOUT 2>&1 +dn: olcOverlay={0}memberof,olcDatabase={1}$BACKEND,cn=config +changetype: modify +replace: olcMemberOfMemberOfAD +olcMemberOfMemberOfAD: owner +EOF + +RC=$? +if test $RC != 0 ; then + echo "ldapmodify failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + +test $KILLSERVERS != no && kill -HUP $KILLPIDS + +echo +echo ">>>>> Test succeeded" + +test $KILLSERVERS != no && wait + +exit 0 diff --git a/tests/data/regressions/its8663/slapd-provider.ldif b/tests/data/regressions/its8663/slapd-provider.ldif new file mode 100644 index 0000000000..40e3e37cf1 --- /dev/null +++ b/tests/data/regressions/its8663/slapd-provider.ldif @@ -0,0 +1,59 @@ +dn: cn=config +objectClass: olcGlobal +cn: config +olcLogLevel: Sync +olcLogLevel: Stats +olcPidFile: @TESTDIR@/slapd.2.pid +olcArgsFile: @TESTDIR@/slapd.2.args + +dn: cn=schema,cn=config +objectClass: olcSchemaConfig +cn: schema + +include: file://@TESTWD@/@SCHEMADIR@/core.ldif +include: file://@TESTWD@/@SCHEMADIR@/cosine.ldif +include: file://@TESTWD@/@SCHEMADIR@/inetorgperson.ldif +include: file://@TESTWD@/@SCHEMADIR@/misc.ldif + +#mod#dn: cn=module{0},cn=config +#mod#objectClass: olcModuleList +#mod#cn: module{0} +#mod#olcModulePath: @TESTWD@/../servers/slapd/back-@BACKEND@/ +#mod#olcModuleLoad: {0}back_@BACKEND@.la + +#monitormod#dn: cn=module{1},cn=config +#monitormod#objectClass: olcModuleList +#monitormod#cn: module{1} +#monitormod#olcModulePath: @TESTWD@/../servers/slapd/back-monitor/ +#monitormod#olcModuleLoad: {0}back_monitor.la + +dn: olcDatabase={-1}frontend,cn=config +objectClass: olcDatabaseConfig +objectClass: olcFrontendConfig +olcDatabase: {-1}frontend +olcAccess: {0}to dn="" by * read +olcAccess: {1}to * by self write by users read by anonymous auth + +dn: olcDatabase={0}config,cn=config +objectClass: olcDatabaseConfig +olcDatabase: {0}config +olcRootPW:< file://@TESTDIR@/configpw +olcAccess: {0}to * by * none + +dn: olcDatabase={1}@BACKEND@,cn=config +objectClass: olcDatabaseConfig +objectClass: olc@BACKEND@Config +olcDatabase: {1}@BACKEND@ +olcSuffix: dc=example,dc=com +olcRootDN: cn=Manager,dc=example,dc=com +olcRootPW: secret +#~null~#olcDbDirectory: @TESTDIR@/db.1.a +#indexdb#olcDbIndex: default eq +#indexdb#olcDbIndex: objectClass +#indexdb#olcDbIndex: cn +#mdb#olcDbMaxSize: 33554432 + +dn: olcDatabase={2}monitor,cn=config +objectClass: olcDatabaseConfig +olcDatabase: {2}monitor +olcAccess: {0}to dn.subtree="cn=monitor" by * read