test081-totp 3.24 KB
Newer Older
Ondřej Kuzník's avatar
Ondřej Kuzník committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/bin/sh
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 2016-2021 Ondřej Kuzník, Symas Corp.
## Copyright 2021 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted only as authorized by the OpenLDAP
## Public License.
##
## A copy of this license is available in the file LICENSE in the
## top-level directory of the distribution or, alternatively, at
## <http://www.OpenLDAP.org/license.html>.

echo "running defines.sh"
. $SRCDIR/scripts/defines.sh

if test $OTP = otpno; then
    echo "OTP overlay not available, test skipped"
    exit 0
fi

for python in python3 python2 python2.7 python27 python ""; do
    if test x"$python" = x; then
        echo "Useable Python environment not found, skipping test"
        exit 0
    fi

    "$python" "$0".py --check >>$TESTOUT 2>&1
    RC=$?
    case $RC in
    0)
        break;;
    1)
        echo "$python is missing some required modules, skipping"
        python=""
        continue;;
    127)
        ;;
    esac
done

export URI1 MANAGERDN PASSWD BABSDN BJORNSDN

47
OTP_DATA=$DATADIR/otp/totp.ldif
Ondřej Kuzník's avatar
Ondřej Kuzník committed
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95

mkdir -p $TESTDIR $DBDIR1

echo "Running slapadd to build slapd database..."
. $CONFFILTER $BACKEND < $CONF > $ADDCONF
$SLAPADD -f $ADDCONF -l $LDIFORDERED
RC=$?
if test $RC != 0 ; then
    echo "slapadd failed ($RC)!"
    exit $RC
fi

mkdir $TESTDIR/confdir
. $CONFFILTER $BACKEND < $CONF > $CONF1

$SLAPPASSWD -g -n >$CONFIGPWF
echo "database config" >>$CONF1
echo "rootpw `$SLAPPASSWD -T $CONFIGPWF`" >>$CONF1

echo "Starting slapd on TCP/IP port $PORT1..."
$SLAPD -f $CONF1 -F $TESTDIR/confdir -h $URI1 -d $LVL > $LOG1 2>&1 &
PID=$!
if test $WAIT != 0 ; then
    echo PID $PID
    read foo
fi
KILLPIDS="$PID"

sleep $SLEEP0

for i in 0 1 2 3 4 5; do
    $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
        'objectclass=*' > /dev/null 2>&1
    RC=$?
    if test $RC = 0 ; then
        break
    fi
    echo "Waiting ${SLEEP1} seconds for slapd to start..."
    sleep ${SLEEP1}
done

if [ "$OTP" = otpmod ]; then
$LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF \
    >> $TESTOUT 2>&1 <<EOMOD
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: $TESTWD/../servers/slapd/overlays
96
olcModuleLoad: otp.la
Ondřej Kuzník's avatar
Ondřej Kuzník committed
97
98
99
100
101
102
103
104
105
EOMOD
RC=$?
if test $RC != 0 ; then
    echo "ldapmodify failed ($RC)!"
    test $KILLSERVERS != no && kill -HUP $KILLPIDS
    exit $RC
fi
fi

106
echo "Loading test otp configuration..."
Ondřej Kuzník's avatar
Ondřej Kuzník committed
107
108
$LDAPMODIFY -v -D cn=config -H $URI1 -y $CONFIGPWF \
    >> $TESTOUT 2>&1 <<EOMOD
109
dn: olcOverlay={0}otp,olcDatabase={1}$BACKEND,cn=config
Ondřej Kuzník's avatar
Ondřej Kuzník committed
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
changetype: add
objectClass: olcOverlayConfig
EOMOD
RC=$?
if test $RC != 0 ; then
    echo "ldapmodify failed ($RC)!"
    test $KILLSERVERS != no && kill -HUP $KILLPIDS
    exit $RC
fi

echo "Provisioning tokens and configuration..."
$LDAPMODIFY -D "$MANAGERDN" -H $URI1 -w $PASSWD \
    >> $TESTOUT 2>&1 < $OTP_DATA
RC=$?
if test $RC != 0 ; then
    echo "ldapmodify failed ($RC)!"
    test $KILLSERVERS != no && kill -HUP $KILLPIDS
    exit $RC
fi

"$python" "$0".py
RC=$?

test $KILLSERVERS != no && kill -HUP $KILLPIDS

if test $RC != 0 ; then
    echo "Test failed ($RC)!"
else
    echo ">>>>> Test succeeded"
fi

test $KILLSERVERS != no && wait

exit $RC