3 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
5 ## Copyright 1998-2004 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>.
18 if test $RWM = rwmno ; then
19 echo "Rewrite/remap overlay not available, test skipped"
23 mkdir -p $TESTDIR $DBDIR1
25 echo "Starting slapd on TCP/IP port $PORT1..."
26 . $CONFFILTER $BACKEND $MONITORDB < $RWMCONF > $CONF1
27 $SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
29 if test $WAIT != 0 ; then
35 echo "Using ldapsearch to check that slapd is running..."
36 for i in 0 1 2 3 4 5; do
37 $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \
38 'objectclass=*' > /dev/null 2>&1
40 if test $RC = 0 ; then
43 echo "Waiting 5 seconds for slapd to start..."
46 if test $RC != 0 ; then
47 echo "ldapsearch failed $(RC)!"
48 test $KILLSERVERS != no && kill -HUP $KILLPIDS
52 echo "Using ldapadd to populate the database..."
53 $LDAPADD -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD < \
54 $LDIFORDERED > $TESTOUT 2>&1
56 if test $RC != 0 ; then
57 echo "ldapadd failed ($RC)!"
58 test $KILLSERVERS != no && kill -HUP $KILLPIDS
62 cat /dev/null > $SEARCHOUT
64 BASEDN="dc=example,dc=com"
65 echo "searching base=\"$BASEDN\"..."
66 echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
67 $LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" >> $SEARCHOUT 2>&1
69 if test $RC != 0 ; then
70 echo "Search failed ($RC)!"
71 test $KILLSERVERS != no && kill -HUP $KILLPIDS
75 BASEDN="o=Example,c=US"
76 echo "searching base=\"$BASEDN\"..."
77 echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
78 $LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" >> $SEARCHOUT 2>&1
80 if test $RC != 0 ; then
81 echo "Search failed ($RC)!"
82 test $KILLSERVERS != no && kill -HUP $KILLPIDS
86 BASEDN="o=Esempio,c=IT"
87 echo "searching base=\"$BASEDN\"..."
88 echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
89 $LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" >> $SEARCHOUT 2>&1
91 if test $RC != 0 ; then
92 echo "Search failed ($RC)!"
93 test $KILLSERVERS != no && kill -HUP $KILLPIDS
97 BASEDN="o=Beispiel,c=DE"
98 echo "searching base=\"$BASEDN\"..."
99 echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
100 $LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" >> $SEARCHOUT 2>&1
102 if test $RC != 0 ; then
103 echo "Search failed ($RC)!"
104 test $KILLSERVERS != no && kill -HUP $KILLPIDS
109 # Do some modifications
112 BASEDN="o=Beispiel,c=DE"
113 echo "modifying database \"$BASEDN\"..."
114 $LDAPMODIFY -v -D "cn=Manager,$BASEDN" -h $LOCALHOST -p $PORT1 -w $PASSWD \
115 -M >> $TESTOUT 2>&1 << EOMODS
116 dn: cn=Added User,ou=Alumni Association,ou=People,$BASEDN
118 objectClass: OpenLDAPperson
122 seealso: cn=All Staff,ou=Groups,$BASEDN
123 homephone: +49 1234567890
125 mail: auser@mail.alumni.example.com
126 telephonenumber: +49 1234-567-890
127 description: Just added in o=Beispiel,c=DE naming context
129 dn: cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN
132 seeAlso: cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN
135 description: Just added self to seeAlso in $BASEDN virtual naming context
138 dn: cn=Mark Elliot,ou=Alumni Association,ou=People,$BASEDN
141 dn: cn=John Doe,ou=Information Technology Division,ou=People,$BASEDN
143 newrdn: cn=John P. Doe
146 dn: cn=Jane Doe,ou=Alumni Association,ou=People,$BASEDN
148 newrdn: cn=Jane Q. Doe
150 newsuperior: ou=Information Technology Division,ou=People,$BASEDN
152 dn: cn=Jane Q. Doe,ou=Information Technology Division,ou=People,$BASEDN
155 cn: Jane Qissapaolo Doe
158 dn: ou=Referrals,$BASEDN
160 objectclass: referral
161 objectclass: extensibleObject
163 ref: ldap://localhost.localdomain/ou=Referrals,$BASEDN
164 description: Just added as ldap://localhost.localdomain:389/ou=Referrals,$BASEDN
166 dn: ou=Referrals,$BASEDN
169 ref: ldap://ldap.example.com:389/ou=Referrals,$BASEDN
172 description: ...and modified as ldap://ldap.example.com:389/ou=Referrals,$BASEDN
177 if test $RC != 0 ; then
178 echo "Modify failed ($RC)!"
179 test $KILLSERVERS != no && kill -HUP $KILLPIDS
183 echo "searching base=\"$BASEDN\"..."
184 echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
185 $LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" >> $SEARCHOUT 2>&1
187 if test $RC != 0 ; then
188 echo "Search failed ($RC)!"
189 test $KILLSERVERS != no && kill -HUP $KILLPIDS
193 BASEDN="o=Esempio,c=IT"
194 echo "searching base=\"$BASEDN\"..."
195 echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
196 $LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" >> $SEARCHOUT 2>&1
198 if test $RC != 0 ; then
199 echo "Search failed ($RC)!"
200 test $KILLSERVERS != no && kill -HUP $KILLPIDS
204 FILTER="(objectClass=referral)"
205 echo "searching filter=\"$FILTER\""
206 echo " attrs=\"'*' ref\""
207 echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
208 echo "# attrs=\"'*' ref\"" >> $SEARCHOUT
210 BASEDN="dc=example,dc=com"
211 echo " base=\"$BASEDN\"..."
212 echo "# base=\"$BASEDN\"..." >> $SEARCHOUT
213 $LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" -M "$FILTER" "*" ref \
216 if test $RC != 0 ; then
217 echo "Search failed ($RC)!"
218 test $KILLSERVERS != no && kill -HUP $KILLPIDS
222 BASEDN="o=Example,c=US"
223 echo " base=\"$BASEDN\"..."
224 echo "# base=\"$BASEDN\"..." >> $SEARCHOUT
225 $LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" -M "$FILTER" "*" ref \
228 if test $RC != 0 ; then
229 echo "Search failed ($RC)!"
230 test $KILLSERVERS != no && kill -HUP $KILLPIDS
234 BASEDN="o=Esempio,c=IT"
235 echo " base=\"$BASEDN\"..."
236 echo "# base=\"$BASEDN\"..." >> $SEARCHOUT
237 $LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" -M "$FILTER" "*" ref \
240 if test $RC != 0 ; then
241 echo "Search failed ($RC)!"
242 test $KILLSERVERS != no && kill -HUP $KILLPIDS
246 BASEDN="o=Example,c=US"
247 FILTER="(seeAlso=cn=all staff,ou=Groups,$BASEDN)"
248 echo "searching filter=\"$FILTER\""
249 echo " attrs=\"seeAlso\""
250 echo " base=\"$BASEDN\"..."
251 echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
252 echo "# attrs=\"seeAlso\"" >> $SEARCHOUT
253 echo "# base=\"$BASEDN\"..." >> $SEARCHOUT
254 $LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" "$FILTER" seeAlso \
257 if test $RC != 0 ; then
258 echo "Search failed ($RC)!"
259 test $KILLSERVERS != no && kill -HUP $KILLPIDS
263 echo "Filtering ldapsearch results..."
264 . $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
265 echo "Filtering original ldif used to create database..."
266 . $LDIFFILTER < $RELAYOUT > $LDIFFLT
267 echo "Comparing filter output..."
268 $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
270 if test $? != 0 ; then
271 echo "comparison failed - relay search/modification didn't succeed"
272 test $KILLSERVERS != no && kill -HUP $KILLPIDS
276 BASEDN="o=Example,c=US"
277 echo "changing password to database \"$BASEDN\"..."
278 $LDAPPASSWD -h $LOCALHOST -p $PORT1 -D "cn=Manager,$BASEDN" -w $PASSWD \
279 -s $PASSWD "cn=Added User,ou=Alumni Association,ou=People,$BASEDN" \
282 if test $RC != 0 ; then
283 echo "Passwd ExOp failed ($RC)!"
284 test $KILLSERVERS != no && kill -HUP $KILLPIDS
288 BASEDN="o=Beispiel,c=DE"
289 echo "binding with newly changed password to database \"$BASEDN\"..."
290 $LDAPWHOAMI -h $LOCALHOST -p $PORT1 \
291 -D "cn=Added User,ou=Alumni Association,ou=People,$BASEDN" \
292 -w $PASSWD >> $TESTOUT 2>&1
294 if test $RC != 0 ; then
295 echo "WhoAmI failed ($RC)!"
296 test $KILLSERVERS != no && kill -HUP $KILLPIDS
300 BASEDN="o=Esempio,c=IT"
301 echo "comparing to database \"$BASEDN\"..."
302 $LDAPCOMPARE -h $LOCALHOST -p $PORT1 \
303 "cn=Added User,ou=Alumni Association,ou=People,$BASEDN" \
304 "seeAlso:cn=All Staff,ou=Groups,$BASEDN" >> $TESTOUT 2>&1
306 if test $RC != 6 ; then
307 echo "Compare failed ($RC)!"
308 test $KILLSERVERS != no && kill -HUP $KILLPIDS
312 test $KILLSERVERS != no && kill -HUP $KILLPIDS
314 echo ">>>>> Test succeeded"