Home | History | Annotate | Line # | Download | only in scripts
      1       1.1     lukem #! /bin/sh
      2   1.1.1.4      tron # $OpenLDAP$
      3       1.1     lukem ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
      4       1.1     lukem ##
      5  1.1.1.10  christos ## Copyright 1998-2024 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 mkdir -p $TESTDIR $DBDIR1A $DBDIR1B
     20       1.1     lukem 
     21       1.1     lukem echo "Running slapadd to build slapd database..."
     22   1.1.1.9  christos . $CONFFILTER $BACKEND < $CONF2DB > $CONF1
     23       1.1     lukem $SLAPADD -f $CONF1 -b "$BASEDN" -l $LDIFORDERED
     24       1.1     lukem RC=$?
     25       1.1     lukem if test $RC != 0 ; then
     26       1.1     lukem 	echo "slapadd failed ($RC)!"
     27       1.1     lukem 	exit $RC
     28       1.1     lukem fi
     29       1.1     lukem 
     30       1.1     lukem echo "Starting slapd on TCP/IP port $PORT1..."
     31   1.1.1.9  christos $SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
     32       1.1     lukem PID=$!
     33       1.1     lukem if test $WAIT != 0 ; then
     34       1.1     lukem     echo PID $PID
     35       1.1     lukem     read foo
     36       1.1     lukem fi
     37       1.1     lukem KILLPIDS="$PID"
     38       1.1     lukem 
     39       1.1     lukem sleep 1
     40       1.1     lukem 
     41       1.1     lukem echo "Testing slapd modrdn operations..."
     42       1.1     lukem 
     43       1.1     lukem # Make sure we can search the database
     44       1.1     lukem for i in 0 1 2 3 4 5; do
     45   1.1.1.9  christos 	$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
     46       1.1     lukem 	    'objectClass=*' > $INITOUT 2>&1
     47       1.1     lukem 	RC=$?
     48       1.1     lukem 	if test $RC = 0 ; then
     49       1.1     lukem 		break
     50       1.1     lukem 	fi
     51       1.1     lukem 	echo "Waiting 5 seconds for slapd to start..."
     52       1.1     lukem 	sleep 5
     53       1.1     lukem done
     54       1.1     lukem 
     55       1.1     lukem if test $RC != 0 ; then
     56       1.1     lukem 	echo "ldapsearch failed ($RC)!"
     57       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     58       1.1     lukem 	exit $RC
     59       1.1     lukem fi
     60       1.1     lukem 
     61       1.1     lukem # -r used to do remove of old rdn
     62       1.1     lukem 
     63       1.1     lukem echo "Testing modrdn(deleteoldrdn=0)..."
     64   1.1.1.9  christos $LDAPMODRDN -D "$MANAGERDN" -H $URI1 -w $PASSWD > \
     65       1.1     lukem 	$TESTOUT 2>&1 'cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example, dc=com' 'cn=James A Jones III'
     66       1.1     lukem 
     67       1.1     lukem RC=$?
     68       1.1     lukem if test $RC != 0 ; then
     69       1.1     lukem 	echo "ldapmodrdn failed ($RC)!"
     70       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     71       1.1     lukem 	exit $RC
     72       1.1     lukem fi
     73       1.1     lukem 
     74       1.1     lukem echo "Testing modrdn(deleteoldrdn=1)..."
     75   1.1.1.9  christos $LDAPMODRDN -D "$MANAGERDN" -r -H $URI1 -w $PASSWD >> \
     76       1.1     lukem 	$TESTOUT 2>&1 'cn=James A Jones 2, ou=Information Technology Division, ou=People, dc=example, dc=com' 'cn=James A Jones II'
     77       1.1     lukem 
     78       1.1     lukem RC=$?
     79       1.1     lukem if test $RC != 0 ; then
     80       1.1     lukem 	echo "ldapmodrdn failed ($RC)!"
     81       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     82       1.1     lukem 	exit $RC
     83       1.1     lukem fi
     84       1.1     lukem 
     85       1.1     lukem # Ensure the new rdn's can be found
     86       1.1     lukem 
     87       1.1     lukem echo "Using ldapsearch to retrieve entries using new rdn (cn=James A Jones III)..."
     88   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
     89       1.1     lukem 	    'cn=James A Jones III' > $SEARCHOUT 2>&1
     90       1.1     lukem RC=$?
     91       1.1     lukem if test $RC != 0 ; then
     92       1.1     lukem 	echo "ldapsearch failed ($RC)!"
     93       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     94       1.1     lukem 	exit $RC
     95       1.1     lukem fi
     96       1.1     lukem 
     97       1.1     lukem 
     98   1.1.1.9  christos LDIF=$MODRDNOUTPROVIDER1
     99       1.1     lukem 
    100       1.1     lukem echo "Filtering ldapsearch results..."
    101   1.1.1.3      adam $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
    102       1.1     lukem echo "Filtering original ldif used to create database..."
    103   1.1.1.3      adam $LDIFFILTER < $LDIF > $LDIFFLT
    104       1.1     lukem echo "Comparing filter output..."
    105       1.1     lukem $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
    106       1.1     lukem 
    107       1.1     lukem if test $? != 0 ; then
    108       1.1     lukem 	echo "comparison failed - modrdn operations did not complete correctly"
    109       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    110  1.1.1.10  christos 	exit 1
    111       1.1     lukem fi
    112       1.1     lukem 
    113       1.1     lukem 
    114       1.1     lukem echo "Using ldapsearch to retrieve entries using new rdn (cn=James A Jones II)..."
    115   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    116       1.1     lukem 	    'cn=James A Jones II' > $SEARCHOUT 2>&1
    117       1.1     lukem RC=$?
    118       1.1     lukem if test $RC != 0 ; then
    119       1.1     lukem 	echo "ldapsearch failed ($RC)!"
    120       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    121       1.1     lukem 	exit $RC
    122       1.1     lukem fi
    123       1.1     lukem 
    124       1.1     lukem 
    125   1.1.1.9  christos LDIF=$MODRDNOUTPROVIDER2
    126       1.1     lukem 
    127       1.1     lukem echo "Filtering ldapsearch results..."
    128   1.1.1.3      adam $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
    129       1.1     lukem echo "Filtering original ldif used to create database..."
    130   1.1.1.3      adam $LDIFFILTER < $LDIF > $LDIFFLT
    131       1.1     lukem echo "Comparing filter output..."
    132       1.1     lukem $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
    133       1.1     lukem 
    134       1.1     lukem if test $? != 0 ; then
    135       1.1     lukem 	echo "comparison failed - modrdn operations did not complete correctly"
    136       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    137  1.1.1.10  christos 	exit 1
    138       1.1     lukem fi
    139       1.1     lukem 
    140       1.1     lukem # Ensure that you cannot find the entry for which the rdn was deleted as
    141       1.1     lukem # an attribute.
    142       1.1     lukem 
    143       1.1     lukem echo "Using ldapsearch to retrieve entries using removed rdn (cn=James A Jones 2)..."
    144   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    145       1.1     lukem 	    'cn=James A Jones 2' > $SEARCHOUT 2>&1
    146       1.1     lukem RC=$?
    147       1.1     lukem if test $RC != 0 ; then
    148       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    149       1.1     lukem 	echo "ldapsearch failed ($RC)!"
    150       1.1     lukem 	exit $RC
    151       1.1     lukem fi
    152       1.1     lukem $CMP $SEARCHOUT - < /dev/null > $CMPOUT
    153       1.1     lukem if test $? != 0 ; then
    154       1.1     lukem 	echo "failure: ldapsearch found attribute that was to be removed!"
    155       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    156  1.1.1.10  christos 	exit 1
    157       1.1     lukem fi
    158       1.1     lukem 
    159       1.1     lukem echo "Using ldapsearch to retrieve all the entries..."
    160   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    161       1.1     lukem 	    'objectClass=*' > $SEARCHOUT 2>&1
    162       1.1     lukem RC=$?
    163       1.1     lukem if test $RC != 0 ; then
    164       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    165       1.1     lukem 	echo "ldapsearch failed ($RC)!"
    166       1.1     lukem 	exit $RC
    167       1.1     lukem fi
    168       1.1     lukem 
    169   1.1.1.9  christos LDIF=$MODRDNOUTPROVIDER0
    170       1.1     lukem 
    171       1.1     lukem echo "Filtering ldapsearch results..."
    172   1.1.1.3      adam $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
    173       1.1     lukem echo "Filtering original ldif used to create database..."
    174   1.1.1.3      adam $LDIFFILTER < $LDIF > $LDIFFLT
    175       1.1     lukem echo "Comparing filter output..."
    176       1.1     lukem $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
    177       1.1     lukem 
    178       1.1     lukem if test $? != 0 ; then
    179       1.1     lukem 	echo "comparison failed - modrdn operations did not complete correctly"
    180       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    181  1.1.1.10  christos 	exit 1
    182       1.1     lukem fi
    183       1.1     lukem 
    184       1.1     lukem # Test that you can use modrdn with an attribute value which was previously
    185       1.1     lukem # present
    186       1.1     lukem 
    187       1.1     lukem echo "Testing modrdn(deleteoldrdn=1), modrdn with new rdn already an att val..."
    188   1.1.1.9  christos $LDAPMODRDN -D "$MANAGERDN" -r -H $URI1 -w $PASSWD > \
    189       1.1     lukem 	/dev/null 2>&1 'cn=James A Jones III, ou=Alumni Association, ou=People, dc=example, dc=com' 'cn=James A Jones 1'
    190       1.1     lukem 
    191       1.1     lukem RC=$?
    192       1.1     lukem if test $RC != 0 ; then
    193       1.1     lukem 	echo "ldapmodrdn failed ($RC)!"
    194       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    195       1.1     lukem 	exit $RC
    196       1.1     lukem fi
    197       1.1     lukem 
    198       1.1     lukem echo "Using ldapsearch to retrieve entries using new rdn (cn=James A Jones 1)..."
    199   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    200       1.1     lukem 	    'cn=James A Jones 1' > $SEARCHOUT 2>&1
    201       1.1     lukem RC=$?
    202       1.1     lukem 
    203       1.1     lukem if test $RC != 0 ; then
    204       1.1     lukem 	echo "ldapsearch failed ($RC)!"
    205       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    206       1.1     lukem 	exit $RC
    207       1.1     lukem fi
    208       1.1     lukem 
    209   1.1.1.9  christos LDIF=$MODRDNOUTPROVIDER3
    210       1.1     lukem 
    211       1.1     lukem echo "Filtering ldapsearch results..."
    212   1.1.1.3      adam $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
    213       1.1     lukem echo "Filtering original ldif used to create database..."
    214   1.1.1.3      adam $LDIFFILTER < $LDIF > $LDIFFLT
    215       1.1     lukem echo "Comparing filter output..."
    216       1.1     lukem $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
    217       1.1     lukem 
    218       1.1     lukem if test $? != 0 ; then
    219       1.1     lukem 	echo "comparison failed - modrdn operations did not complete correctly"
    220       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    221  1.1.1.10  christos 	exit 1
    222       1.1     lukem fi
    223       1.1     lukem 
    224       1.1     lukem echo "Testing modrdn to another database (should fail with affectsMultipleDSAs)"
    225   1.1.1.9  christos $LDAPMODRDN -D "$MANAGERDN" -H $URI1 -w $PASSWD > \
    226       1.1     lukem 	$TESTOUT 2>&1 'cn=All Staff,ou=Groups,dc=example,dc=com' 'cn=Everyone'
    227       1.1     lukem RC=$?
    228       1.1     lukem case $RC in
    229       1.1     lukem 0)
    230       1.1     lukem 	echo "ldapmodrdn succeeded, should have failed!"
    231       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    232  1.1.1.10  christos 	exit 1
    233       1.1     lukem 	;;
    234       1.1     lukem 71)
    235       1.1     lukem 	;;
    236       1.1     lukem *)
    237       1.1     lukem 	echo "ldapmodrdn failed ($RC)!"
    238       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    239       1.1     lukem 	exit $RC
    240       1.1     lukem 	;;
    241       1.1     lukem esac
    242       1.1     lukem 
    243       1.1     lukem echo "Testing modrdn with newSuperior = target (should fail with unwillingToPerform)"
    244   1.1.1.9  christos $LDAPMODRDN -D "$MANAGERDN" -H $URI1 -w $PASSWD > \
    245       1.1     lukem 	$TESTOUT 2>&1  -s 'cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example, dc=com' \
    246       1.1     lukem 	'cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example, dc=com' 'cn=James A Jones 1'
    247       1.1     lukem 
    248       1.1     lukem RC=$?
    249       1.1     lukem case $RC in
    250       1.1     lukem 0)
    251       1.1     lukem 	echo "ldapmodrdn succeeded, should have failed!"
    252       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    253  1.1.1.10  christos 	exit 1
    254       1.1     lukem 	;;
    255       1.1     lukem 53)
    256       1.1     lukem 	;;
    257       1.1     lukem *)
    258       1.1     lukem 	echo "ldapmodrdn failed ($RC)!"
    259       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    260       1.1     lukem 	exit $RC
    261       1.1     lukem 	;;
    262       1.1     lukem esac
    263       1.1     lukem 
    264       1.1     lukem echo "Testing modrdn with newRdn exact same as target..."
    265   1.1.1.9  christos $LDAPMODRDN -D "$MANAGERDN" -H $URI1 -w $PASSWD > \
    266       1.1     lukem 	$TESTOUT 2>&1 'cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example, dc=com' 'cn=James A Jones 1'
    267       1.1     lukem 
    268       1.1     lukem RC=$?
    269       1.1     lukem case $RC in
    270       1.1     lukem 0)
    271       1.1     lukem 	;;
    272       1.1     lukem *)
    273       1.1     lukem 	echo "ldapmodrdn failed ($RC)!"
    274       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    275       1.1     lukem 	exit $RC
    276       1.1     lukem 	;;
    277       1.1     lukem esac
    278       1.1     lukem 
    279       1.1     lukem echo "Testing modrdn with newRdn same as target, changed case..."
    280   1.1.1.9  christos $LDAPMODRDN -D "$MANAGERDN" -H $URI1 -w $PASSWD > \
    281       1.1     lukem 	$TESTOUT 2>&1 'cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example, dc=com' 'cn=James A JONES 1'
    282       1.1     lukem 
    283       1.1     lukem RC=$?
    284       1.1     lukem case $RC in
    285       1.1     lukem 0)
    286       1.1     lukem 	;;
    287       1.1     lukem *)
    288       1.1     lukem 	echo "ldapmodrdn failed ($RC)!"
    289       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    290       1.1     lukem 	exit $RC
    291       1.1     lukem 	;;
    292       1.1     lukem esac
    293       1.1     lukem 
    294       1.1     lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
    295       1.1     lukem 
    296       1.1     lukem echo ">>>>> Test succeeded"
    297       1.1     lukem 
    298       1.1     lukem test $KILLSERVERS != no && wait
    299       1.1     lukem 
    300       1.1     lukem exit 0
    301