3 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
5 ## Copyright 1998-2007 The OpenLDAP Foundation.
6 ## All rights reserved.
8 ## Redistribution and use in source and binary forms, with or without
9 ## modification, are permitted only as authorized by the OpenLDAP
12 ## A copy of this license is available in the file LICENSE in the
13 ## top-level directory of the distribution or, alternatively, at
14 ## <http://www.OpenLDAP.org/license.html>.
16 echo "running defines.sh"
17 . $SRCDIR/scripts/defines.sh
19 mkdir -p $TESTDIR $DBDIR1 $TESTDIR/confdir
21 $SLAPPASSWD -g -n >$CONFIGPWF
22 echo "rootpw `$SLAPPASSWD -T $CONFIGPWF`" >$TESTDIR/configpw.conf
24 echo "Starting slapd on TCP/IP port $PORT1..."
25 . $CONFFILTER $BACKEND $MONITORDB < $NAKEDCONF > $CONF1
26 $SLAPD -f $CONF1 -F $TESTDIR/confdir -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
28 if test $WAIT != 0 ; then
35 for i in 0 1 2 3 4 5; do
36 $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \
37 'objectclass=*' > /dev/null 2>&1
39 if test $RC = 0 ; then
42 echo "Waiting 5 seconds for slapd to start..."
45 if test $RC != 0 ; then
46 echo "ldapsearch failed ($RC)!"
47 test $KILLSERVERS != no && kill -HUP $KILLPIDS
51 cat /dev/null > $TESTOUT
53 echo "Running ldapadd to build slapd config database..."
54 $LDAPADD -h $LOCALHOST -p $PORT1 -D 'cn=config' -w `cat $CONFIGPWF` \
55 >> $TESTOUT 2>&1 <<EOF
56 dn: olcDatabase={1}bdb,cn=config
57 objectClass: olcDatabaseConfig
58 objectClass: olcBdbConfig
61 olcRootDN: cn=Manager,$BASEDN
64 olcDbDirectory: $TESTDIR/db.1.a/
66 olcDbIndex: objectClass eq
67 olcDbIndex: cn pres,eq,sub
68 olcDbIndex: uid pres,eq,sub
69 olcDbIndex: sn pres,eq,sub
72 # {0}memberof, {1}bdb, config
73 dn: olcOverlay={0}memberof,olcDatabase={1}bdb,cn=config
74 objectClass: olcOverlayConfig
75 objectClass: olcMemberOf
76 olcOverlay: {0}memberof
77 olcMemberOfRefInt: TRUE
78 olcMemberOfGroupOC: groupOfNames
79 olcMemberOfMemberAD: member
80 olcMemberOfMemberOfAD: memberOf
83 if test $RC != 0 ; then
84 echo "ldapadd failed ($RC)!"
85 test $KILLSERVERS != no && kill -HUP $KILLPIDS
89 echo "Running ldapadd to build slapd database..."
90 $LDAPADD -h $LOCALHOST -p $PORT1 \
91 -D "cn=Manager,$BASEDN" -w secret \
92 >> $TESTOUT 2>&1 << EOF
94 objectClass: organization
100 objectClass: organizationalUnit
103 dn: ou=Groups,$BASEDN
104 objectClass: organizationalUnit
107 dn: cn=Roger Rabbit,ou=People,$BASEDN
108 objectClass: inetOrgPerson
112 dn: cn=Baby Herman,ou=People,$BASEDN
113 objectClass: inetOrgPerson
117 dn: cn=Cartoonia,ou=Groups,$BASEDN
118 objectClass: groupOfNames
120 member: cn=Roger Rabbit,ou=People,$BASEDN
121 member: cn=Baby Herman,ou=People,$BASEDN
124 if test $RC != 0 ; then
125 echo "ldapadd failed ($RC)!"
126 test $KILLSERVERS != no && kill -HUP $KILLPIDS
130 echo "Search the entire database..."
131 echo "# Search the entire database..." >> $SEARCHOUT
132 $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
133 '(objectClass=*)' '*' memberOf >> $SEARCHOUT 2>&1
135 if test $RC != 0 ; then
136 echo "ldapsearch failed ($RC)!"
137 test $KILLSERVERS != no && kill -HUP $KILLPIDS
141 echo "Running ldapmodify to add a member..."
142 $LDAPMODIFY -h $LOCALHOST -p $PORT1 \
143 -D "cn=Manager,$BASEDN" -w secret \
144 >> $TESTOUT 2>&1 << EOF
145 dn: cn=Jessica Rabbit,ou=People,$BASEDN
147 objectClass: inetOrgPerson
151 dn: cn=Cartoonia,ou=Groups,$BASEDN
154 member: cn=Jessica Rabbit,ou=People,$BASEDN
157 echo "Re-search the entire database..."
158 echo "# Re-search the entire database..." >> $SEARCHOUT
159 $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
160 '(objectClass=*)' '*' memberOf >> $SEARCHOUT 2>&1
162 if test $RC != 0 ; then
163 echo "ldapsearch failed ($RC)!"
164 test $KILLSERVERS != no && kill -HUP $KILLPIDS
168 echo "Running ldapmodify to add self..."
169 $LDAPMODIFY -h $LOCALHOST -p $PORT1 \
170 -D "cn=Manager,$BASEDN" -w secret \
171 >> $TESTOUT 2>&1 << EOF
172 dn: cn=Cartoonia,ou=Groups,$BASEDN
175 member: cn=Cartoonia,ou=Groups,$BASEDN
178 echo "Re-search the entire database..."
179 echo "# Re-search the entire database..." >> $SEARCHOUT
180 $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
181 '(objectClass=*)' '*' memberOf >> $SEARCHOUT 2>&1
183 if test $RC != 0 ; then
184 echo "ldapsearch failed ($RC)!"
185 test $KILLSERVERS != no && kill -HUP $KILLPIDS
189 echo "Running ldapdelete to remove a member..."
190 $LDAPMODIFY -h $LOCALHOST -p $PORT1 \
191 -D "cn=Manager,$BASEDN" -w secret \
192 >> $TESTOUT 2>&1 << EOF
193 dn: cn=Baby Herman,ou=People,$BASEDN
197 echo "Re-search the entire database..."
198 echo "# Re-search the entire database..." >> $SEARCHOUT
199 $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
200 '(objectClass=*)' '*' memberOf >> $SEARCHOUT 2>&1
202 if test $RC != 0 ; then
203 echo "ldapsearch failed ($RC)!"
204 test $KILLSERVERS != no && kill -HUP $KILLPIDS
208 test $KILLSERVERS != no && kill -HUP $KILLPIDS
212 echo "Filtering ldapsearch results..."
213 . $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
214 echo "Filtering original ldif used to create database..."
215 . $LDIFFILTER < $LDIF > $LDIFFLT
216 echo "Comparing filter output..."
217 $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
219 if test $? != 0 ; then
220 echo "Comparison failed"
224 echo ">>>>> Test succeeded"
226 test $KILLSERVERS != no && wait