Home | History | Annotate | Line # | Download | only in scripts
      1 #! /bin/sh
      2 # $OpenLDAP$
      3 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
      4 ##
      5 ## Copyright 1998-2024 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
     20 
     21 echo "Running slapadd to build slapd database..."
     22 . $CONFFILTER $BACKEND < $MCONF > $ADDCONF
     23 $SLAPADD -f $ADDCONF -l $LDIFORDERED
     24 RC=$?
     25 if test $RC != 0 ; then
     26 	echo "slapadd failed ($RC)!"
     27 	exit $RC
     28 fi
     29 
     30 echo "Running slapindex to index slapd database..."
     31 . $CONFFILTER $BACKEND < $CONF > $CONF1
     32 $SLAPINDEX -f $CONF1
     33 RC=$?
     34 if test $RC != 0 ; then
     35 	echo "warning: slapindex failed ($RC)"
     36 	echo "  assuming no indexing support"
     37 fi
     38 
     39 echo "Starting slapd on TCP/IP port $PORT1..."
     40 $SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
     41 PID=$!
     42 if test $WAIT != 0 ; then
     43     echo PID $PID
     44     read foo
     45 fi
     46 KILLPIDS="$PID"
     47 
     48 sleep 1
     49 
     50 echo "Testing slapd searching..."
     51 for i in 0 1 2 3 4 5; do
     52 	$LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
     53 		'objectclass=*' > /dev/null 2>&1
     54 	RC=$?
     55 	if test $RC = 0 ; then
     56 		break
     57 	fi
     58 	echo "Waiting 5 seconds for slapd to start..."
     59 	sleep 5
     60 done
     61 
     62 if test $RC != 0 ; then
     63 	echo "ldapsearch failed ($RC)!"
     64 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     65 	exit $RC
     66 fi
     67 
     68 cat /dev/null > $SEARCHOUT
     69 
     70 echo "Testing exact searching..."
     71 echo "# Testing exact searching..." >> $SEARCHOUT
     72 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
     73 	'(sn:=jensen)' >> $SEARCHOUT 2>&1
     74 RC=$?
     75 if test $RC != 0 ; then
     76 	echo "ldapsearch failed ($RC)!"
     77 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     78 	exit $RC
     79 fi
     80 
     81 echo "Testing approximate searching..."
     82 echo "# Testing approximate searching..." >> $SEARCHOUT
     83 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
     84 	'(sn~=jensen)' name >> $SEARCHOUT 2>&1
     85 RC=$?
     86 if test $RC != 0 ; then
     87 	echo "ldapsearch failed ($RC)!"
     88 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     89 	exit $RC
     90 fi
     91 
     92 echo "Testing OR searching..."
     93 echo "# Testing OR searching..." >> $SEARCHOUT
     94 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
     95 	'(|(givenName=XX*YY*Z)(cn=)(undef=*)(objectclass=groupofnames)(objectclass=groupofuniquenames)(sn:caseExactMatch:=Jones))' >> $SEARCHOUT 2>&1
     96 RC=$?
     97 if test $RC != 0 ; then
     98 	echo "ldapsearch failed ($RC)!"
     99 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    100 	exit $RC
    101 fi
    102 
    103 echo "Testing AND matching and ends-with searching..."
    104 echo "# Testing AND matching and ends-with searching..." >> $SEARCHOUT
    105 $LDAPSEARCH -S "" -b "ou=groups,$BASEDN" -s one -H $URI1 \
    106 	'(&(|(objectclass=groupofnames)(objectclass=groupofuniquenames))(cn=A*))' >> $SEARCHOUT 2>&1
    107 RC=$?
    108 if test $RC != 0 ; then
    109 	echo "ldapsearch failed ($RC)!"
    110 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    111 	exit $RC
    112 fi
    113 
    114 echo "Testing NOT searching..."
    115 echo "# Testing NOT searching..." >> $SEARCHOUT
    116 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    117 	'(!(objectclass=pilotPerson))' >> $SEARCHOUT 2>&1
    118 RC=$?
    119 if test $RC != 0 ; then
    120 	echo "ldapsearch failed ($RC)!"
    121 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    122 	exit $RC
    123 fi
    124 
    125 echo "Testing objectClass/attributeType inheritance ..."
    126 echo "# Testing objectClass/attributeType inheritance ..." >> $SEARCHOUT
    127 $LDAPSEARCH -M -a never -S "" -b "$BASEDN" -H $URI1 \
    128 	'(&(objectClass=inetorgperson)(userid=uham))' \
    129 	"2.5.4.0" "userid" >> $SEARCHOUT 2>&1
    130 RC=$?
    131 if test $RC != 0 ; then
    132 	echo "ldapsearch failed ($RC)!"
    133 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    134 	exit $RC
    135 fi
    136 
    137 echo "Testing extended RFC2254 searching:"
    138 echo "# Testing extended RFC2254 searching:" >> $SEARCHOUT
    139 
    140 FILTER="(:dn:caseIgnoreIA5Match:=example)"
    141 echo "        f=$FILTER ..."
    142 echo "#         f=$FILTER ..." >> $SEARCHOUT
    143 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    144 	"$FILTER" >> $SEARCHOUT 2>&1
    145 
    146 RC=$?
    147 if test $RC != 0 ; then
    148 	echo "ldapsearch failed ($RC)!"
    149 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    150 	exit $RC
    151 fi
    152 
    153 FILTER="(:dn:caseExactMatch:=Information Technology Division)"
    154 echo "        f=$FILTER ..."
    155 echo "#         f=$FILTER ..." >> $SEARCHOUT
    156 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    157 	"$FILTER" >> $SEARCHOUT 2>&1
    158 
    159 # ITS#4380: don't crash when a matchingRule without pretty/validate is used
    160 FILTER="(:dn:caseIgnoreSubstringsMatch:=Information Technology Division)"
    161 echo "        f=$FILTER ..."
    162 echo "#         f=$FILTER ..." >> $SEARCHOUT
    163 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    164 	"$FILTER" >> $SEARCHOUT 2>&1
    165 
    166 RC=$?
    167 if test $RC != 0 ; then
    168 	echo "ldapsearch failed ($RC)!"
    169 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    170 	exit $RC
    171 fi
    172 
    173 FILTER="(name:dn:=whatever)"
    174 echo "        f=$FILTER ..."
    175 echo "#         f=$FILTER ..." >> $SEARCHOUT
    176 $LDAPSEARCH -S "" -b "" -s base -H $URI1 \
    177 	"$FILTER" >> $SEARCHOUT 2>&1
    178 
    179 RC=$?
    180 if test $RC != 0 ; then
    181 	echo "ldapsearch failed ($RC)!"
    182 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    183 	exit $RC
    184 fi
    185 
    186 echo "Testing values return filter searching:"
    187 echo "# Testing values return filter searching:" >> $SEARCHOUT
    188 
    189 FILTER="(o=Example, Inc.)"
    190 echo "        f=$FILTER ..."
    191 echo "#         f=$FILTER ..." >> $SEARCHOUT
    192 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    193 	-E '!mv='"$FILTER" "$FILTER" >> $SEARCHOUT 2>&1
    194 RC=$?
    195 if test $RC != 0 ; then
    196 	echo "ldapsearch failed ($RC)!"
    197 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    198 	exit $RC
    199 fi
    200 
    201 FILTER="(dc=example)"
    202 VRFILTER="((o:caseExactMatch:=Example, Inc.)(dc=example))"
    203 echo "        f=$FILTER mv=$VRFILTER ..."
    204 echo "#         f=$FILTER mv=$VRFILTER ..." >> $SEARCHOUT
    205 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    206 	-E '!mv='"$VRFILTER" "$FILTER" >> $SEARCHOUT 2>&1
    207 RC=$?
    208 if test $RC != 0 ; then
    209 	echo "ldapsearch failed ($RC)!"
    210 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    211 	exit $RC
    212 fi
    213 
    214 FILTER="(dc=example)"
    215 VRFILTER="((o={*)(dc=*))"
    216 echo "        f=$FILTER mv=$VRFILTER ..."
    217 echo "#         f=$FILTER mv=$VRFILTER ..." >> $SEARCHOUT
    218 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    219 	-E '!mv='"$VRFILTER" "$FILTER" >> $SEARCHOUT 2>&1
    220 RC=$?
    221 if test $RC != 0 ; then
    222 	echo "ldapsearch failed ($RC)!"
    223 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    224 	exit $RC
    225 fi
    226 
    227 FILTER="(attributeTypes=0.9.2342.19200300.100.1.25)"
    228 echo "        f=$FILTER ..."
    229 echo "#         f=$FILTER ..." >> $SEARCHOUT
    230 $LDAPSEARCH -S "" -b "cn=Subschema" -s "base" -H $URI1 \
    231 	-E '!mv='"$FILTER" "$FILTER" "attributeTypes" >> $SEARCHOUT 2>&1
    232 RC=$?
    233 if test $RC != 0 ; then
    234 	echo "ldapsearch failed ($RC)!"
    235 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    236 	exit $RC
    237 fi
    238 
    239 echo "Testing list substring searching..."
    240 echo "# Testing list substring searching..." >> $SEARCHOUT
    241 $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    242 	'(postalAddress=*Anytown*)' postalAddress >> $SEARCHOUT 2>&1
    243 RC=$?
    244 if test $RC != 0 ; then
    245 	echo "ldapsearch failed ($RC)!"
    246 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    247 	exit $RC
    248 fi
    249 
    250 test $KILLSERVERS != no && kill -HUP $KILLPIDS
    251 
    252 LDIF=$SEARCHOUTPROVIDER
    253 LDIF2=$SEARCHOUTX
    254 
    255 echo "Filtering ldapsearch results..."
    256 $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
    257 echo "Filtering original ldif used to create database..."
    258 $LDIFFILTER < $LDIF > $LDIFFLT
    259 $LDIFFILTER < $LDIF2 >> $LDIFFLT
    260 echo "Comparing filter output..."
    261 $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
    262 
    263 if test $? != 0 ; then
    264 	echo "Comparison failed"
    265 	exit 1
    266 fi
    267 
    268 echo ">>>>> Test succeeded"
    269 
    270 test $KILLSERVERS != no && wait
    271 
    272 exit 0
    273