Home | History | Annotate | Line # | Download | only in scripts
sql-test900-write revision 1.1
      1  1.1  lukem #! /bin/sh
      2  1.1  lukem # $OpenLDAP: pkg/ldap/tests/scripts/sql-test900-write,v 1.12.2.3 2008/02/11 23:26:50 kurt Exp $
      3  1.1  lukem ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
      4  1.1  lukem ##
      5  1.1  lukem ## Copyright 1998-2008 The OpenLDAP Foundation.
      6  1.1  lukem ## All rights reserved.
      7  1.1  lukem ##
      8  1.1  lukem ## Redistribution and use in source and binary forms, with or without
      9  1.1  lukem ## modification, are permitted only as authorized by the OpenLDAP
     10  1.1  lukem ## Public License.
     11  1.1  lukem ##
     12  1.1  lukem ## A copy of this license is available in the file LICENSE in the
     13  1.1  lukem ## top-level directory of the distribution or, alternatively, at
     14  1.1  lukem ## <http://www.OpenLDAP.org/license.html>.
     15  1.1  lukem 
     16  1.1  lukem echo "running defines.sh"
     17  1.1  lukem . $SRCDIR/scripts/defines.sh
     18  1.1  lukem 
     19  1.1  lukem if test $BACKSQL = "sqlno" ; then 
     20  1.1  lukem 	echo "SQL backend not available, test skipped"
     21  1.1  lukem 	exit 0
     22  1.1  lukem fi 
     23  1.1  lukem 
     24  1.1  lukem if test $RDBMS = "rdbmsno" ; then
     25  1.1  lukem 	echo "SQL test not requested, test skipped"
     26  1.1  lukem 	exit 0
     27  1.1  lukem fi
     28  1.1  lukem 
     29  1.1  lukem if test "${RDBMSWRITE}" != "yes"; then
     30  1.1  lukem 	echo "write test disabled for ${RDBMS}; set SLAPD_USE_SQLWRITE=yes to enable"
     31  1.1  lukem 	exit 0
     32  1.1  lukem fi
     33  1.1  lukem 
     34  1.1  lukem mkdir -p $TESTDIR
     35  1.1  lukem 
     36  1.1  lukem echo "Starting slapd on TCP/IP port $PORT1..."
     37  1.1  lukem . $CONFFILTER $BACKEND $MONITORDB < $SQLCONF > $CONF1
     38  1.1  lukem $SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
     39  1.1  lukem PID=$!
     40  1.1  lukem if test $WAIT != 0 ; then
     41  1.1  lukem     echo PID $PID
     42  1.1  lukem     read foo
     43  1.1  lukem fi
     44  1.1  lukem KILLPIDS="$PID"
     45  1.1  lukem 
     46  1.1  lukem echo "Testing SQL backend write operations..."
     47  1.1  lukem for i in 0 1 2 3 4 5; do
     48  1.1  lukem 	$LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \
     49  1.1  lukem 		'objectclass=*' > /dev/null 2>&1
     50  1.1  lukem 	RC=$?
     51  1.1  lukem 	if test $RC = 0 ; then
     52  1.1  lukem 		break
     53  1.1  lukem 	fi
     54  1.1  lukem 	echo "Waiting 5 seconds for slapd to start..."
     55  1.1  lukem 	sleep 5
     56  1.1  lukem done
     57  1.1  lukem 
     58  1.1  lukem if test $RC != 0 ; then
     59  1.1  lukem 	echo "ldapsearch failed ($RC)!"
     60  1.1  lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     61  1.1  lukem 	exit $RC
     62  1.1  lukem fi
     63  1.1  lukem 
     64  1.1  lukem cat /dev/null > $SEARCHOUT
     65  1.1  lukem 
     66  1.1  lukem BASEDN="dc=example,dc=com"
     67  1.1  lukem 
     68  1.1  lukem echo "Using ldapsearch to retrieve all the entries..."
     69  1.1  lukem echo "# Using ldapsearch to retrieve all the entries..." >> $SEARCHOUT
     70  1.1  lukem $LDAPSEARCH -S "" -h $LOCALHOST -p $PORT1 -b "$BASEDN" \
     71  1.1  lukem 	 "objectClass=*" >> $SEARCHOUT 2>&1
     72  1.1  lukem 
     73  1.1  lukem RC=$?
     74  1.1  lukem if test $RC != 0 ; then
     75  1.1  lukem 	echo "ldapsearch failed ($RC)!"
     76  1.1  lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     77  1.1  lukem 	exit $RC
     78  1.1  lukem fi
     79  1.1  lukem 
     80  1.1  lukem case ${RDBMS} in
     81  1.1  lukem 	# list here the RDBMSes whose mapping allows writes
     82  1.1  lukem pgsql|ibmdb2)
     83  1.1  lukem 	MANAGERDN="cn=Manager,${BASEDN}"
     84  1.1  lukem 	echo "Testing add..."
     85  1.1  lukem 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
     86  1.1  lukem 		-h $LOCALHOST -p $PORT1 >> $TESTOUT 2>&1 << EOMODS
     87  1.1  lukem version: 1
     88  1.1  lukem 
     89  1.1  lukem # Adding an organization...
     90  1.1  lukem dn: o=An Org,${BASEDN}
     91  1.1  lukem changetype: add
     92  1.1  lukem objectClass: organization
     93  1.1  lukem o: An Org
     94  1.1  lukem 
     95  1.1  lukem # Adding an organization with an "auxiliary" objectClass..
     96  1.1  lukem dn: dc=subnet,${BASEDN}
     97  1.1  lukem changetype: add
     98  1.1  lukem objectClass: organization
     99  1.1  lukem objectClass: dcObject
    100  1.1  lukem o: SubNet
    101  1.1  lukem dc: subnet
    102  1.1  lukem 
    103  1.1  lukem # Adding another organization with an "auxiliary" objectClass..
    104  1.1  lukem dn: dc=subnet2,${BASEDN}
    105  1.1  lukem changetype: add
    106  1.1  lukem objectClass: organization
    107  1.1  lukem objectClass: dcObject
    108  1.1  lukem o: SubNet 2
    109  1.1  lukem dc: subnet2
    110  1.1  lukem 
    111  1.1  lukem # Adding a person...
    112  1.1  lukem dn: cn=Lev Tolstoij,${BASEDN}
    113  1.1  lukem changetype: add
    114  1.1  lukem objectClass: inetOrgPerson
    115  1.1  lukem cn: Lev Tolstoij
    116  1.1  lukem sn: Tolstoij
    117  1.1  lukem givenName: Lev
    118  1.1  lukem telephoneNumber: +39 02 XXXX YYYY
    119  1.1  lukem telephoneNumber: +39 02 XXXX ZZZZ
    120  1.1  lukem userPassword: tanja
    121  1.1  lukem 
    122  1.1  lukem # Adding a person with an "auxiliary" objectClass...
    123  1.1  lukem dn: cn=Some One,${BASEDN}
    124  1.1  lukem changetype: add
    125  1.1  lukem objectClass: inetOrgPerson
    126  1.1  lukem objectClass: simpleSecurityObject
    127  1.1  lukem cn: Some One
    128  1.1  lukem sn: One
    129  1.1  lukem givenName: Some
    130  1.1  lukem telephoneNumber: +1 800 900 1234
    131  1.1  lukem telephoneNumber: +1 800 900 1235
    132  1.1  lukem userPassword: someone
    133  1.1  lukem 
    134  1.1  lukem # Adding a person in another subtree...
    135  1.1  lukem dn: cn=SubNet User,dc=subnet,${BASEDN}
    136  1.1  lukem changetype: add
    137  1.1  lukem objectClass: inetOrgPerson
    138  1.1  lukem cn: SubNet User
    139  1.1  lukem sn: User
    140  1.1  lukem givenName: SubNet
    141  1.1  lukem 
    142  1.1  lukem # Adding a document...
    143  1.1  lukem dn: documentTitle=War and Peace,${BASEDN}
    144  1.1  lukem changetype: add
    145  1.1  lukem objectClass: document
    146  1.1  lukem description: Historical novel
    147  1.1  lukem documentTitle: War and Peace
    148  1.1  lukem documentAuthor: cn=Lev Tolstoij,dc=example,dc=com
    149  1.1  lukem documentIdentifier: document 3
    150  1.1  lukem EOMODS
    151  1.1  lukem 
    152  1.1  lukem 	RC=$?
    153  1.1  lukem 	if test $RC != 0 ; then
    154  1.1  lukem 		echo "ldapmodify failed ($RC)!"
    155  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    156  1.1  lukem 		exit $RC
    157  1.1  lukem 	fi
    158  1.1  lukem 
    159  1.1  lukem 	echo "Using ldapsearch to retrieve all the entries..."
    160  1.1  lukem 	echo "# Using ldapsearch to retrieve all the entries..." >> $SEARCHOUT
    161  1.1  lukem 	$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT1 -b "$BASEDN" \
    162  1.1  lukem 		 "objectClass=*" >> $SEARCHOUT 2>&1
    163  1.1  lukem 
    164  1.1  lukem 	RC=$?
    165  1.1  lukem 	if test $RC != 0 ; then
    166  1.1  lukem 		echo "ldapsearch failed ($RC)!"
    167  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    168  1.1  lukem 		exit $RC
    169  1.1  lukem 	fi
    170  1.1  lukem 
    171  1.1  lukem 	echo "Testing modify..."
    172  1.1  lukem 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    173  1.1  lukem 		-h $LOCALHOST -p $PORT1 >> $TESTOUT 2>&1 << EOMODS
    174  1.1  lukem version: 1
    175  1.1  lukem 
    176  1.1  lukem # Deleting all telephone numbers...
    177  1.1  lukem dn: cn=Some One,${BASEDN}
    178  1.1  lukem changetype: modify
    179  1.1  lukem delete: telephoneNumber
    180  1.1  lukem -
    181  1.1  lukem 
    182  1.1  lukem # Adding a telephone number...
    183  1.1  lukem dn: cn=Mitya Kovalev,${BASEDN}
    184  1.1  lukem changetype: modify
    185  1.1  lukem add: telephoneNumber
    186  1.1  lukem telephoneNumber: +1 800 123 4567
    187  1.1  lukem -
    188  1.1  lukem 
    189  1.1  lukem # Deleting a specific telephone number and adding a new one...
    190  1.1  lukem dn: cn=Lev Tolstoij,${BASEDN}
    191  1.1  lukem changetype: modify
    192  1.1  lukem delete: telephoneNumber
    193  1.1  lukem telephoneNumber: +39 02 XXXX YYYY
    194  1.1  lukem -
    195  1.1  lukem add: telephoneNumber
    196  1.1  lukem telephoneNumber: +39 333 ZZZ 1234
    197  1.1  lukem -
    198  1.1  lukem 
    199  1.1  lukem # Adding an author to a document...
    200  1.1  lukem dn: documentTitle=book1,${BASEDN}
    201  1.1  lukem changetype: modify
    202  1.1  lukem add: documentAuthor
    203  1.1  lukem documentAuthor: cn=Lev Tolstoij,${BASEDN}
    204  1.1  lukem -
    205  1.1  lukem 
    206  1.1  lukem # Adding an author to another document...
    207  1.1  lukem dn: documentTitle=book2,${BASEDN}
    208  1.1  lukem changetype: modify
    209  1.1  lukem add: documentAuthor
    210  1.1  lukem documentAuthor: cn=Lev Tolstoij,${BASEDN}
    211  1.1  lukem -
    212  1.1  lukem 
    213  1.1  lukem # Adding an "auxiliary" objectClass...
    214  1.1  lukem dn: cn=Mitya Kovalev,${BASEDN}
    215  1.1  lukem changetype: modify
    216  1.1  lukem add: objectClass
    217  1.1  lukem objectClass: simpleSecurityObject
    218  1.1  lukem -
    219  1.1  lukem 
    220  1.1  lukem # Deleting an "auxiliary" objectClass...
    221  1.1  lukem dn: cn=Some One,${BASEDN}
    222  1.1  lukem changetype: modify
    223  1.1  lukem delete: objectClass
    224  1.1  lukem objectClass: simpleSecurityObject
    225  1.1  lukem -
    226  1.1  lukem 
    227  1.1  lukem # Deleting userPasswords
    228  1.1  lukem dn: cn=Lev Tolstoij,${BASEDN}
    229  1.1  lukem changetype: modify
    230  1.1  lukem delete: userPassword
    231  1.1  lukem -
    232  1.1  lukem EOMODS
    233  1.1  lukem 
    234  1.1  lukem 	RC=$?
    235  1.1  lukem 	if test $RC != 0 ; then
    236  1.1  lukem 		echo "ldapmodify failed ($RC)!"
    237  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    238  1.1  lukem 		exit $RC
    239  1.1  lukem 	fi
    240  1.1  lukem 
    241  1.1  lukem 	echo "Using ldapsearch to retrieve all the entries..."
    242  1.1  lukem 	echo "# Using ldapsearch to retrieve all the entries..." >> $SEARCHOUT
    243  1.1  lukem 	$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT1 -b "$BASEDN" \
    244  1.1  lukem 		 "objectClass=*" >> $SEARCHOUT 2>&1
    245  1.1  lukem 
    246  1.1  lukem 	RC=$?
    247  1.1  lukem 	if test $RC != 0 ; then
    248  1.1  lukem 		echo "ldapsearch failed ($RC)!"
    249  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    250  1.1  lukem 		exit $RC
    251  1.1  lukem 	fi
    252  1.1  lukem 
    253  1.1  lukem 	echo "Testing delete..."
    254  1.1  lukem 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    255  1.1  lukem 		-h $LOCALHOST -p $PORT1 >> $TESTOUT 2>&1 << EOMODS
    256  1.1  lukem version: 1
    257  1.1  lukem 
    258  1.1  lukem # Deleting a person...
    259  1.1  lukem dn: cn=Torvlobnor Puzdoy,${BASEDN}
    260  1.1  lukem changetype: delete
    261  1.1  lukem 
    262  1.1  lukem # Deleting a document...
    263  1.1  lukem dn: documentTitle=book1,${BASEDN}
    264  1.1  lukem changetype: delete
    265  1.1  lukem 
    266  1.1  lukem # Deleting an organization with an "auxiliary" objectClass...
    267  1.1  lukem dn: dc=subnet2,${BASEDN}
    268  1.1  lukem changetype: delete
    269  1.1  lukem EOMODS
    270  1.1  lukem 
    271  1.1  lukem 	RC=$?
    272  1.1  lukem 	if test $RC != 0 ; then
    273  1.1  lukem 		echo "ldapmodify failed ($RC)!"
    274  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    275  1.1  lukem 		exit $RC
    276  1.1  lukem 	fi
    277  1.1  lukem 
    278  1.1  lukem 	echo "Using ldapsearch to retrieve all the entries..."
    279  1.1  lukem 	echo "# Using ldapsearch to retrieve all the entries..." >> $SEARCHOUT
    280  1.1  lukem 	$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT1 -b "$BASEDN" \
    281  1.1  lukem 		 "objectClass=*" >> $SEARCHOUT 2>&1
    282  1.1  lukem 
    283  1.1  lukem 	RC=$?
    284  1.1  lukem 	if test $RC != 0 ; then
    285  1.1  lukem 		echo "ldapsearch failed ($RC)!"
    286  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    287  1.1  lukem 		exit $RC
    288  1.1  lukem 	fi
    289  1.1  lukem 
    290  1.1  lukem 	echo "Testing rename..."
    291  1.1  lukem 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    292  1.1  lukem 		-h $LOCALHOST -p $PORT1 >> $TESTOUT 2>&1 << EOMODS
    293  1.1  lukem version: 1
    294  1.1  lukem 
    295  1.1  lukem # Renaming an organization...
    296  1.1  lukem dn: o=An Org,${BASEDN}
    297  1.1  lukem changetype: modrdn
    298  1.1  lukem newrdn: o=Renamed Org
    299  1.1  lukem deleteoldrdn: 1
    300  1.1  lukem 
    301  1.1  lukem # Moving a person to another subtree...
    302  1.1  lukem dn: cn=Lev Tolstoij,${BASEDN}
    303  1.1  lukem changetype: modrdn
    304  1.1  lukem newrdn: cn=Lev Tolstoij
    305  1.1  lukem deleteoldrdn: 0
    306  1.1  lukem newsuperior: dc=subnet,${BASEDN}
    307  1.1  lukem 
    308  1.1  lukem # Renaming a book...
    309  1.1  lukem dn: documentTitle=book2,${BASEDN}
    310  1.1  lukem changetype: modrdn
    311  1.1  lukem newrdn: documentTitle=Renamed Book
    312  1.1  lukem deleteoldrdn: 1
    313  1.1  lukem EOMODS
    314  1.1  lukem 
    315  1.1  lukem 	RC=$?
    316  1.1  lukem 	if test $RC != 0 ; then
    317  1.1  lukem 		echo "ldapmodify failed ($RC)!"
    318  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    319  1.1  lukem 		exit $RC
    320  1.1  lukem 	fi
    321  1.1  lukem 
    322  1.1  lukem 	echo "Using ldapsearch to retrieve all the entries..."
    323  1.1  lukem 	echo "# Using ldapsearch to retrieve all the entries..." >> $SEARCHOUT
    324  1.1  lukem 	$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT1 -b "$BASEDN" \
    325  1.1  lukem 		 "objectClass=*" >> $SEARCHOUT 2>&1
    326  1.1  lukem 
    327  1.1  lukem 	RC=$?
    328  1.1  lukem 	if test $RC != 0 ; then
    329  1.1  lukem 		echo "ldapsearch failed ($RC)!"
    330  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    331  1.1  lukem 		exit $RC
    332  1.1  lukem 	fi
    333  1.1  lukem 
    334  1.1  lukem 	echo "Adding a child to a referral (should fail)..."
    335  1.1  lukem 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    336  1.1  lukem 		-h $LOCALHOST -p $PORT1 >> $TESTOUT 2>&1 << EOMODS
    337  1.1  lukem version: 1
    338  1.1  lukem 
    339  1.1  lukem dn: cn=Should Fail,ou=Referral,${BASEDN}
    340  1.1  lukem changetype: add
    341  1.1  lukem objectClass: inetOrgPerson
    342  1.1  lukem cn: Should Fail
    343  1.1  lukem sn: Fail
    344  1.1  lukem telephoneNumber: +39 02 23456789
    345  1.1  lukem EOMODS
    346  1.1  lukem 
    347  1.1  lukem 	RC=$?
    348  1.1  lukem 	if test $RC = 0 ; then
    349  1.1  lukem 		echo "ldapmodify should have failed ($RC)!"
    350  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    351  1.1  lukem 		exit 1
    352  1.1  lukem 	fi
    353  1.1  lukem 
    354  1.1  lukem 	echo "Modifying a referral (should fail)..."
    355  1.1  lukem 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    356  1.1  lukem 		-h $LOCALHOST -p $PORT1 >> $TESTOUT 2>&1 << EOMODS
    357  1.1  lukem version: 1
    358  1.1  lukem 
    359  1.1  lukem dn: ou=Referral,${BASEDN}
    360  1.1  lukem changetype: modify
    361  1.1  lukem replace: ref
    362  1.1  lukem ref: ldap://localhost:9009/
    363  1.1  lukem -
    364  1.1  lukem EOMODS
    365  1.1  lukem 
    366  1.1  lukem 	RC=$?
    367  1.1  lukem 	if test $RC = 0 ; then
    368  1.1  lukem 		echo "ldapmodify should have failed ($RC)!"
    369  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    370  1.1  lukem 		exit 1
    371  1.1  lukem 	fi
    372  1.1  lukem 
    373  1.1  lukem 	echo "Renaming a referral (should fail)..."
    374  1.1  lukem 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    375  1.1  lukem 		-h $LOCALHOST -p $PORT1 >> $TESTOUT 2>&1 << EOMODS
    376  1.1  lukem version: 1
    377  1.1  lukem 
    378  1.1  lukem dn: ou=Referral,${BASEDN}
    379  1.1  lukem changetype: modrdn
    380  1.1  lukem newrdn: ou=Renamed Referral
    381  1.1  lukem deleteoldrdn: 1
    382  1.1  lukem EOMODS
    383  1.1  lukem 
    384  1.1  lukem 	RC=$?
    385  1.1  lukem 	if test $RC = 0 ; then
    386  1.1  lukem 		echo "ldapmodify should have failed ($RC)!"
    387  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    388  1.1  lukem 		exit 1
    389  1.1  lukem 	fi
    390  1.1  lukem 
    391  1.1  lukem 	echo "Deleting a referral (should fail)..."
    392  1.1  lukem 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    393  1.1  lukem 		-h $LOCALHOST -p $PORT1 >> $TESTOUT 2>&1 << EOMODS
    394  1.1  lukem version: 1
    395  1.1  lukem 
    396  1.1  lukem dn: ou=Referral,${BASEDN}
    397  1.1  lukem changetype: delete
    398  1.1  lukem EOMODS
    399  1.1  lukem 
    400  1.1  lukem 	RC=$?
    401  1.1  lukem 	if test $RC = 0 ; then
    402  1.1  lukem 		echo "ldapmodify should have failed ($RC)!"
    403  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    404  1.1  lukem 		exit 1
    405  1.1  lukem 	fi
    406  1.1  lukem 
    407  1.1  lukem 	echo "Adding a referral..."
    408  1.1  lukem 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    409  1.1  lukem 		-h $LOCALHOST -p $PORT1 -M >> $TESTOUT 2>&1 << EOMODS
    410  1.1  lukem version: 1
    411  1.1  lukem 
    412  1.1  lukem dn: ou=Another Referral,${BASEDN}
    413  1.1  lukem changetype: add
    414  1.1  lukem objectClass: referral
    415  1.1  lukem objectClass: extensibleObject
    416  1.1  lukem ou: Another Referral
    417  1.1  lukem ref: ldap://localhost:9009/
    418  1.1  lukem EOMODS
    419  1.1  lukem 
    420  1.1  lukem 	RC=$?
    421  1.1  lukem 	if test $RC != 0 ; then
    422  1.1  lukem 		echo "ldapmodify failed ($RC)!"
    423  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    424  1.1  lukem 		exit $RC
    425  1.1  lukem 	fi
    426  1.1  lukem 
    427  1.1  lukem 	echo "Modifying a referral with manageDSAit..."
    428  1.1  lukem 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    429  1.1  lukem 		-h $LOCALHOST -p $PORT1 -M >> $TESTOUT 2>&1 << EOMODS
    430  1.1  lukem version: 1
    431  1.1  lukem 
    432  1.1  lukem dn: ou=Referral,${BASEDN}
    433  1.1  lukem changetype: modify
    434  1.1  lukem replace: ref
    435  1.1  lukem ref: ldap://localhost:9009/
    436  1.1  lukem -
    437  1.1  lukem EOMODS
    438  1.1  lukem 
    439  1.1  lukem 	RC=$?
    440  1.1  lukem 	if test $RC != 0 ; then
    441  1.1  lukem 		echo "ldapmodify failed ($RC)!"
    442  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    443  1.1  lukem 		exit $RC
    444  1.1  lukem 	fi
    445  1.1  lukem 
    446  1.1  lukem 	echo "Using ldapsearch to retrieve the modified entry..."
    447  1.1  lukem 	echo "# Using ldapsearch to retrieve the modified entry..." >> $SEARCHOUT
    448  1.1  lukem 	$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT1 -b "ou=Referral,$BASEDN" -M \
    449  1.1  lukem 		 "objectClass=*" '*' ref >> $SEARCHOUT 2>&1
    450  1.1  lukem 
    451  1.1  lukem 	RC=$?
    452  1.1  lukem 	if test $RC != 0 ; then
    453  1.1  lukem 		echo "ldapsearch failed ($RC)!"
    454  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    455  1.1  lukem 		exit $RC
    456  1.1  lukem 	fi
    457  1.1  lukem 
    458  1.1  lukem 	echo "Renaming a referral with manageDSAit..."
    459  1.1  lukem 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    460  1.1  lukem 		-h $LOCALHOST -p $PORT1 -M >> $TESTOUT 2>&1 << EOMODS
    461  1.1  lukem version: 1
    462  1.1  lukem 
    463  1.1  lukem dn: ou=Referral,${BASEDN}
    464  1.1  lukem changetype: modrdn
    465  1.1  lukem newrdn: ou=Renamed Referral
    466  1.1  lukem deleteoldrdn: 1
    467  1.1  lukem EOMODS
    468  1.1  lukem 
    469  1.1  lukem 	RC=$?
    470  1.1  lukem 	if test $RC != 0 ; then
    471  1.1  lukem 		echo "ldapmodify failed ($RC)!"
    472  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    473  1.1  lukem 		exit $RC
    474  1.1  lukem 	fi
    475  1.1  lukem 
    476  1.1  lukem 	echo "Using ldapsearch to retrieve the renamed entry..."
    477  1.1  lukem 	echo "# Using ldapsearch to retrieve the renamed entry..." >> $SEARCHOUT
    478  1.1  lukem 	$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT1 -b "ou=Renamed Referral,$BASEDN" -M \
    479  1.1  lukem 		 "objectClass=*" '*' ref >> $SEARCHOUT 2>&1
    480  1.1  lukem 
    481  1.1  lukem 	RC=$?
    482  1.1  lukem 	if test $RC != 0 ; then
    483  1.1  lukem 		echo "ldapsearch failed ($RC)!"
    484  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    485  1.1  lukem 		exit $RC
    486  1.1  lukem 	fi
    487  1.1  lukem 
    488  1.1  lukem 	echo "Deleting a referral with manageDSAit..."
    489  1.1  lukem 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    490  1.1  lukem 		-h $LOCALHOST -p $PORT1 -M >> $TESTOUT 2>&1 << EOMODS
    491  1.1  lukem version: 1
    492  1.1  lukem 
    493  1.1  lukem dn: ou=Renamed Referral,${BASEDN}
    494  1.1  lukem changetype: delete
    495  1.1  lukem EOMODS
    496  1.1  lukem 
    497  1.1  lukem 	RC=$?
    498  1.1  lukem 	if test $RC != 0 ; then
    499  1.1  lukem 		echo "ldapmodify failed ($RC)!"
    500  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    501  1.1  lukem 		exit $RC
    502  1.1  lukem 	fi
    503  1.1  lukem 
    504  1.1  lukem 	BINDDN="cn=Mitya Kovalev,${BASEDN}"
    505  1.1  lukem 	BINDPW="mit"
    506  1.1  lukem 	NEWPW="newsecret"
    507  1.1  lukem 	echo "Testing passwd change..."
    508  1.1  lukem 	$LDAPPASSWD -h $LOCALHOST -p $PORT1 \
    509  1.1  lukem 		-D "${BINDDN}" -w ${BINDPW} -s ${NEWPW} \
    510  1.1  lukem 		"$BINDDN" >> $TESTOUT 2>&1
    511  1.1  lukem 
    512  1.1  lukem 	RC=$?
    513  1.1  lukem 	if test $RC != 0 ; then
    514  1.1  lukem 		echo "ldappasswd failed ($RC)!"
    515  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    516  1.1  lukem 		exit $RC
    517  1.1  lukem 	fi
    518  1.1  lukem 
    519  1.1  lukem 	echo -n "Testing bind with new secret... "
    520  1.1  lukem 	$LDAPWHOAMI -h $LOCALHOST -p $PORT1 -D "$BINDDN" -w $NEWPW
    521  1.1  lukem 	RC=$?
    522  1.1  lukem 	if test $RC != 0 ; then
    523  1.1  lukem 		echo "ldapwhoami failed ($RC)!"
    524  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    525  1.1  lukem 		exit $RC
    526  1.1  lukem 	fi
    527  1.1  lukem 
    528  1.1  lukem 	BINDDN="cn=Some One,${BASEDN}"
    529  1.1  lukem 	BINDPW="someone"
    530  1.1  lukem 	echo -n "Testing bind with newly added user... "
    531  1.1  lukem 	$LDAPWHOAMI -h $LOCALHOST -p $PORT1 -D "$BINDDN" -w $BINDPW
    532  1.1  lukem 	RC=$?
    533  1.1  lukem 	if test $RC != 0 ; then
    534  1.1  lukem 		echo "ldapwhoami failed ($RC)!"
    535  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    536  1.1  lukem 		exit $RC
    537  1.1  lukem 	fi
    538  1.1  lukem 
    539  1.1  lukem 	echo "Using ldapsearch to retrieve all the entries..."
    540  1.1  lukem 	echo "# Using ldapsearch to retrieve all the entries..." >> $SEARCHOUT
    541  1.1  lukem 	$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT1 -b "$BASEDN" \
    542  1.1  lukem 		 "objectClass=*" >> $SEARCHOUT 2>&1
    543  1.1  lukem 
    544  1.1  lukem 	RC=$?
    545  1.1  lukem 	if test $RC != 0 ; then
    546  1.1  lukem 		echo "ldapsearch failed ($RC)!"
    547  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    548  1.1  lukem 		exit $RC
    549  1.1  lukem 	fi
    550  1.1  lukem 
    551  1.1  lukem 	echo "Filtering ldapsearch results..."
    552  1.1  lukem 	. $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
    553  1.1  lukem 	echo "Filtering modified ldif..."
    554  1.1  lukem 	. $LDIFFILTER < $SQLWRITE > $LDIFFLT
    555  1.1  lukem 	echo "Comparing filter output..."
    556  1.1  lukem 	$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
    557  1.1  lukem 
    558  1.1  lukem 	if test $? != 0 ; then
    559  1.1  lukem 		echo "comparison failed - SQL mods search didn't succeed"
    560  1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    561  1.1  lukem 		exit 1
    562  1.1  lukem 	fi
    563  1.1  lukem 	;;
    564  1.1  lukem 
    565  1.1  lukem *)
    566  1.1  lukem 	echo "apparently ${RDBMS} does not support writes; skipping..."
    567  1.1  lukem 	;;
    568  1.1  lukem esac
    569  1.1  lukem 
    570  1.1  lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
    571  1.1  lukem 
    572  1.1  lukem echo ">>>>> Test succeeded"
    573  1.1  lukem exit 0
    574