mirror of
https://github.com/docker-mailserver/docker-mailserver
synced 2024-12-18 23:14:11 +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>
58 lines
1.7 KiB
Bash
58 lines
1.7 KiB
Bash
load "${REPOSITORY_ROOT}/test/helper/setup"
|
|
load "${REPOSITORY_ROOT}/test/helper/common"
|
|
|
|
BATS_TEST_NAME_PREFIX='[ClamAV] '
|
|
CONTAINER_NAME='dms-test_clamav'
|
|
|
|
function setup_file() {
|
|
_init_with_defaults
|
|
|
|
# Comment for maintainers about `PERMIT_DOCKER=host`:
|
|
# https://github.com/docker-mailserver/docker-mailserver/pull/2815/files#r991087509
|
|
local CUSTOM_SETUP_ARGUMENTS=(
|
|
--env ENABLE_CLAMAV=1
|
|
--env ENABLE_AMAVIS=1
|
|
--env PERMIT_DOCKER=host
|
|
--env AMAVIS_LOGLEVEL=2
|
|
--env CLAMAV_MESSAGE_SIZE_LIMIT=30M
|
|
--env LOG_LEVEL=trace
|
|
)
|
|
|
|
_common_container_setup 'CUSTOM_SETUP_ARGUMENTS'
|
|
|
|
# wait for ClamAV to be fully setup or we will get errors on the log
|
|
_repeat_in_container_until_success_or_timeout 60 "${CONTAINER_NAME}" test -e /var/run/clamav/clamd.ctl
|
|
|
|
_wait_for_service postfix
|
|
_wait_for_smtp_port_in_container
|
|
_send_email --from 'virus@external.tld' --data 'amavis/virus.txt'
|
|
_wait_for_empty_mail_queue_in_container
|
|
}
|
|
|
|
function teardown_file() { _default_teardown ; }
|
|
|
|
@test 'log files exist at /var/log/mail directory' {
|
|
_run_in_container_bash "ls -1 /var/log/mail/ | grep -c -E 'clamav|freshclam|mail.log'"
|
|
assert_success
|
|
assert_output 3
|
|
}
|
|
|
|
@test 'should be identified by Amavis' {
|
|
_service_log_should_contain_string 'mail' 'Found secondary av scanner ClamAV-clamscan'
|
|
}
|
|
|
|
@test 'freshclam cron is enabled' {
|
|
_run_in_container_bash "grep '/usr/bin/freshclam' -r /etc/cron.d"
|
|
assert_success
|
|
}
|
|
|
|
@test 'env CLAMAV_MESSAGE_SIZE_LIMIT is set correctly' {
|
|
_run_in_container grep -q '^MaxFileSize 30M$' /etc/clamav/clamd.conf
|
|
assert_success
|
|
}
|
|
|
|
@test 'rejects virus' {
|
|
_service_log_should_contain_string 'mail' 'Blocked INFECTED'
|
|
assert_output --partial '<virus@external.tld> -> <user1@localhost.localdomain>'
|
|
}
|