Skip to content

Commit

Permalink
Added dockerfile for tests.
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
vlhomutov committed Sep 26, 2019
1 parent 6fad4f3 commit 7c164a4
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 0 deletions.
49 changes: 49 additions & 0 deletions Dockerfile.test
Original file line number Diff line number Diff line change
@@ -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"]
7 changes: 7 additions & 0 deletions t/README
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
2 changes: 2 additions & 0 deletions t/ldap-auth.t
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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"
Expand Down
13 changes: 13 additions & 0 deletions t/runtests.sh
Original file line number Diff line number Diff line change
@@ -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"

0 comments on commit 7c164a4

Please sign in to comment.