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 2021-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 if test $ARGON2 = argon2no; then
     20 	echo "argon2 overlay not available, test skipped"
     21 	exit 0
     22 fi
     23 
     24 USERDN="cn=argon2,$BASEDN"
     25 
     26 CONFDIR=$TESTDIR/slapd.d
     27 mkdir -p $TESTDIR $CONFDIR $DBDIR1
     28 
     29 $SLAPPASSWD -g -n >$CONFIGPWF
     30 
     31 cat > $TESTDIR/config.ldif <<EOF
     32 dn: cn=config
     33 objectClass: olcGlobal
     34 cn: config
     35 olcArgsFile: $TESTDIR/slapd.args
     36 olcPidFile: $TESTDIR/slapd.pid
     37 
     38 dn: cn=schema,cn=config
     39 objectClass: olcSchemaConfig
     40 cn: schema
     41 
     42 include: file://$TESTWD/schema/core.ldif
     43 include: file://$TESTWD/schema/cosine.ldif
     44 include: file://$TESTWD/schema/inetorgperson.ldif
     45 EOF
     46 
     47 if [ "$BACKENDTYPE" = mod ]; then
     48 	cat >> $TESTDIR/config.ldif <<EOF
     49 
     50 dn: cn=module,cn=config
     51 objectClass: olcModuleList
     52 cn: module
     53 olcModulePath: $TESTWD/../servers/slapd/back-$BACKEND
     54 olcModuleLoad: back_$BACKEND.la
     55 EOF
     56 fi
     57 
     58 if [ "$ARGON2" = argon2yes ]; then
     59 	cat >> $TESTDIR/config.ldif <<EOF
     60 
     61 dn: cn=module,cn=config
     62 objectClass: olcModuleList
     63 cn: module
     64 olcModulePath: $TESTWD/../servers/slapd/pwmods
     65 olcModuleLoad: argon2.la
     66 EOF
     67 fi
     68 
     69 cat >> $TESTDIR/config.ldif <<EOF
     70 
     71 dn: olcDatabase={-1}frontend,cn=config
     72 objectClass: olcDatabaseConfig
     73 objectClass: olcFrontendConfig
     74 olcDatabase: {-1}frontend
     75 olcPasswordHash: {ARGON2}
     76 
     77 dn: olcDatabase=config,cn=config
     78 objectClass: olcDatabaseConfig
     79 olcDatabase: config
     80 olcRootPW:< file://$CONFIGPWF
     81 
     82 dn: olcDatabase={1}$BACKEND,cn=config
     83 objectClass: olcDatabaseConfig
     84 objectClass: olc${BACKEND}Config
     85 olcDatabase: $BACKEND
     86 olcSuffix: $BASEDN
     87 olcRootDN: $MANAGERDN
     88 olcRootPW: $PASSWD
     89 olcDbDirectory: $TESTDIR/db.1.a
     90 EOF
     91 
     92 if [ "$INDEXDB" = indexdb ]; then
     93 	cat >> $TESTDIR/config.ldif <<EOF
     94 olcDbIndex: objectClass eq,pres
     95 olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
     96 EOF
     97 fi
     98 
     99 $SLAPADD -F $CONFDIR -n 0 -l $TESTDIR/config.ldif
    100 RC=$?
    101 if test $RC != 0 ; then
    102 	echo "slapadd failed ($RC)!"
    103 	exit $RC
    104 fi
    105 
    106 echo "Starting slapd on TCP/IP port $PORT1..."
    107 $SLAPD -F $CONFDIR -h $URI1 -d $LVL > $LOG1 2>&1 &
    108 PID=$!
    109 if test $WAIT != 0 ; then
    110 	echo PID $PID
    111 	read foo
    112 fi
    113 KILLPIDS="$PID"
    114 sleep 1
    115 
    116 echo "Using ldapsearch to check that slapd is running..."
    117 for i in 0 1 2 3 4 5; do
    118 	$LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
    119 		'objectclass=*' > /dev/null 2>&1
    120 	RC=$?
    121 	if test $RC = 0 ; then
    122 		break
    123 	fi
    124 	echo "Waiting 5 seconds for slapd to start..."
    125 	sleep 5
    126 done
    127 if test $RC != 0 ; then
    128 	echo "ldapsearch failed ($RC)!"
    129 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    130 	exit $RC
    131 fi
    132 
    133 echo "Adding basic structure..."
    134 $LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD -f $LDIFPASSWD >/dev/null 2>&1
    135 RC=$?
    136 if test $RC != 0 ; then
    137 	echo "ldapadd failed ($RC)!"
    138 	test $KILLSERVERS != no && kill -HUP $PID
    139 	exit $RC
    140 fi
    141 
    142 BINDPW=secret
    143 echo "Testing ldapwhoami as ${USERDN}..."
    144 $LDAPWHOAMI -H $URI1 -D "$USERDN" -w $BINDPW
    145 
    146 RC=$?
    147 if test $RC != 0 ; then
    148     echo "ldapwhoami failed ($RC)!"
    149     test $KILLSERVERS != no && kill -HUP $KILLPIDS
    150     exit $RC
    151 fi
    152 
    153 test $KILLSERVERS != no && kill -HUP $PID
    154 
    155 echo ">>>>> Test succeeded"
    156 
    157 test $KILLSERVERS != no && wait
    158 
    159 exit 0
    160