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 $HOMEDIR = homedirno; then
     20 	echo "Homedir overlay not available, test skipped"
     21 	exit 0
     22 fi
     23 
     24 mkdir -p $TESTDIR $DBDIR1 $TESTDIR/home $TESTDIR/archive
     25 
     26 # copy skel dir so we can create symlinks in it
     27 cp -r $DATADIR/homedir/skel $TESTDIR
     28 (cd $TESTDIR/skel; mkdir directory; ln -s directory symlink; cd directory; ln -s ../target "broken link")
     29 
     30 $SLAPPASSWD -g -n >$CONFIGPWF
     31 echo "rootpw `$SLAPPASSWD -T $CONFIGPWF`" >$TESTDIR/configpw.conf
     32 
     33 echo "Running slapadd to build slapd database..."
     34 . $CONFFILTER $BACKEND < $HOMEDIRCONF | sed "s/@MINUID@/`id -u`/" > $CONF1
     35 $SLAPADD -f $CONF1 -l $LDIF
     36 RC=$?
     37 if test $RC != 0 ; then
     38 	echo "slapadd failed ($RC)!"
     39 	exit $RC
     40 fi
     41 
     42 echo "Starting slapd on TCP/IP port $PORT1..."
     43 $SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
     44 PID=$!
     45 if test $WAIT != 0 ; then
     46     echo PID $PID
     47     read foo
     48 fi
     49 KILLPIDS="$PID"
     50 
     51 sleep 1
     52 
     53 echo "Using ldapsearch to check that slapd is running..."
     54 for i in 0 1 2 3 4 5; do
     55 	$LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
     56 		'objectclass=*' > /dev/null 2>&1
     57 	RC=$?
     58 	if test $RC = 0 ; then
     59 		break
     60 	fi
     61 	echo "Waiting 5 seconds for slapd to start..."
     62 	sleep 5
     63 done
     64 if test $RC != 0 ; then
     65 	echo "ldapsearch failed ($RC)!"
     66 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     67 	exit $RC
     68 fi
     69 
     70 echo "Adding a new user..."
     71 $LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD <<EOMOD >> $TESTOUT 2>&1
     72 dn: uid=user1,ou=People,$BASEDN
     73 objectClass: account
     74 objectClass: posixAccount
     75 uid: user1
     76 cn: One user
     77 uidNumber: `id -u`
     78 gidNumber: `id -g`
     79 homeDirectory: /home/user1
     80 EOMOD
     81 RC=$?
     82 if test $RC != 0 ; then
     83 	echo "ldapadd failed ($RC)!"
     84 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     85 	exit $RC
     86 fi
     87 
     88 sleep 1
     89 
     90 if ! test -e $TESTDIR/home/user1 ; then
     91 	echo "Home directory for user1 not created!"
     92 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     93 	exit 1
     94 fi
     95 
     96 echo "Moving home directory for user1..."
     97 $LDAPMODIFY -D "$MANAGERDN" -H $URI1 -w $PASSWD <<EOMOD >> $TESTOUT 2>&1
     98 dn: uid=user1,ou=People,$BASEDN
     99 changetype: modify
    100 replace: homeDirectory
    101 homeDirectory: /home/user1_new
    102 EOMOD
    103 RC=$?
    104 if test $RC != 0 ; then
    105 	echo "ldapadd failed ($RC)!"
    106 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    107 	exit $RC
    108 fi
    109 
    110 sleep 1
    111 
    112 if test -e $TESTDIR/home/user1 || ! test -e $TESTDIR/home/user1_new ; then
    113 	echo "Home directory for user1 not moved!"
    114 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    115 	exit 1
    116 fi
    117 
    118 echo "Removing user1, should get archived..."
    119 $LDAPDELETE -D "$MANAGERDN" -H $URI1 -w $PASSWD \
    120     "uid=user1,ou=People,$BASEDN" >> $TESTOUT
    121 RC=$?
    122 if test $RC != 0 ; then
    123 	echo "ldapdelete failed ($RC)!"
    124 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    125 	exit $RC
    126 fi
    127 
    128 sleep 1
    129 
    130 if test -e $TESTDIR/home/user1_new || \
    131 		! test -e $TESTDIR/archive/user1_new-*-0.tar ; then
    132 	echo "Home directory for user1 not archived properly!"
    133 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    134 	exit 1
    135 fi
    136 
    137 test $KILLSERVERS != no && kill -HUP $KILLPIDS
    138 
    139 test $KILLSERVERS != no && wait
    140 
    141 echo ">>>>> Test succeeded"
    142 
    143 exit 0
    144