test081-totp revision 1.1.1.1 1 #!/bin/sh
2 # $OpenLDAP$
3 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
4 ##
5 ## Copyright 2016-2021 Ondej Kuznk, Symas Corp.
6 ## Copyright 2021 The OpenLDAP Foundation.
7 ## All rights reserved.
8 ##
9 ## Redistribution and use in source and binary forms, with or without
10 ## modification, are permitted only as authorized by the OpenLDAP
11 ## Public License.
12 ##
13 ## A copy of this license is available in the file LICENSE in the
14 ## top-level directory of the distribution or, alternatively, at
15 ## <http://www.OpenLDAP.org/license.html>.
16
17 echo "running defines.sh"
18 . $SRCDIR/scripts/defines.sh
19
20 if test $OTP = otpno; then
21 echo "OTP overlay not available, test skipped"
22 exit 0
23 fi
24
25 for python in python3 python2 python2.7 python27 python ""; do
26 if test x"$python" = x; then
27 echo "Useable Python environment not found, skipping test"
28 exit 0
29 fi
30
31 "$python" "$0".py --check >>$TESTOUT 2>&1
32 RC=$?
33 case $RC in
34 0)
35 break;;
36 1)
37 echo "$python is missing some required modules, skipping"
38 python=""
39 continue;;
40 127)
41 ;;
42 esac
43 done
44
45 export URI1 MANAGERDN PASSWD BABSDN BJORNSDN
46
47 OTP_DATA=$DATADIR/otp/totp.ldif
48
49 mkdir -p $TESTDIR $DBDIR1
50
51 echo "Running slapadd to build slapd database..."
52 . $CONFFILTER $BACKEND < $CONF > $ADDCONF
53 $SLAPADD -f $ADDCONF -l $LDIFORDERED
54 RC=$?
55 if test $RC != 0 ; then
56 echo "slapadd failed ($RC)!"
57 exit $RC
58 fi
59
60 mkdir $TESTDIR/confdir
61 . $CONFFILTER $BACKEND < $CONF > $CONF1
62
63 $SLAPPASSWD -g -n >$CONFIGPWF
64 echo "database config" >>$CONF1
65 echo "rootpw `$SLAPPASSWD -T $CONFIGPWF`" >>$CONF1
66
67 echo "Starting slapd on TCP/IP port $PORT1..."
68 $SLAPD -f $CONF1 -F $TESTDIR/confdir -h $URI1 -d $LVL > $LOG1 2>&1 &
69 PID=$!
70 if test $WAIT != 0 ; then
71 echo PID $PID
72 read foo
73 fi
74 KILLPIDS="$PID"
75
76 sleep $SLEEP0
77
78 for i in 0 1 2 3 4 5; do
79 $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
80 'objectclass=*' > /dev/null 2>&1
81 RC=$?
82 if test $RC = 0 ; then
83 break
84 fi
85 echo "Waiting ${SLEEP1} seconds for slapd to start..."
86 sleep ${SLEEP1}
87 done
88
89 if [ "$OTP" = otpmod ]; then
90 $LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF \
91 >> $TESTOUT 2>&1 <<EOMOD
92 dn: cn=module,cn=config
93 objectClass: olcModuleList
94 cn: module
95 olcModulePath: $TESTWD/../servers/slapd/overlays
96 olcModuleLoad: otp.la
97 EOMOD
98 RC=$?
99 if test $RC != 0 ; then
100 echo "ldapmodify failed ($RC)!"
101 test $KILLSERVERS != no && kill -HUP $KILLPIDS
102 exit $RC
103 fi
104 fi
105
106 echo "Loading test otp configuration..."
107 $LDAPMODIFY -v -D cn=config -H $URI1 -y $CONFIGPWF \
108 >> $TESTOUT 2>&1 <<EOMOD
109 dn: olcOverlay={0}otp,olcDatabase={1}$BACKEND,cn=config
110 changetype: add
111 objectClass: olcOverlayConfig
112 EOMOD
113 RC=$?
114 if test $RC != 0 ; then
115 echo "ldapmodify failed ($RC)!"
116 test $KILLSERVERS != no && kill -HUP $KILLPIDS
117 exit $RC
118 fi
119
120 echo "Provisioning tokens and configuration..."
121 $LDAPMODIFY -D "$MANAGERDN" -H $URI1 -w $PASSWD \
122 >> $TESTOUT 2>&1 < $OTP_DATA
123 RC=$?
124 if test $RC != 0 ; then
125 echo "ldapmodify failed ($RC)!"
126 test $KILLSERVERS != no && kill -HUP $KILLPIDS
127 exit $RC
128 fi
129
130 "$python" "$0".py
131 RC=$?
132
133 test $KILLSERVERS != no && kill -HUP $KILLPIDS
134
135 if test $RC != 0 ; then
136 echo "Test failed ($RC)!"
137 else
138 echo ">>>>> Test succeeded"
139 fi
140
141 test $KILLSERVERS != no && wait
142
143 exit $RC
144