diff --git a/test/33-ftp.bats b/test/33-ftp.bats new file mode 100644 index 0000000..d6387df --- /dev/null +++ b/test/33-ftp.bats @@ -0,0 +1,37 @@ +#! /usr/bin/env bats + +load '/bats-support/load.bash' +load '/bats-assert/load.bash' +load '/getssl/test/test_helper.bash' + + +# This is run for every test +setup() { + export CURL_CA_BUNDLE=/root/pebble-ca-bundle.crt +} + + +@test "Use FTP to create challenge file" { + if [ -n "$STAGING" ]; then + skip "Using staging server, skipping internal test" + fi + + ${CODE_DIR}/test/restart-ftpd + if [[ ! -d /var/www/html/.well-known/acme-challenge ]]; then + mkdir -p /var/www/html/.well-known/acme-challenge + chgrp -R www-data /var/www/html/.well-known + chmod -R g+w /var/www/html/.well-known + fi + + CONFIG_FILE="getssl-http01.cfg" + setup_environment + init_getssl + + cat <<- EOF > ${INSTALL_DIR}/.getssl/${GETSSL_CMD_HOST}/getssl_test_specific.cfg +ACL="ftp:ftpuser:ftpuser:${GETSSL_CMD_HOST}:/var/www/html/.well-known/acme-challenge" +EOF + + create_certificate -d + assert_success + check_output_for_errors +} diff --git a/test/Dockerfile-ubuntu b/test/Dockerfile-ubuntu index 3849e55..4e80409 100644 --- a/test/Dockerfile-ubuntu +++ b/test/Dockerfile-ubuntu @@ -9,6 +9,16 @@ ENV DEBIAN_FRONTEND noninteractive RUN apt-get update --fix-missing RUN apt-get install -y git curl dnsutils ldnsutils wget nginx-light RUN apt-get install -y vim dos2unix # for debugging +RUN apt-get install -y ftp vsftpd +RUN apt-get install -y openssh-server + +RUN echo "write_enable=YES" >> /etc/vsftpd.conf +RUN adduser ftpuser +RUN echo 'ftpuser:ftpuser' | chpasswd +RUN adduser ftpuser www-data +RUN adduser root www-data +RUN chown -R www-data.www-data /var/www +RUN chmod g+w -R /var/www WORKDIR /root diff --git a/test/restart-ftpd b/test/restart-ftpd new file mode 100644 index 0000000..279c2ff --- /dev/null +++ b/test/restart-ftpd @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +if [ "$GETSSL_OS" = "alpine" ]; then + killall -HUP vsftpd >&3- + sleep 5 +elif [[ "$GETSSL_OS" == "centos"[78] ]]; then + pgrep vsftpd | head -1 | xargs kill -HUP + sleep 5 +else + service vsftpd restart >/dev/null >&3- +fi diff --git a/test/run-test.cmd b/test/run-test.cmd index d33c005..5908de7 100644 --- a/test/run-test.cmd +++ b/test/run-test.cmd @@ -45,7 +45,7 @@ set GETSSL_OS=alpine :Run for %%I in (.) do set CurrDirName=%%~nxI -docker build --rm -f "test\Dockerfile-%OS%" -t getssl-%OS% . +docker build --pull --rm -f "test\Dockerfile-%OS%" -t getssl-%OS% . @echo on docker run -it ^ --env GETSSL_HOST=%ALIAS% %STAGING% ^