mirror of
https://github.com/docker-mailserver/docker-mailserver
synced 2024-12-18 14:04:17 +01:00
ed1e1ebbd3
* move log/filter functions into own file * add ShellCheck global directives * use new function for tracking logs The new function, called `_send_email_with_mid`, aligns with suggestions from @polarethene and is heavily simplified compared to its predecessor `_send_email_and_get_id`. New helpers will be introduced to filter logs according to the MID constructed in this function. * new filters for searching logs with MID * use new filters (and sending) functions * add new helper for asserting non-existence of log message * use new filters in tests * Apply suggestions from code review - `_mid` / `MID` => `_msgid` / `MSG_ID` - Revised documentation / tooltip comments * Apply suggestions from code review * fix tests * use more distinct names for MSG_ID headers * update `_filter_service_log` to not use `-i -E` Moreover, I added a function to print the whole mail log. Appropriate comments were added to this function to indicate that one should only use this function when necessary. * adjust helpers to new helper filter * follow-up of previous commit * add CHANGELOG entry * Apply suggestions from code review * chore: Update OAuth2 to use new log helper * Apply suggestions from code review Co-authored-by: Brennan Kinney <5098581+polarathene@users.noreply.github.com> * added explicit `_regexp` filters for logs * Apply suggestions from code review --------- Co-authored-by: Brennan Kinney <5098581+polarathene@users.noreply.github.com>
68 lines
3.0 KiB
Bash
68 lines
3.0 KiB
Bash
load "${REPOSITORY_ROOT}/test/helper/common"
|
|
load "${REPOSITORY_ROOT}/test/helper/setup"
|
|
|
|
BATS_TEST_NAME_PREFIX='[ENV] (DMS_VMAIL_UID + DMS_VMAIL_GID) '
|
|
CONTAINER_NAME='dms-test_env-change-vmail-id'
|
|
|
|
function setup_file() {
|
|
_init_with_defaults
|
|
|
|
local CUSTOM_SETUP_ARGUMENTS=(
|
|
--env PERMIT_DOCKER=container
|
|
--env DMS_VMAIL_UID=9042
|
|
--env DMS_VMAIL_GID=9042
|
|
)
|
|
|
|
_common_container_setup 'CUSTOM_SETUP_ARGUMENTS'
|
|
_wait_for_smtp_port_in_container
|
|
}
|
|
|
|
function teardown_file() { _default_teardown ; }
|
|
|
|
@test 'should successfully deliver mail' {
|
|
_send_email --header 'Subject: Test Message existing-user1'
|
|
_wait_for_empty_mail_queue_in_container
|
|
|
|
# Should be successfully sent (received) by Postfix:
|
|
_service_log_should_contain_string 'mail' 'to=<user1@localhost.localdomain>'
|
|
assert_output --partial 'status=sent'
|
|
_should_output_number_of_lines 1
|
|
|
|
# Verify successful delivery via Dovecot to `/var/mail` account by searching for the subject:
|
|
_repeat_in_container_until_success_or_timeout 20 "${CONTAINER_NAME}" grep -R \
|
|
'Subject: Test Message existing-user1' \
|
|
'/var/mail/localhost.localdomain/user1/new/'
|
|
assert_success
|
|
_should_output_number_of_lines 1
|
|
}
|
|
|
|
# TODO: Migrate to test/helper/common.bash
|
|
# This test case is shared with tests.bats, but provides context on errors + some minor edits
|
|
# TODO: Could improve in future with keywords from https://github.com/docker-mailserver/docker-mailserver/pull/3550#issuecomment-1738509088
|
|
# Potentially via a helper that allows an optional fixed number of errors to be present if they were intentional
|
|
@test 'Mail log is error free' {
|
|
# Postfix: https://serverfault.com/questions/934703/postfix-451-4-3-0-temporary-lookup-failure
|
|
_service_log_should_not_contain_string 'mail' 'non-null host address bits in'
|
|
|
|
# Postfix delivery failure: https://github.com/docker-mailserver/docker-mailserver/issues/230
|
|
_service_log_should_not_contain_string 'mail' 'mail system configuration error'
|
|
|
|
# Unknown error source: https://github.com/docker-mailserver/docker-mailserver/pull/85
|
|
_service_log_should_not_contain_string 'mail' ': Error:'
|
|
|
|
# Unknown error source: https://github.com/docker-mailserver/docker-mailserver/pull/320
|
|
_service_log_should_not_contain_string 'mail' 'not writable'
|
|
_service_log_should_not_contain_string 'mail' 'Permission denied'
|
|
|
|
# Amavis: https://forum.howtoforge.com/threads/postfix-smtp-error-caused-by-clamav-cant-connect-to-a-unix-socket-var-run-clamav-clamd-ctl.81002/
|
|
_service_log_should_not_contain_string 'mail' '(!)connect'
|
|
|
|
# Postfix: https://github.com/docker-mailserver/docker-mailserver/pull/2597
|
|
# Log line match example: https://github.com/docker-mailserver/docker-mailserver/pull/2598#issuecomment-1141176633
|
|
_service_log_should_not_contain_string 'mail' 'using backwards-compatible default setting'
|
|
|
|
# Postgrey: https://github.com/docker-mailserver/docker-mailserver/pull/612#discussion_r117635774
|
|
_service_log_should_not_contain_string 'mail' 'connect to 127.0.0.1:10023: Connection refused'
|
|
}
|
|
|