]> git.sur5r.net Git - openldap/blob - tests/scripts/test004-modify
bf47eebbb75495a4fc7b1c6f3d0023f322af1f04
[openldap] / tests / scripts / test004-modify
1 #! /bin/sh
2 # $OpenLDAP$
3
4 if test $# -eq 0 ; then
5         SRCDIR="."
6 else
7         SRCDIR=$1; shift
8 fi
9 if test $# -eq 1 ; then
10         BACKEND=$1; shift
11 fi
12
13 echo "running defines.sh $SRCDIR $BACKEND"
14 . $SRCDIR/scripts/defines.sh
15
16 echo "Cleaning up in $DBDIR..."
17
18 rm -f $DBDIR/[!C]*
19
20 echo "Running slapadd to build slapd database..."
21 $SLAPADD -f $CONF -l $LDIFORDERED
22 RC=$?
23 if test $RC != 0 ; then
24         echo "slapadd failed ($RC)!"
25         exit $RC
26 fi
27
28 echo "Starting slapd on TCP/IP port $PORT..."
29 $SLAPD -f $CONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 &
30 PID=$!
31
32 echo "Testing slapd modify operations..."
33 for i in 0 1 2 3 4 5; do
34         $LDAPSEARCH -s base -b "$MONITOR" -h localhost -p $PORT \
35                 'objectclass=*' > /dev/null 2>&1
36         RC=$?
37         if test $RC = 1 ; then
38                 echo "Waiting 5 seconds for slapd to start..."
39                 sleep 5
40         fi
41 done
42
43 if test $RC != 0 ; then
44         echo "ldapsearch failed ($RC)!"
45         kill -HUP $PID
46         exit $RC
47 fi
48
49 echo "Testing modify, add, and delete..."
50 $LDAPMODIFY -v -D "$MANAGERDN" -h localhost -p $PORT -w $PASSWD > \
51         $TESTOUT 2>&1 << EOMODS
52 version: 1
53
54 # LEADING COMMENT AND WHITE SPACE
55
56 dn: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US
57 # EMBEDDED COMMENT
58 changetype: modify
59 add: drink
60 drink: Orange Juice
61
62 dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
63 changetype: modify
64 # EMBEDDED COMMENT
65  CONTINUED
66 replace: description
67 description: The replaced multiLineDescription $ Blah Woof.
68 -
69 replace: drink
70 drink: Iced Tea
71 drink: Mad Dog 20/20
72
73 dn: cn=ITD Staff,ou=Groups,o=University of Michigan,c=US
74 delete: member
75 member: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
76 member: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
77 -
78 add: member
79 member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of Michigan, c=US
80 member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US
81
82 dn: cn=All Staff,ou=Groups,o=University of Michigan,c=US
83 changetype: modify
84 delete: member
85 -
86 add: member
87 member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of Michigan, c=US
88
89 dn: cn=Gern Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
90 changetype: add
91 objectclass: top
92 objectclass: person
93 objectclass: organizationalPerson
94 objectclass: newPilotPerson
95 cn: Gern Jensen
96 sn: Jensen
97 title: Chief Investigator, ITD
98 postaladdress: ITD $ 535 W. William St $ Ann Arbor, MI 48103
99 seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
100 drink: Coffee
101 homepostaladdress: 844 Brown St. Apt. 4 $ Ann Arbor, MI 48104
102 description: Very odd
103 facsimiletelephonenumber: +1 313 555 7557
104 telephonenumber: +1 313 555 8343
105 mail: gjensen@mailgw.umich.edu
106 homephone: +1 313 555 8844
107
108 dn: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
109 changetype: delete
110 # TRAILING COMMENT AND WHITE SPACE
111
112 EOMODS
113
114 RC=$?
115 if test $RC != 0 ; then
116         echo "ldapmodify failed ($RC)!"
117         kill -HUP $PID
118         exit $RC
119 fi
120
121 echo "Using ldapsearch to retrieve all the entries..."
122 $LDAPSEARCH -S "" -b "$BASEDN" -h localhost -p $PORT \
123             'objectClass=*' > $SEARCHOUT 2>&1
124 RC=$?
125 kill -HUP $PID
126 if test $RC != 0 ; then
127         echo "ldapsearch failed ($RC)!"
128         exit $RC
129 fi
130
131 LDIF=$MODIFYOUTMASTER
132
133 echo "Filtering ldapsearch results..."
134 . $SRCDIR/scripts/acfilter.sh < $SEARCHOUT > $SEARCHFLT
135 echo "Filtering original ldif used to create database..."
136 . $SRCDIR/scripts/acfilter.sh < $LDIF > $LDIFFLT
137 echo "Comparing filter output..."
138 $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
139
140 if test $? != 0 ; then
141         echo "comparison failed - modify operations did not complete correctly"
142         exit 1
143 fi
144
145 echo ">>>>> Test succeeded"
146
147 exit 0