1
0
mirror of https://github.com/docker-mailserver/docker-mailserver.git synced 2025-08-08 23:06:49 +02:00

tests: refactor POP3, IMAP (actually SASLauthd + RIMAP) & relay (#3062)

* refactor `mail_pop3.bats`
* refactor `mail_with_imap.bats`
* refactor `mail_with_relays.bats`
* moved test that that did not belong into POP3 test
* slightly clean up `no_container.bats`

Co-authored-by: Brennan Kinney <5098581+polarathene@users.noreply.github.com>
This commit is contained in:
Georg Lauterbach
2023-02-06 23:59:01 +01:00
committed by GitHub
parent 4efbbbe571
commit 2caec2cdf6
6 changed files with 134 additions and 156 deletions

View File

@ -1,81 +1,84 @@
load "${REPOSITORY_ROOT}/test/test_helper/common"
load "${REPOSITORY_ROOT}/test/helper/common"
load "${REPOSITORY_ROOT}/test/helper/setup"
BATS_TEST_NAME_PREFIX='[Relay Host] '
CONTAINER_NAME='dms-test_relay'
function setup_file() {
# We use a temporary config directory since we'll be dynamically editing
# it with setup.sh.
tmp_confdir=$(mktemp -d /tmp/docker-mailserver-config-relay-hosts-XXXXX)
cp -a test/config/relay-hosts/* "${tmp_confdir}/"
_init_with_defaults
docker run -d --name mail_with_relays \
-v "${tmp_confdir}":/tmp/docker-mailserver \
-v "$(pwd)/test/test-files":/tmp/docker-mailserver-test:ro \
-e RELAY_HOST=default.relay.com \
-e RELAY_PORT=2525 \
-e RELAY_USER=smtp_user \
-e RELAY_PASSWORD=smtp_password \
-e PERMIT_DOCKER=host \
-h mail.my-domain.com -t "${NAME}"
mv "${TEST_TMP_CONFIG}/relay-hosts/"* "${TEST_TMP_CONFIG}/"
wait_for_finished_setup_in_container mail_with_relays
local CUSTOM_SETUP_ARGUMENTS=(
--env RELAY_HOST=default.relay.com
--env RELAY_PORT=2525
--env RELAY_USER=smtp_user
--env RELAY_PASSWORD=smtp_password
--env PERMIT_DOCKER=host
)
_common_container_setup 'CUSTOM_SETUP_ARGUMENTS'
}
function teardown_file() {
docker rm -f mail_with_relays
rm -rf "${tmp_confdir}"
function teardown_file() { _default_teardown ; }
@test 'default mapping is added from ENV variables' {
_run_in_container grep 'domainone.tld' /etc/postfix/relayhost_map
assert_success
assert_output --regexp '^@domainone.tld[[:space:]]+\[default.relay.com\]:2525$'
}
@test "checking relay hosts: default mapping is added from env vars" {
run docker exec mail_with_relays grep -e domainone.tld /etc/postfix/relayhost_map
assert_output -e '^@domainone.tld[[:space:]]+\[default.relay.com\]:2525$'
@test 'default mapping is added from ENV variables for virtual user entry' {
_run_in_container grep 'domain1.tld' /etc/postfix/relayhost_map
assert_success
assert_output --regexp '^@domain1.tld[[:space:]]+\[default.relay.com\]:2525$'
}
@test "checking relay hosts: default mapping is added from env vars for virtual user entry" {
run docker exec mail_with_relays grep -e domain1.tld /etc/postfix/relayhost_map
assert_output -e '^@domain1.tld[[:space:]]+\[default.relay.com\]:2525$'
@test 'default mapping is added from ENV variables for new user entry' {
_run_in_container grep 'domainzero.tld' /etc/postfix/relayhost_map
assert_failure
_add_mail_account_then_wait_until_ready 'user0@domainzero.tld' 'password123'
_run_until_success_or_timeout 20 _exec_in_container grep 'domainzero.tld' /etc/postfix/relayhost_map
assert_success
assert_output --regexp '^@domainzero.tld[[:space:]]+\[default.relay.com\]:2525$'
}
@test "checking relay hosts: default mapping is added from env vars for new user entry" {
run docker exec mail_with_relays grep -e domainzero.tld /etc/postfix/relayhost_map
assert_output ''
@test 'default mapping is added from ENV variables for new virtual user (alias) entry' {
_run_in_container grep 'domain2.tld' /etc/postfix/relayhost_map
assert_failure
run ./setup.sh -c mail_with_relays email add user0@domainzero.tld password123
run_until_success_or_timeout 10 docker exec mail_with_relays grep -e domainzero.tld /etc/postfix/relayhost_map
assert_output -e '^@domainzero.tld[[:space:]]+\[default.relay.com\]:2525$'
run ./setup.sh -c "${CONTAINER_NAME}" alias add 'user2@domain2.tld' 'user2@domaintwo.tld'
assert_success
_run_until_success_or_timeout 10 _exec_in_container grep 'domain2.tld' /etc/postfix/relayhost_map
assert_success
assert_output --regexp '^@domain2.tld[[:space:]]+\[default.relay.com\]:2525$'
}
@test "checking relay hosts: default mapping is added from env vars for new virtual user entry" {
run docker exec mail_with_relays grep -e domain2.tld /etc/postfix/relayhost_map
assert_output ''
run ./setup.sh -c mail_with_relays alias add user2@domain2.tld user2@domaintwo.tld
run_until_success_or_timeout 10 docker exec mail_with_relays grep -e domain2.tld /etc/postfix/relayhost_map
assert_output -e '^@domain2.tld[[:space:]]+\[default.relay.com\]:2525$'
@test 'custom mapping is added from file' {
_run_in_container grep 'domaintwo.tld' /etc/postfix/relayhost_map
assert_success
assert_output --regexp '^@domaintwo.tld[[:space:]]+\[other.relay.com\]:587$'
}
@test "checking relay hosts: custom mapping is added from file" {
run docker exec mail_with_relays grep -e domaintwo.tld /etc/postfix/relayhost_map
assert_output -e '^@domaintwo.tld[[:space:]]+\[other.relay.com\]:587$'
@test 'ignored domain is not added' {
_run_in_container grep domainthree.tld /etc/postfix/relayhost_map
assert_failure
}
@test "checking relay hosts: ignored domain is not added" {
run docker exec mail_with_relays grep -e domainthree.tld /etc/postfix/relayhost_map
assert_failure 1
assert_output ''
}
@test "checking relay hosts: sasl_passwd exists" {
run docker exec mail_with_relays [ -f /etc/postfix/sasl_passwd ]
@test '/etc/postfix/sasl_passwd exists' {
_run_in_container_bash '[[ -f /etc/postfix/sasl_passwd ]]'
assert_success
}
@test "checking relay hosts: auth entry is added" {
run docker exec mail_with_relays /bin/sh -c 'cat /etc/postfix/sasl_passwd | grep -e "^@domaintwo.tld\s\+smtp_user_2:smtp_password_2" | wc -l'
@test 'auth entry is added' {
_run_in_container grep '^@domaintwo.tld\s\+smtp_user_2:smtp_password_2' /etc/postfix/sasl_passwd
assert_success
assert_output 1
_should_output_number_of_lines 1
}
@test "checking relay hosts: default auth entry is added" {
run docker exec mail_with_relays /bin/sh -c 'cat /etc/postfix/sasl_passwd | grep -e "^\[default.relay.com\]:2525\s\+smtp_user:smtp_password" | wc -l'
@test 'default auth entry is added' {
_run_in_container grep '^\[default.relay.com\]:2525\s\+smtp_user:smtp_password' /etc/postfix/sasl_passwd
assert_success
assert_output 1
_should_output_number_of_lines 1
}