46 lines
No EOL
1.3 KiB
Bash
Executable file
46 lines
No EOL
1.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
# This script runs a quick integration test using MailHog as the SMTP server and
|
|
# socat to provide a TLS wrapper for TLS integratoin tests.
|
|
#
|
|
# https://github.com/mailhog/MailHog
|
|
#
|
|
# If you wish to run these tests, ensure mailhog and socat are in your path.
|
|
# You'll probably need OpenSSL too.
|
|
#
|
|
# Results must be verified manually, either with the UI or the MailHog API:
|
|
#
|
|
# curl http://127.0.0.1${MAILHOG_API_PORT}/api/v2/messages -s | \
|
|
# jq '.total, .items[].Content.Headers.Subject'
|
|
#
|
|
#
|
|
|
|
# Define the ports the services listen on
|
|
SMTP_PORT=${SMTP_PORT:="7025"}
|
|
TLS_PORT=${TLS_PORT:="7026"}
|
|
|
|
# PID files for cleanup
|
|
MAILHOG_PID="$(pwd)/mailhog.pid"
|
|
SOCAT_PID="$(pwd)/socat.pid"
|
|
|
|
INT_DIR=$(dirname "$(realpath -s "$0")")
|
|
|
|
# kill -9 a process with a pidfile at the first argument.
|
|
function stop_pidfile() {
|
|
pid_file=$1
|
|
if [ -f "${pid_file}" ]; then
|
|
kill -9 "$(cat "${pid_file}")" || true
|
|
rm "${pid_file}"
|
|
fi
|
|
}
|
|
|
|
function cleanup() {
|
|
stop_pidfile "${MAILHOG_PID}";
|
|
stop_pidfile "${SOCAT_PID}";
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
mailhog -smtp-bind-addr=127.0.0.1:${SMTP_PORT} & echo "$!" > "${MAILHOG_PID}"
|
|
socat -v openssl-listen:${TLS_PORT},cert="${INT_DIR}/cert.pem",verify=0,reuseaddr,fork tcp4:127.0.0.1:${SMTP_PORT} & echo "$!" > "${SOCAT_PID}"
|
|
|
|
wait "$(cat "${MAILHOG_PID}")" |