Added dockerfile for tests.

It is now possible to run testsuite in docker, using supplied file.
See instructions in t/README.

Tests are adjusted to run on alpine linux which includes modular builds
of openldap server software.
This commit is contained in:
Vladimir Homutov 2019-09-26 19:04:32 +03:00
parent 6fad4f3715
commit 7c164a4887
4 changed files with 71 additions and 0 deletions

49
Dockerfile.test Normal file
View File

@ -0,0 +1,49 @@
FROM python:2-alpine
WORKDIR /usr/src/app/
COPY nginx-ldap-auth-daemon.py /usr/src/app/
WORKDIR /tests
COPY t/ldap-auth.t /tests
COPY t/runtests.sh /tests
# Install required software
RUN \
apk --no-cache add openldap-dev && \
apk --no-cache add openldap && \
apk --no-cache add openldap-back-hdb && \
apk --no-cache add openldap-clients && \
apk --no-cache add openssl && \
apk --no-cache add nginx && \
apk --no-cache add nginx-mod-http-geoip && \
apk --no-cache add nginx-mod-stream-geoip && \
apk --no-cache add nginx-mod-http-image-filter && \
apk --no-cache add nginx-mod-stream && \
apk --no-cache add nginx-mod-mail && \
apk --no-cache add nginx-mod-http-perl && \
apk --no-cache add nginx-mod-http-xslt-filter && \
apk --no-cache add mercurial && \
apk --no-cache add perl && \
apk --no-cache add --virtual build-dependencies build-base && \
pip install python-ldap && \
pip install coverage && \
apk del build-dependencies
# Install tests
RUN \
cd /tests && \
hg clone https://hg.nginx.org/nginx-tests && \
mv ldap-auth.t nginx-tests
WORKDIR /usr/src/app/
ENV TEST_LDAP_DAEMON=/usr/sbin/slapd
ENV TEST_LDAP_AUTH_DAEMON=/usr/src/app/nginx-ldap-auth-daemon.py
ENV TEST_NGINX_BINARY=/usr/sbin/nginx
ENV TEST_NGINX_MODULES=/usr/lib/nginx/modules
ENV LDAPTLS_REQCERT=never
WORKDIR /tests/nginx-tests
CMD ["/tests/runtests.sh"]

View File

@ -1,3 +1,10 @@
To run tests use supplied Dockerfile.test:
docker build -f Dockerfile.test -t my-tag .
docker run my-tag
To run without Docker:
Test suite is available at http://hg.nginx.org/nginx-tests.
Check the http://hg.nginx.org/nginx-tests/file/tip/README file
for instructions on how to use it.

View File

@ -264,6 +264,7 @@ access to *
by users read
by anonymous read
moduleload back_hdb
database hdb
suffix "dc=test,dc=local"
rootdn "cn=root,dc=test,dc=local"
@ -298,6 +299,7 @@ access to *
by users read
by anonymous read
moduleload back_hdb
database hdb
suffix "ou=Users, dc=test,dc=local"
rootdn "cn=root, ou=Users, dc=test,dc=local"

13
t/runtests.sh Executable file
View File

@ -0,0 +1,13 @@
#!/bin/sh
# shell script to start testsuite and run coverage
# to be executed as Dockerfile CMD
export TEST_NGINX_LEAVE=1
rm -rf /tmp/nginx-test-*
perl ldap-auth.t
testdir=$(find /tmp -name 'nginx-test-*' -print -quit)
cd $testdir
coverage2 html && printf "Coverage report: docker cp <cid>:$testdir/htmlcov <hostdir>\n"