2
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
4
## Copyright 1998-2008 The OpenLDAP Foundation.
5
## All rights reserved.
7
## Redistribution and use in source and binary forms, with or without
8
## modification, are permitted only as authorized by the OpenLDAP
11
## A copy of this license is available in the file LICENSE in the
12
## top-level directory of the distribution or, alternatively, at
13
## <http://www.OpenLDAP.org/license.html>.
15
echo "running defines.sh"
16
. $SRCDIR/scripts/defines.sh
18
if test $DYNLIST = "dynlistno" ; then
19
echo "dynlist overlay not available, test skipped"
23
mkdir -p $TESTDIR $DBDIR1
25
$SLAPPASSWD -g -n >$CONFIGPWF
26
echo "rootpw `$SLAPPASSWD -T $CONFIGPWF`" >$TESTDIR/configpw.conf
28
echo "Running slapadd to build slapd database..."
29
. $CONFFILTER $BACKEND $MONITORDB < $MCONF > $ADDCONF
30
$SLAPADD -f $ADDCONF -l $LDIFORDERED
32
if test $RC != 0 ; then
33
echo "slapadd failed ($RC)!"
37
. $CONFFILTER $BACKEND $MONITORDB < $DYNLISTCONF > $CONF1
39
echo "Starting slapd on TCP/IP port $PORT1..."
40
$SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
42
if test $WAIT != 0 ; then
50
echo "Testing slapd searching..."
51
for i in 0 1 2 3 4 5; do
52
$LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \
53
'(objectclass=*)' > /dev/null 2>&1
55
if test $RC = 0 ; then
58
echo "Waiting 5 seconds for slapd to start..."
62
if test $RC != 0 ; then
63
echo "ldapsearch failed ($RC)!"
64
test $KILLSERVERS != no && kill -HUP $KILLPIDS
68
cat /dev/null > $SEARCHOUT
70
LISTDN="ou=Dynamic Lists,$BASEDN"
71
echo "Adding a dynamic list..."
72
$LDAPADD -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD \
73
> $TESTOUT 2>&1 << EOMODS
75
objectClass: organizationalUnit
78
dn: cn=Dynamic List,$LISTDN
79
objectClass: groupOfURLs
81
memberURL: ldap:///ou=People,${BASEDN}?cn,mail?sub?(objectClass=person)
84
echo "Testing list search of all attrs..."
85
echo "# Testing list search of all attrs..." >> $SEARCHOUT
86
$LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 \
87
'(cn=Dynamic List)' '*' \
90
if test $RC != 0 ; then
91
echo "ldapsearch failed ($RC)!"
92
test $KILLSERVERS != no && kill -HUP $KILLPIDS
96
echo "Testing list search of a listed attr..."
97
echo "# Testing list search of a listed attr..." >> $SEARCHOUT
98
$LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 \
99
'(cn=Dynamic List)' mail \
102
if test $RC != 0 ; then
103
echo "ldapsearch failed ($RC)!"
104
test $KILLSERVERS != no && kill -HUP $KILLPIDS
108
echo "Testing list search of a non-listed attr..."
109
echo "# Testing list search of a non-listed attr..." >> $SEARCHOUT
110
$LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 \
111
'(cn=Dynamic List)' objectClass \
114
if test $RC != 0 ; then
115
echo "ldapsearch failed ($RC)!"
116
test $KILLSERVERS != no && kill -HUP $KILLPIDS
120
echo "Testing list search with (critical) manageDSAit..."
121
echo "# Testing list search with (critical) manageDSAit..." >> $SEARCHOUT
122
$LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 -MM \
123
'(cn=Dynamic List)' '*' \
126
if test $RC != 0 ; then
127
echo "ldapsearch failed ($RC)!"
128
test $KILLSERVERS != no && kill -HUP $KILLPIDS
132
echo "Testing list compare..."
133
echo "# Testing list compare..." >> $SEARCHOUT
134
$LDAPCOMPARE -h $LOCALHOST -p $PORT1 \
135
"cn=Dynamic List,$LISTDN" "cn:Bjorn Jensen" \
140
echo "ldapcompare returned FALSE ($RC)!"
141
test $KILLSERVERS != no && kill -HUP $KILLPIDS
145
echo "ldapcompare returned TRUE ($RC)"
148
echo "ldapcompare returned success ($RC)!"
149
test $KILLSERVERS != no && kill -HUP $KILLPIDS
153
echo "ldapcompare failed ($RC)!"
154
test $KILLSERVERS != no && kill -HUP $KILLPIDS
158
echo "" >> $SEARCHOUT
160
echo "Testing list compare (should return FALSE)..."
161
echo "# Testing list compare (should return FALSE)..." >> $SEARCHOUT
162
$LDAPCOMPARE -h $LOCALHOST -p $PORT1 \
163
"cn=Dynamic List,$LISTDN" "cn:FALSE" \
168
echo "ldapcompare returned FALSE ($RC)"
171
echo "ldapcompare returned TRUE ($RC)!"
172
test $KILLSERVERS != no && kill -HUP $KILLPIDS
176
echo "ldapcompare returned success ($RC)!"
177
test $KILLSERVERS != no && kill -HUP $KILLPIDS
181
echo "ldapcompare failed ($RC)!"
182
test $KILLSERVERS != no && kill -HUP $KILLPIDS
186
echo "" >> $SEARCHOUT
188
echo "Testing list compare (should return UNDEFINED)..."
189
echo "# Testing list compare (should return UNDEFINED)..." >> $SEARCHOUT
190
$LDAPCOMPARE -h $LOCALHOST -p $PORT1 \
191
"cn=Dynamic List,$LISTDN" "dc:UNDEFINED" \
196
echo "ldapcompare returned FALSE ($RC)!"
197
test $KILLSERVERS != no && kill -HUP $KILLPIDS
201
echo "ldapcompare returned TRUE ($RC)!"
202
test $KILLSERVERS != no && kill -HUP $KILLPIDS
206
echo "ldapcompare returned UNDEFINED ($RC)"
209
echo "ldapcompare returned success ($RC)!"
210
test $KILLSERVERS != no && kill -HUP $KILLPIDS
214
echo "ldapcompare failed ($RC)"
217
echo "" >> $SEARCHOUT
219
echo "Testing list compare with manageDSAit..."
220
echo "# Testing list compare with manageDSAit..." >> $SEARCHOUT
221
$LDAPCOMPARE -h $LOCALHOST -p $PORT1 -MM \
222
"cn=Dynamic List,$LISTDN" "cn:Bjorn Jensen" \
227
echo "ldapcompare returned FALSE ($RC)"
230
echo "ldapcompare returned TRUE ($RC)!"
231
test $KILLSERVERS != no && kill -HUP $KILLPIDS
235
echo "ldapcompare returned success ($RC)!"
236
test $KILLSERVERS != no && kill -HUP $KILLPIDS
240
echo "ldapcompare failed ($RC)!"
241
test $KILLSERVERS != no && kill -HUP $KILLPIDS
245
echo "" >> $SEARCHOUT
247
echo "Reconfiguring slapd..."
248
$LDAPMODIFY -x -D cn=config -h $LOCALHOST -p $PORT1 -y $CONFIGPWF > \
249
$TESTOUT 2>&1 << EOMODS
251
dn: olcOverlay={0}dynlist,olcDatabase={2}$BACKEND,cn=config
257
olcDLattrSet: groupOfURLs memberURL member
260
echo "==========================================================" >> $LOG1
262
echo "Adding a dynamic list..."
263
$LDAPADD -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD \
264
> $TESTOUT 2>&1 << EOMODS
265
dn: cn=Dynamic List of Members,$LISTDN
266
objectClass: groupOfURLs
267
cn: Dynamic List of Members
268
memberURL: ldap:///ou=People,${BASEDN}??sub?(objectClass=person)
271
echo "Testing list search of all attrs..."
272
echo "# Testing list search of all attrs..." >> $SEARCHOUT
273
$LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 \
274
'(cn=Dynamic List of Members)' '*' \
277
if test $RC != 0 ; then
278
echo "ldapsearch failed ($RC)!"
279
test $KILLSERVERS != no && kill -HUP $KILLPIDS
283
echo "Testing list search of a listed attr..."
284
echo "# Testing list search of a listed attr..." >> $SEARCHOUT
285
$LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 \
286
'(cn=Dynamic List of Members)' member \
289
if test $RC != 0 ; then
290
echo "ldapsearch failed ($RC)!"
291
test $KILLSERVERS != no && kill -HUP $KILLPIDS
295
echo "Testing list search of a non-listed attr..."
296
echo "# Testing list search of a non-listed attr..." >> $SEARCHOUT
297
$LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 \
298
'(cn=Dynamic List of Members)' objectClass \
301
if test $RC != 0 ; then
302
echo "ldapsearch failed ($RC)!"
303
test $KILLSERVERS != no && kill -HUP $KILLPIDS
307
echo "Testing list search with (critical) manageDSAit..."
308
echo "# Testing list search with (critical) manageDSAit..." >> $SEARCHOUT
309
$LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 -MM \
310
'(&(cn=Dynamic List of Members)(objectClass=groupOfURLs))' '*' \
313
if test $RC != 0 ; then
314
echo "ldapsearch failed ($RC)!"
315
test $KILLSERVERS != no && kill -HUP $KILLPIDS
320
echo "Testing list compare..."
321
echo "# Testing list compare..." >> $SEARCHOUT
322
$LDAPCOMPARE -h $LOCALHOST -p $PORT1 \
323
"cn=Dynamic List of Members,$LISTDN" "member:$CMPDN" \
328
echo "ldapcompare returned FALSE ($RC)!"
329
test $KILLSERVERS != no && kill -HUP $KILLPIDS
333
echo "ldapcompare returned TRUE ($RC)"
336
echo "ldapcompare returned success ($RC)!"
337
test $KILLSERVERS != no && kill -HUP $KILLPIDS
341
echo "ldapcompare failed ($RC)!"
342
test $KILLSERVERS != no && kill -HUP $KILLPIDS
346
echo "" >> $SEARCHOUT
348
echo "Testing list compare (should return FALSE)..."
349
echo "# Testing list compare (should return FALSE)..." >> $SEARCHOUT
350
$LDAPCOMPARE -h $LOCALHOST -p $PORT1 \
351
"cn=Dynamic List of Members,$LISTDN" "member:cn=Foo Bar" \
356
echo "ldapcompare returned FALSE ($RC)"
359
echo "ldapcompare returned TRUE ($RC)!"
360
test $KILLSERVERS != no && kill -HUP $KILLPIDS
364
echo "ldapcompare returned success ($RC)!"
365
test $KILLSERVERS != no && kill -HUP $KILLPIDS
369
echo "ldapcompare failed ($RC)!"
370
test $KILLSERVERS != no && kill -HUP $KILLPIDS
374
echo "" >> $SEARCHOUT
376
echo "Testing list compare with manageDSAit..."
377
echo "# Testing list compare with manageDSAit..." >> $SEARCHOUT
378
$LDAPCOMPARE -h $LOCALHOST -p $PORT1 -MM \
379
"cn=Dynamic List,$LISTDN" "member:$CMPDN" \
384
echo "ldapcompare returned FALSE ($RC)"
387
echo "ldapcompare returned TRUE ($RC)!"
388
test $KILLSERVERS != no && kill -HUP $KILLPIDS
392
echo "ldapcompare returned success ($RC)!"
393
test $KILLSERVERS != no && kill -HUP $KILLPIDS
397
echo "ldapcompare failed ($RC)!"
398
test $KILLSERVERS != no && kill -HUP $KILLPIDS
402
echo "" >> $SEARCHOUT
404
echo "==========================================================" >> $LOG1
406
echo "Testing dgIdentity..."
408
# Set ACL, require authentication to get list contents
409
$LDAPMODIFY -x -D cn=config -h $LOCALHOST -p $PORT1 -y $CONFIGPWF > \
410
$TESTOUT 2>&1 << EOMODS
412
dn: olcDatabase={2}$BACKEND,cn=config
415
olcAccess: to dn.base="cn=Dynamic List of Members,$LISTDN" by * read
416
olcAccess: to * by users read by * search
419
echo "Testing list search without dgIdentity..."
420
echo "# Testing list search without dgIdentity..." >> $SEARCHOUT
421
$LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 \
422
'(cn=Dynamic List of Members)' '*' \
425
if test $RC != 0 ; then
426
echo "ldapsearch failed ($RC)!"
427
test $KILLSERVERS != no && kill -HUP $KILLPIDS
431
$LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD \
432
> $TESTOUT 2>&1 << EOMODS
433
dn: cn=Dynamic List of Members,$LISTDN
436
objectClass: dgIdentityAux
442
echo "Testing list search with dgIdentity..."
443
echo "# Testing list search with dgIdentity..." >> $SEARCHOUT
444
$LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 \
445
'(cn=Dynamic List of Members)' '*' \
448
if test $RC != 0 ; then
449
echo "ldapsearch failed ($RC)!"
450
test $KILLSERVERS != no && kill -HUP $KILLPIDS
454
echo "Testing dgAuthz..."
456
CMPDN="cn=Bjorn Jensen,ou=Information Technology Division,ou=People,$BASEDN"
457
$LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD \
458
> $TESTOUT 2>&1 << EOMODS
459
dn: cn=Dynamic List of Members,$LISTDN
465
echo "Testing list search with dgIdentity and dgAuthz anonymously..."
466
echo "# Testing list search with dgIdentity and dgAuthz anonymously..." >> $SEARCHOUT
467
$LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 \
468
'(cn=Dynamic List of Members)' '*' \
471
if test $RC != 0 ; then
472
echo "ldapsearch failed ($RC)!"
473
test $KILLSERVERS != no && kill -HUP $KILLPIDS
477
echo "Testing list search with dgIdentity and dgAuthz as the authorized identity..."
478
echo "# Testing list search with dgIdentity and dgAuthz as the authorized identity..." >> $SEARCHOUT
479
$LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 \
480
-D "$BABSDN" -w bjensen \
481
'(cn=Dynamic List of Members)' '*' \
484
if test $RC != 0 ; then
485
echo "ldapsearch failed ($RC)!"
486
test $KILLSERVERS != no && kill -HUP $KILLPIDS
490
test $KILLSERVERS != no && kill -HUP $KILLPIDS
494
echo "Filtering ldapsearch results..."
495
. $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
496
echo "Filtering original ldif used to create database..."
497
. $LDIFFILTER < $LDIF > $LDIFFLT
498
echo "Comparing filter output..."
499
$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
501
if test $? != 0 ; then
502
echo "Comparison failed"
506
echo ">>>>> Test succeeded"
508
test $KILLSERVERS != no && wait