mirror of
https://github.com/dcarrillo/docker-nginx.git
synced 2025-07-04 16:59:27 +00:00
First commit
This commit is contained in:
78
tests/test.sh
Executable file
78
tests/test.sh
Executable file
@ -0,0 +1,78 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
trap _catch_err ERR
|
||||
trap _cleanup EXIT
|
||||
|
||||
LOCAL_DIR=$(dirname "$0")
|
||||
|
||||
LOCAL_DIR="$( cd "$(dirname "$0")" ; pwd -P )"
|
||||
. "$LOCAL_DIR"/../conf.env
|
||||
|
||||
TMP_DIR=$(mktemp -d)
|
||||
|
||||
_catch_err()
|
||||
{
|
||||
echo "Test FAILED"
|
||||
}
|
||||
|
||||
_cleanup()
|
||||
{
|
||||
echo "Cleaning up..."
|
||||
docker rm -f "${NGINX_VERSION}"_test > /dev/null 2>&1
|
||||
rm -rf "$TMP_DIR"
|
||||
}
|
||||
|
||||
_setup_crypto_stuff()
|
||||
{
|
||||
openssl dhparam -out "$TMP_DIR"/dhparams.pem 512
|
||||
|
||||
openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \
|
||||
-subj "/C=ES/ST=Madrid/L=Madrid/O=dcarrillo/CN=localhost" \
|
||||
-keyout "$TMP_DIR"/cert.key -out "$TMP_DIR"/cert.pem
|
||||
}
|
||||
|
||||
_check_status_code()
|
||||
{
|
||||
if [ "$1" != 200 ]; then
|
||||
printf "Test failed, status code %s is not 200\n" "$STATUS_CODE"
|
||||
exit 1
|
||||
else
|
||||
echo "Test succeeded"
|
||||
fi
|
||||
}
|
||||
|
||||
_check_if_is_ip()
|
||||
{
|
||||
if echo "$1" | grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" > /dev/null; then
|
||||
echo "Test succeeded"
|
||||
else
|
||||
printf "Test failed, response %s is not an IP" "$RESPONSE"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
_setup_crypto_stuff
|
||||
|
||||
docker run --name "${NGINX_VERSION}"_test --rm -p 65521:80 -p 65523:443 \
|
||||
-v "$LOCAL_DIR"/nginx.conf:/usr/local/nginx/conf/nginx.conf:ro \
|
||||
-v "$LOCAL_DIR"/GeoLite2-Country.mmdb:/tmp/GeoLite2-Country.mmdb:ro \
|
||||
-v "$TMP_DIR"/cert.pem:/tmp/cert.pem:ro \
|
||||
-v "$TMP_DIR"/cert.key:/tmp/cert.key:ro \
|
||||
-v "$TMP_DIR"/dhparams.pem:/tmp/dhparams.pem:ro \
|
||||
-d "${DOCKER_IMAGE}":"${NGINX_VERSION}"
|
||||
|
||||
printf "\nTesting http request: %s:%s\n" "${DOCKER_IMAGE}" "${NGINX_VERSION}"
|
||||
STATUS_CODE=$(curl -s -m 5 -o /dev/null -w "%{http_code}" http://localhost:65521/nginx_status)
|
||||
_check_status_code "$STATUS_CODE"
|
||||
|
||||
printf "\nTesting https request: %s:%s\n" "${DOCKER_IMAGE}" "${NGINX_VERSION}"
|
||||
STATUS_CODE=$(curl -s -m 5 -o /dev/null -w "%{http_code}" --http2 -k https://localhost:65523/)
|
||||
_check_status_code "$STATUS_CODE"
|
||||
|
||||
printf "\nTesting http geoip request: %s:%s\n" "${DOCKER_IMAGE}" "${NGINX_VERSION}"
|
||||
RESPONSE=$(curl -s -m 5 http://localhost:65521/geoip)
|
||||
_check_if_is_ip "$RESPONSE"
|
||||
|
||||
echo "All tests succeeded !"
|
Reference in New Issue
Block a user