1
0
mirror of https://blitiri.com.ar/repos/chasquid synced 2025-12-17 14:37:02 +00:00
Files
go-chasquid-smtp/test/t-13-reload/run.sh
Alberto Bertogli 948cee1ce1 Improve bash quoting, and other similar best practices
This patch updates the shell scripts with some of the common best
practices, which should make them more resilient to unusual failures and
unexpected environments (in particular, directories with spaces).

Most of these were identified by shellcheck.
2022-11-13 11:09:19 +00:00

78 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
set -e
. "$(dirname "$0")/../util/lib.sh"
init
check_hostaliases
generate_certs_for testserver
#
# Automatic reload.
#
# Start with the user with the wrong password, and no aliases.
chasquid-util-user-add someone@testserver password111
rm -f config/domains/testserver/aliases
mkdir -p .logs
chasquid -v=2 --logfile=.logs/chasquid.log --config_dir=config \
--testing__reload_every=50ms &
wait_until_ready 1025
# First, check that delivery fails with the "wrong" password.
if run_msmtp someone@testserver < content 2>/dev/null; then
fail "success using the wrong password"
fi
# Change password, add an alias; then wait a bit more than the reload period
# and try again.
chasquid-util-user-add someone@testserver password222
echo "analias: someone" > config/domains/testserver/aliases
sleep 0.2
run_msmtp analias@testserver < content
wait_for_file .mail/someone@testserver
#
# Manual log rotation.
#
# Rotate logs.
mv .logs/chasquid.log .logs/chasquid.log-old
mv .logs/mail_log .logs/mail_log-old
# Send SIGHUP and give it a little for the server to handle it.
pkill -HUP -s 0 chasquid
sleep 0.2
# Send another mail.
rm .mail/someone@testserver
run_msmtp analias@testserver < content
wait_for_file .mail/someone@testserver
# Check there are new entries.
sleep 0.2
if ! grep -q "from=someone@testserver all done" .logs/mail_log; then
fail "new mail log did not have the expected entry"
fi
if ! grep -q -E "Queue.SendLoop .*: someone@testserver sent" .logs/chasquid.log;
then
fail "new chasquid log did not have the expected entry"
fi
# Test that we can make the server exit using the /exit endpoint.
# First, a GET should fail with status 405.
fexp http://localhost:1099/exit -status 405
# A POST should succeed, return an OK body, and the daemon should
# eventually exit.
CHASQUID_PID=$(pgrep -s 0 chasquid)
fexp http://localhost:1099/exit -method POST -bodyre "OK"
wait_until ! kill -s 0 "$CHASQUID_PID" 2> /dev/null
success