]> git.sur5r.net Git - openldap/blob - tests/scripts/test052-memberof
687b53ede8c298be88b67c9f28de3fb4d4ce3e23
[openldap] / tests / scripts / test052-memberof
1 #! /bin/sh
2 # $OpenLDAP$
3 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
4 ##
5 ## Copyright 1998-2007 The OpenLDAP Foundation.
6 ## All rights reserved.
7 ##
8 ## Redistribution and use in source and binary forms, with or without
9 ## modification, are permitted only as authorized by the OpenLDAP
10 ## Public License.
11 ##
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>.
15
16 echo "running defines.sh"
17 . $SRCDIR/scripts/defines.sh
18
19 mkdir -p $TESTDIR $DBDIR1 $TESTDIR/confdir
20
21 $SLAPPASSWD -g -n >$CONFIGPWF
22 echo "rootpw `$SLAPPASSWD -T $CONFIGPWF`" >$TESTDIR/configpw.conf
23
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 &
27 PID=$!
28 if test $WAIT != 0 ; then
29     echo PID $PID
30     read foo
31 fi
32 KILLPIDS="$PID"
33
34 sleep 1
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
38         RC=$?
39         if test $RC = 0 ; then
40                 break
41         fi
42         echo "Waiting 5 seconds for slapd to start..."
43         sleep 5
44 done
45 if test $RC != 0 ; then
46         echo "ldapsearch failed ($RC)!"
47         test $KILLSERVERS != no && kill -HUP $KILLPIDS
48         exit $RC
49 fi
50
51 cat /dev/null > $TESTOUT
52
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
59 olcDatabase: {1}bdb
60 olcSuffix: $BASEDN
61 olcRootDN: cn=Manager,$BASEDN
62 olcRootPW:: c2VjcmV0
63 olcMonitoring: TRUE
64 olcDbDirectory: $TESTDIR/db.1.a/
65 olcDbCacheSize: 1000
66 olcDbIndex: objectClass eq
67 olcDbIndex: cn pres,eq,sub
68 olcDbIndex: uid pres,eq,sub
69 olcDbIndex: sn pres,eq,sub
70 olcDbMode: 384
71
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
81 EOF
82 RC=$?
83 if test $RC != 0 ; then
84         echo "ldapadd failed ($RC)!"
85         test $KILLSERVERS != no && kill -HUP $KILLPIDS
86         exit $RC
87 fi
88
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
93 dn: $BASEDN
94 objectClass: organization
95 objectClass: dcObject
96 o: Example, Inc.
97 dc: example
98
99 dn: ou=People,$BASEDN
100 objectClass: organizationalUnit
101 ou: People
102
103 dn: ou=Groups,$BASEDN
104 objectClass: organizationalUnit
105 ou: Groups
106
107 dn: cn=Roger Rabbit,ou=People,$BASEDN
108 objectClass: inetOrgPerson
109 cn: Roger Rabbit
110 sn: Rabbit
111
112 dn: cn=Baby Herman,ou=People,$BASEDN
113 objectClass: inetOrgPerson
114 cn: Baby Herman
115 sn: Herman
116
117 dn: cn=Cartoonia,ou=Groups,$BASEDN
118 objectClass: groupOfNames
119 cn: Cartoonia
120 member: cn=Roger Rabbit,ou=People,$BASEDN
121 member: cn=Baby Herman,ou=People,$BASEDN
122 EOF
123 RC=$?
124 if test $RC != 0 ; then
125         echo "ldapadd failed ($RC)!"
126         test $KILLSERVERS != no && kill -HUP $KILLPIDS
127         exit $RC
128 fi
129
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
134 RC=$?
135 if test $RC != 0 ; then
136         echo "ldapsearch failed ($RC)!"
137         test $KILLSERVERS != no && kill -HUP $KILLPIDS
138         exit $RC
139 fi
140
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
146 changetype: add
147 objectClass: inetOrgPerson
148 cn: Jessica Rabbit
149 sn: Rabbit
150
151 dn: cn=Cartoonia,ou=Groups,$BASEDN
152 changetype: modify
153 add: member
154 member: cn=Jessica Rabbit,ou=People,$BASEDN
155 EOF
156
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
161 RC=$?
162 if test $RC != 0 ; then
163         echo "ldapsearch failed ($RC)!"
164         test $KILLSERVERS != no && kill -HUP $KILLPIDS
165         exit $RC
166 fi
167
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
173 changetype: modify
174 add: member
175 member: cn=Cartoonia,ou=Groups,$BASEDN
176 EOF
177
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
182 RC=$?
183 if test $RC != 0 ; then
184         echo "ldapsearch failed ($RC)!"
185         test $KILLSERVERS != no && kill -HUP $KILLPIDS
186         exit $RC
187 fi
188
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
194 changetype: delete
195 EOF
196
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
201 RC=$?
202 if test $RC != 0 ; then
203         echo "ldapsearch failed ($RC)!"
204         test $KILLSERVERS != no && kill -HUP $KILLPIDS
205         exit $RC
206 fi
207
208 test $KILLSERVERS != no && kill -HUP $KILLPIDS
209
210 LDIF=$MEMBEROFOUT
211
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
218
219 if test $? != 0 ; then
220         echo "Comparison failed"
221         exit 1
222 fi
223
224 echo ">>>>> Test succeeded"
225
226 test $KILLSERVERS != no && wait
227
228 exit 0