diff options
Diffstat (limited to 'test/functional/cases')
17 files changed, 440 insertions, 26 deletions
diff --git a/test/functional/cases/001_merged/102_multimap.robot b/test/functional/cases/001_merged/102_multimap.robot index 50d1af6b6..a16d0e5c4 100644 --- a/test/functional/cases/001_merged/102_multimap.robot +++ b/test/functional/cases/001_merged/102_multimap.robot @@ -418,6 +418,16 @@ MAP - EXTERNAL MISS ... Settings={symbols_enabled = [EXTERNAL_MULTIMAP]} Do Not Expect Symbol EXTERNAL_MULTIMAP +MAP - EXTERNAL CDB + Scan File ${MESSAGE} IP=127.0.0.1 Hostname=example.com + ... Settings={symbols_enabled = [EXTERNAL_MULTIMAP_CDB]} + Expect Symbol EXTERNAL_MULTIMAP_CDB + +MAP - EXTERNAL CDB MISS + Scan File ${MESSAGE} IP=127.0.0.1 Hostname=example.com.bg + ... Settings={symbols_enabled = [EXTERNAL_MULTIMAP_CDB]} + Do Not Expect Symbol EXTERNAL_MULTIMAP_CDB + MAP - DYNAMIC SYMBOLS - SYM1 Scan File ${MESSAGE} IP=127.0.0.1 Hostname=foo ... Settings={symbols_enabled = [DYN_TEST1,DYN_TEST2,DYN_MULTIMAP]} diff --git a/test/functional/cases/001_merged/300_rbl.robot b/test/functional/cases/001_merged/300_rbl.robot index 8b19fae06..f71c18f57 100644 --- a/test/functional/cases/001_merged/300_rbl.robot +++ b/test/functional/cases/001_merged/300_rbl.robot @@ -96,3 +96,29 @@ NUMERIC URLS WITH EVERYTHING ... IP=127.0.0.1 ... Settings={symbols_enabled = [URIBL_NUMERIC_EVERYTHING]} Expect Symbol With Exact Options URIBL_NUMERIC_EVERYTHING 12.11.10.9:url 4.3.2.1:url 8.7.6.5:url + +NONNUMERIC URLS VANILLA + Scan File ${RSPAMD_TESTDIR}/messages/numeric_urls.eml + ... Settings={symbols_enabled = [URIBL_NONNUMERIC_VANILLA]} + # Content + Do Not Expect Symbol With Option URIBL_NONNUMERIC_VANILLA example.com:url + # Image + Do Not Expect Symbol With Option URIBL_NONNUMERIC_VANILLA judo.za.org:url + # URL + Expect Symbol With Option URIBL_NONNUMERIC_VANILLA example.org:url + # Numeric + Do Not Expect Symbol With Option URIBL_NONNUMERIC_VANILLA 4.3.2.1:url + Do Not Expect Symbol With Option URIBL_NONNUMERIC_VANILLA 1.2.3.4:url + +NONNUMERIC URLS WITH EVERYTHING + Scan File ${RSPAMD_TESTDIR}/messages/numeric_urls.eml + ... Settings={symbols_enabled = [URIBL_NONNUMERIC_EVERYTHING]} + # Content + Expect Symbol With Option URIBL_NONNUMERIC_EVERYTHING example.com:url + # Image + Expect Symbol With Option URIBL_NONNUMERIC_EVERYTHING judo.za.org:url + # URL + Expect Symbol With Option URIBL_NONNUMERIC_EVERYTHING example.org:url + # Numeric + Do Not Expect Symbol With Option URIBL_NONNUMERIC_EVERYTHING 4.3.2.1:url + Do Not Expect Symbol With Option URIBL_NONNUMERIC_EVERYTHING 1.2.3.4:url diff --git a/test/functional/cases/001_merged/350_magic.robot b/test/functional/cases/001_merged/350_magic.robot index 66a18f2af..b2746ce3c 100644 --- a/test/functional/cases/001_merged/350_magic.robot +++ b/test/functional/cases/001_merged/350_magic.robot @@ -65,3 +65,4 @@ Magic detections bundle 1 ... MAGIC_SYM_ICS_55 ... MAGIC_SYM_VCF_56 ... MAGIC_SYM_CSV_57 + ... MAGIC_SYM_HEIC_58 diff --git a/test/functional/cases/110_statistics/300-multiclass-redis.robot b/test/functional/cases/110_statistics/300-multiclass-redis.robot new file mode 100644 index 000000000..278f7e0a0 --- /dev/null +++ b/test/functional/cases/110_statistics/300-multiclass-redis.robot @@ -0,0 +1,42 @@ +*** Settings *** +Documentation Multiclass Bayes Classification Tests with Redis Backend +Suite Setup Rspamd Redis Setup +Suite Teardown Rspamd Redis Teardown +Test Setup Set Test Hash Documentation +Resource multiclass_lib.robot + +*** Variables *** +${RSPAMD_REDIS_SERVER} ${RSPAMD_REDIS_ADDR}:${RSPAMD_REDIS_PORT} +${RSPAMD_STATS_HASH} siphash +${CONFIG} ${RSPAMD_TESTDIR}/configs/multiclass_bayes.conf + +*** Test Cases *** +Multiclass Basic Learning and Classification + [Documentation] Test basic multiclass learning and classification + [Tags] multiclass basic learning + Multiclass Basic Learn Test + +Multiclass Legacy Compatibility + [Documentation] Test that old learn_spam/learn_ham commands still work + [Tags] multiclass compatibility legacy + Multiclass Legacy Compatibility Test + +Multiclass Relearn + [Documentation] Test reclassifying messages to different classes + [Tags] multiclass relearn + Multiclass Relearn Test + +Multiclass Cross-Class Learning + [Documentation] Test learning message as different class than expected + [Tags] multiclass cross-learn + Multiclass Cross-Learn Test + +Multiclass Unlearn + [Documentation] Test unlearning (learning message as different class) + [Tags] multiclass unlearn + Multiclass Unlearn Test + +Multiclass Statistics + [Documentation] Test that statistics show all class information + [Tags] multiclass statistics + Multiclass Stats Test
\ No newline at end of file diff --git a/test/functional/cases/110_statistics/320-multiclass-peruser.robot b/test/functional/cases/110_statistics/320-multiclass-peruser.robot new file mode 100644 index 000000000..e8ca34616 --- /dev/null +++ b/test/functional/cases/110_statistics/320-multiclass-peruser.robot @@ -0,0 +1,31 @@ +*** Settings *** +Suite Setup Rspamd Redis Setup +Suite Teardown Rspamd Redis Teardown +Test Setup Set Test Hash Documentation +Resource multiclass_lib.robot + +*** Variables *** +${CONFIG} ${RSPAMD_TESTDIR}/configs/multiclass_bayes.conf +${REDIS_SCOPE} Suite +${RSPAMD_REDIS_SERVER} ${RSPAMD_REDIS_ADDR}:${RSPAMD_REDIS_PORT} +${RSPAMD_SCOPE} Suite +${RSPAMD_STATS_BACKEND} redis +${RSPAMD_STATS_HASH} null +${RSPAMD_STATS_KEY} null +${RSPAMD_STATS_PER_USER} true + +*** Test Cases *** +Multiclass Per-User Basic Learn Test + Multiclass Basic Learn Test test@example.com + +Multiclass Per-User Legacy Compatibility Test + Multiclass Legacy Compatibility Test test@example.com + +Multiclass Per-User Relearn Test + Multiclass Relearn Test test@example.com + +Multiclass Per-User Cross-Learn Test + Multiclass Cross-Learn Test test@example.com + +Multiclass Per-User Unlearn Test + Multiclass Unlearn Test test@example.com
\ No newline at end of file diff --git a/test/functional/cases/110_statistics/multiclass_lib.robot b/test/functional/cases/110_statistics/multiclass_lib.robot new file mode 100644 index 000000000..9f70e05fb --- /dev/null +++ b/test/functional/cases/110_statistics/multiclass_lib.robot @@ -0,0 +1,169 @@ +*** Settings *** +Library OperatingSystem +Resource lib.robot + +*** Variables *** +${CONFIG} ${RSPAMD_TESTDIR}/configs/multiclass_bayes.conf +${MESSAGE_HAM} ${RSPAMD_TESTDIR}/messages/ham.eml +${MESSAGE_SPAM} ${RSPAMD_TESTDIR}/messages/spam_message.eml +${MESSAGE_NEWSLETTER} ${RSPAMD_TESTDIR}/messages/newsletter.eml +${REDIS_SCOPE} Suite +${RSPAMD_REDIS_SERVER} null +${RSPAMD_SCOPE} Suite +${RSPAMD_STATS_BACKEND} redis +${RSPAMD_STATS_HASH} null +${RSPAMD_STATS_KEY} null +${RSPAMD_STATS_PER_USER} ${EMPTY} + +*** Keywords *** +Learn Multiclass + [Arguments] ${user} ${class} ${message} + # Extract filename from message path for queue-id + ${path} ${filename} = Split Path ${message} + IF "${user}" + ${result} = Run Rspamc -d ${user} -h ${RSPAMD_LOCAL_ADDR}:${RSPAMD_PORT_CONTROLLER} learn_class:${class} ${message} + ELSE + ${result} = Run Rspamc -h ${RSPAMD_LOCAL_ADDR}:${RSPAMD_PORT_CONTROLLER} learn_class:${class} ${message} + END + Check Rspamc ${result} + +Learn Multiclass Legacy + [Arguments] ${user} ${class} ${message} + # Test backward compatibility with old learn_spam/learn_ham commands + # Extract filename from message path for queue-id + ${path} ${filename} = Split Path ${message} + IF "${user}" + ${result} = Run Rspamc -d ${user} -h ${RSPAMD_LOCAL_ADDR}:${RSPAMD_PORT_CONTROLLER} learn_${class} ${message} + ELSE + ${result} = Run Rspamc -h ${RSPAMD_LOCAL_ADDR}:${RSPAMD_PORT_CONTROLLER} learn_${class} ${message} + END + Check Rspamc ${result} + +Multiclass Basic Learn Test + [Arguments] ${user}=${EMPTY} + Set Suite Variable ${RSPAMD_STATS_LEARNTEST} 0 + Set Test Variable ${kwargs} &{EMPTY} + IF "${user}" + Set To Dictionary ${kwargs} Deliver-To=${user} + END + + # Learn all classes + Learn Multiclass ${user} spam ${MESSAGE_SPAM} + Learn Multiclass ${user} ham ${MESSAGE_HAM} + Learn Multiclass ${user} newsletter ${MESSAGE_NEWSLETTER} + + # Test classification + Scan File ${MESSAGE_SPAM} &{kwargs} + Expect Symbol BAYES_SPAM + + Scan File ${MESSAGE_HAM} &{kwargs} + Expect Symbol BAYES_HAM + + Scan File ${MESSAGE_NEWSLETTER} &{kwargs} + Expect Symbol BAYES_NEWSLETTER + + Set Suite Variable ${RSPAMD_STATS_LEARNTEST} 1 + +Multiclass Legacy Compatibility Test + [Arguments] ${user}=${EMPTY} + Set Test Variable ${kwargs} &{EMPTY} + IF "${user}" + Set To Dictionary ${kwargs} Deliver-To=${user} + END + + # Test legacy learn_spam and learn_ham commands still work + Learn Multiclass Legacy ${user} spam ${MESSAGE_SPAM} + Learn Multiclass Legacy ${user} ham ${MESSAGE_HAM} + + # Should still classify correctly + Scan File ${MESSAGE_SPAM} &{kwargs} + Expect Symbol BAYES_SPAM + + Scan File ${MESSAGE_HAM} &{kwargs} + Expect Symbol BAYES_HAM + +Multiclass Relearn Test + [Arguments] ${user}=${EMPTY} + IF ${RSPAMD_STATS_LEARNTEST} == 0 + Fail "Learn test was not run" + END + + Set Test Variable ${kwargs} &{EMPTY} + IF "${user}" + Set To Dictionary ${kwargs} Deliver-To=${user} + END + + # Relearn spam message as ham + Learn Multiclass ${user} ham ${MESSAGE_SPAM} + + # Should now classify as ham or at least not spam + Scan File ${MESSAGE_SPAM} &{kwargs} + ${pass} = Run Keyword And Return Status Expect Symbol BAYES_HAM + IF ${pass} + Pass Execution Successfully reclassified spam as ham + END + Do Not Expect Symbol BAYES_SPAM + +Multiclass Cross-Learn Test + [Arguments] ${user}=${EMPTY} + Set Test Variable ${kwargs} &{EMPTY} + IF "${user}" + Set To Dictionary ${kwargs} Deliver-To=${user} + END + + # Learn newsletter message as ham to test cross-class learning + Learn Multiclass ${user} ham ${MESSAGE_NEWSLETTER} + + # Should classify as ham, not newsletter (since we trained it as ham) + Scan File ${MESSAGE_NEWSLETTER} &{kwargs} + Expect Symbol BAYES_HAM + Do Not Expect Symbol BAYES_NEWSLETTER + +Multiclass Unlearn Test + [Arguments] ${user}=${EMPTY} + Set Test Variable ${kwargs} &{EMPTY} + IF "${user}" + Set To Dictionary ${kwargs} Deliver-To=${user} + END + + # First learn spam + Learn Multiclass ${user} spam ${MESSAGE_SPAM} + Scan File ${MESSAGE_SPAM} &{kwargs} + Expect Symbol BAYES_SPAM + + # Then unlearn spam (learn as ham) + Learn Multiclass ${user} ham ${MESSAGE_SPAM} + + # Should no longer classify as spam + Scan File ${MESSAGE_SPAM} &{kwargs} + Do Not Expect Symbol BAYES_SPAM + +Check Multiclass Results + [Arguments] ${result} ${expected_class} + # Check that scan result contains expected class information + Should Contain ${result.stdout} BAYES_${expected_class.upper()} + # Check for multiclass result format [class_name] + Should Match Regexp ${result.stdout} BAYES_${expected_class.upper()}.*\\[${expected_class}\\] + +Multiclass Stats Test + # Check that rspamc stat shows learning counts for all classes + ${result} = Run Rspamc -h ${RSPAMD_LOCAL_ADDR}:${RSPAMD_PORT_CONTROLLER} stat + # Don't use Check Rspamc for stat command as it expects JSON success format + Should Be Equal As Integers ${result.rc} 0 + + # Should show statistics for all classes + Should Contain ${result.stdout} BAYES_SPAM + Should Contain ${result.stdout} BAYES_HAM + Should Contain ${result.stdout} BAYES_NEWSLETTER + +Multiclass Configuration Migration Test + # Test that old binary config can be automatically migrated + Set Test Variable ${binary_config} ${RSPAMD_TESTDIR}/configs/stats.conf + + # Start with binary config + ${result} = Run Rspamc --config ${binary_config} stat + Check Rspamc ${result} + + # Should show deprecation warning but work + Should Contain ${result.stderr} deprecated ignore_case=True + diff --git a/test/functional/cases/120_fuzzy/lib.robot b/test/functional/cases/120_fuzzy/lib.robot index fda0af54a..a57ecc742 100644 --- a/test/functional/cases/120_fuzzy/lib.robot +++ b/test/functional/cases/120_fuzzy/lib.robot @@ -16,6 +16,7 @@ ${RSPAMD_FUZZY_ENCRYPTED_ONLY} false ${RSPAMD_FUZZY_ENCRYPTION_KEY} null ${RSPAMD_FUZZY_INCLUDE} ${RSPAMD_TESTDIR}/configs/empty.conf ${RSPAMD_FUZZY_KEY} null +${RSPAMD_FUZZY_SERVER_MODE} servers ${RSPAMD_FUZZY_SHINGLES_KEY} null ${RSPAMD_SCOPE} Suite ${SETTINGS_FUZZY_CHECK} ${EMPTY} @@ -109,6 +110,7 @@ Fuzzy Setup Encrypted Set Suite Variable ${RSPAMD_FUZZY_ENCRYPTION_KEY} ${RSPAMD_KEY_PUB1} Set Suite Variable ${RSPAMD_FUZZY_CLIENT_ENCRYPTION_KEY} ${RSPAMD_KEY_PUB1} Set Suite Variable ${RSPAMD_FUZZY_INCLUDE} ${RSPAMD_TESTDIR}/configs/fuzzy-encryption-key.conf + Set Suite Variable ${RSPAMD_FUZZY_SERVER_MODE} servers Rspamd Redis Setup Fuzzy Setup Encrypted Dyn1 @@ -142,6 +144,8 @@ Fuzzy Setup Encrypted Keyed Fuzzy Setup Plain [Arguments] ${algorithm} Set Suite Variable ${RSPAMD_FUZZY_ALGORITHM} ${algorithm} + Set Suite Variable ${RSPAMD_FUZZY_SERVER_MODE} servers + Set Suite Variable ${SETTINGS_FUZZY_CHECK} servers = "${RSPAMD_LOCAL_ADDR}:${RSPAMD_PORT_FUZZY}"; Rspamd Redis Setup Fuzzy Setup Keyed @@ -149,6 +153,7 @@ Fuzzy Setup Keyed Set Suite Variable ${RSPAMD_FUZZY_ALGORITHM} ${algorithm} Set Suite Variable ${RSPAMD_FUZZY_KEY} mYN888sydwLTfE32g2hN Set Suite Variable ${RSPAMD_FUZZY_SHINGLES_KEY} hXUCgul9yYY3Zlk1QIT2 + Set Suite Variable ${RSPAMD_FUZZY_SERVER_MODE} servers Rspamd Redis Setup Fuzzy Setup Plain Fasthash @@ -218,3 +223,21 @@ Fuzzy Multimessage Overwrite Test FOR ${i} IN @{MESSAGES} Fuzzy Overwrite Test ${i} END + +Fuzzy Setup Split Servers + Set Suite Variable ${RSPAMD_FUZZY_ALGORITHM} siphash + Set Suite Variable ${RSPAMD_FUZZY_SERVER_MODE} split + Set Suite Variable ${SETTINGS_FUZZY_CHECK} read_servers = "${RSPAMD_LOCAL_ADDR}:${RSPAMD_PORT_FUZZY}"; write_servers = "${RSPAMD_LOCAL_ADDR}:${RSPAMD_PORT_FUZZY}"; + Rspamd Redis Setup + +Fuzzy Setup Read Only + Set Suite Variable ${RSPAMD_FUZZY_ALGORITHM} siphash + Set Suite Variable ${RSPAMD_FUZZY_SERVER_MODE} read_only + Set Suite Variable ${SETTINGS_FUZZY_CHECK} read_only = true; + Rspamd Redis Setup + +Fuzzy Setup Write Only + Set Suite Variable ${RSPAMD_FUZZY_ALGORITHM} siphash + Set Suite Variable ${RSPAMD_FUZZY_SERVER_MODE} write_only + Set Suite Variable ${SETTINGS_FUZZY_CHECK} mode = "write_only"; + Rspamd Redis Setup diff --git a/test/functional/cases/120_fuzzy/read-only.robot b/test/functional/cases/120_fuzzy/read-only.robot new file mode 100644 index 000000000..0c3be7fec --- /dev/null +++ b/test/functional/cases/120_fuzzy/read-only.robot @@ -0,0 +1,14 @@ +*** Settings *** +Suite Setup Fuzzy Setup Read Only +Suite Teardown Rspamd Redis Teardown +Resource lib.robot + +*** Test Cases *** +Fuzzy Add + Fuzzy Multimessage Add Test + +Fuzzy Fuzzy + Fuzzy Multimessage Fuzzy Test + +Fuzzy Miss + Fuzzy Multimessage Miss Test diff --git a/test/functional/cases/120_fuzzy/split-servers.robot b/test/functional/cases/120_fuzzy/split-servers.robot new file mode 100644 index 000000000..41acb23ff --- /dev/null +++ b/test/functional/cases/120_fuzzy/split-servers.robot @@ -0,0 +1,18 @@ +*** Settings *** +Suite Setup Fuzzy Setup Split Servers +Suite Teardown Rspamd Redis Teardown +Resource lib.robot +Variables ${RSPAMD_TESTDIR}/lib/vars.py + +*** Variables *** +${CONFIG} ${RSPAMD_TESTDIR}/configs/fuzzy-split-servers.conf + +*** Test Cases *** +Fuzzy Add + Fuzzy Multimessage Add Test + +Fuzzy Fuzzy + Fuzzy Multimessage Fuzzy Test + +Fuzzy Miss + Fuzzy Multimessage Miss Test diff --git a/test/functional/cases/120_fuzzy/write-only.robot b/test/functional/cases/120_fuzzy/write-only.robot new file mode 100644 index 000000000..ee017a1d3 --- /dev/null +++ b/test/functional/cases/120_fuzzy/write-only.robot @@ -0,0 +1,14 @@ +*** Settings *** +Suite Setup Fuzzy Setup Write Only +Suite Teardown Rspamd Redis Teardown +Resource lib.robot + +*** Test Cases *** +Fuzzy Add + Fuzzy Multimessage Add Test + +Fuzzy Fuzzy + Fuzzy Multimessage Fuzzy Test + +Fuzzy Miss + Fuzzy Multimessage Miss Test diff --git a/test/functional/cases/270_regexp_maps.robot b/test/functional/cases/270_regexp_maps.robot new file mode 100644 index 000000000..d89143bc8 --- /dev/null +++ b/test/functional/cases/270_regexp_maps.robot @@ -0,0 +1,48 @@ +*** Settings *** +Test Setup Rspamd Setup +Test Teardown Rspamd Teardown +Library ${RSPAMD_TESTDIR}/lib/rspamd.py +Resource ${RSPAMD_TESTDIR}/lib/rspamd.robot +Variables ${RSPAMD_TESTDIR}/lib/vars.py + +*** Variables *** +${CONFIG} ${RSPAMD_TESTDIR}/configs/regexp_maps.conf +${MESSAGE1} ${RSPAMD_TESTDIR}/messages/advance_fee_fraud.eml +${MESSAGE2} ${RSPAMD_TESTDIR}/messages/spam_message.eml +${RSPAMD_SCOPE} Test +${RSPAMD_URL_TLD} ${RSPAMD_TESTDIR}/../lua/unit/test_tld.dat + +*** Test Cases *** +Advance Fee Fraud Detection + [Documentation] Test that advance fee fraud rules match correctly + Scan File ${MESSAGE1} + Expect Symbol ADVANCE_FEE_2 + Expect Symbol ADVANCE_FEE_3 + # Verify filtered options (no __ atoms, max 5 options) + ${symbols} = Get From Dictionary ${SCAN_RESULT}[symbols] ADVANCE_FEE_2 + ${options} = Get From Dictionary ${symbols} options + ${options_count} = Get Length ${options} + Should Be True ${options_count} <= 5 msg=Too many options: ${options_count} + FOR ${option} IN @{options} + Should Not Match Regexp ${option} ^__ msg=Option should not start with __: ${option} + END + +Meta Rule Combination + [Documentation] Test that meta rules correctly combine atom results + Scan File ${MESSAGE1} + Expect Symbol With Score ADVANCE_FEE_2 4.0 + Expect Symbol With Score ADVANCE_FEE_3 5.0 + +No False Positives on Ham + [Documentation] Test that regexp rules don't trigger on legitimate messages + Scan File ${MESSAGE2} + Do Not Expect Symbol ADVANCE_FEE_2 + Do Not Expect Symbol ADVANCE_FEE_3 + +Atom Rules Availability + [Documentation] Test that individual atom rules are available for combination + Scan File ${MESSAGE1} + # These should be available internally but not shown as main results + # We test by ensuring the meta rules work correctly + Expect Symbol ADVANCE_FEE_2 + Expect Symbol ADVANCE_FEE_3 diff --git a/test/functional/cases/400_known_senders.robot b/test/functional/cases/400_known_senders.robot index d827acc0e..a7cde59cb 100644 --- a/test/functional/cases/400_known_senders.robot +++ b/test/functional/cases/400_known_senders.robot @@ -43,33 +43,37 @@ INCOMING MAIL SENDER IS UNKNOWN ... Settings={symbols_enabled [${SYMBOL_GLOBAL}, ${SYMBOL_LOCAL}]} Do Not Expect Symbol ${SYMBOL_GLOBAL} Do Not Expect Symbol ${SYMBOL_LOCAL} - + INCOMING MAIL SENDER IS KNOWN RECIPIENTS ARE UNKNOWN Scan File ${RSPAMD_TESTDIR}/messages/set_replyto_1_1.eml - ... IP=8.8.8.8 User=user@emailbl.com + ... IP=8.8.8.8 + ... User=xxx@abrakadabra.com + ... From=xxx@abrakadabra.com ... Settings=${SETTINGS_REPLIES} Scan File ${RSPAMD_TESTDIR}/messages/replyto_1_1.eml - ... IP=8.8.8.8 User=user@emailbl.com + ... IP=8.8.8.8 + ... Settings=${SETTINGS_REPLIES} + ... Rcpt=xxx@abrakadabra.com ... Settings=${SETTINGS_REPLIES} + ... From=user@emailbl.com Scan File ${RSPAMD_TESTDIR}/messages/inc_mail_known_sender.eml - ... IP=8.8.8.8 User=user@emailbl.com + ... IP=8.8.8.8 ... Settings={symbols_enabled [${SYMBOL_GLOBAL}, ${SYMBOL_LOCAL}]} Expect Symbol ${SYMBOL_GLOBAL} Do Not Expect Symbol ${SYMBOL_LOCAL} INCOMING MAIL SENDER IS KNOWN RECIPIENTS ARE KNOWN Scan File ${RSPAMD_TESTDIR}/messages/set_replyto_1_1.eml - ... IP=8.8.8.8 User=user@emailbl.com + ... IP=8.8.8.8 User=user@emailbl.com From=user@emailbl.com ... Settings=${SETTINGS_REPLIES} Scan File ${RSPAMD_TESTDIR}/messages/replyto_1_1.eml - ... IP=8.8.8.8 User=user@emailbl.com + ... IP=8.8.8.8 User=user@emailbl.com Rcpt=user@emailbl.com ... Settings=${SETTINGS_REPLIES} Scan File ${RSPAMD_TESTDIR}/messages/inc_mail_known_sender.eml - ... IP=8.8.8.8 User=user@emailbl.com + ... IP=8.8.8.8 User=user@emailbl.com Rcpt=user@emailbl.com ... Settings=${SETTINGS_REPLIES} Scan File ${RSPAMD_TESTDIR}/messages/inc_mail_known_sender.eml - ... IP=8.8.8.8 User=user@emailbl.com + ... IP=8.8.8.8 User=user@emailbl.com Rcpt=user@emailbl.com ... Settings={symbols_enabled [${SYMBOL_GLOBAL}, ${SYMBOL_LOCAL}]} Expect Symbol ${SYMBOL_GLOBAL} Expect Symbol ${SYMBOL_LOCAL} - diff --git a/test/functional/cases/410_replies.robot b/test/functional/cases/410_replies.robot index 23ad9df35..b6710149c 100644 --- a/test/functional/cases/410_replies.robot +++ b/test/functional/cases/410_replies.robot @@ -15,33 +15,36 @@ ${RSPAMD_SCOPE} Suite *** Test Cases *** Reply to 1 sender 1 recipients Scan File ${RSPAMD_TESTDIR}/messages/set_replyto_1_1.eml - ... IP=8.8.8.8 User=user@emailbl.com + ... IP=8.8.8.8 + ... User=xxx@abrakadabra.com + ... From=xxx@abrakadabra.com ... Settings=${SETTINGS_REPLIES} + ... Rcpt=user@emailbl.com Scan File ${RSPAMD_TESTDIR}/messages/replyto_1_1.eml - ... IP=8.8.8.8 User=user@emailbl.com + ... IP=8.8.8.8 + ... Rcpt=xxx@abrakadabra.com ... Settings=${SETTINGS_REPLIES} + ... From=user@emailbl.com Expect Symbol ${SYMBOL} -Reply to 1 sender 2 recipients first is set second is not +Reply to 1 sender 2 recipients but SMTP recipient matches Scan File ${RSPAMD_TESTDIR}/messages/set_replyto_1_2_first.eml - ... IP=8.8.8.8 User=user@emailbl.com + ... IP=8.8.8.8 + ... User=xxxx@emailbl.com ... Settings=${SETTINGS_REPLIES} Scan File ${RSPAMD_TESTDIR}/messages/replyto_1_2.eml - ... IP=8.8.8.8 User=user@emailbl.com + ... IP=8.8.8.8 + ... Rcpt=xxxx@emailbl.com ... Settings=${SETTINGS_REPLIES} Expect Symbol ${SYMBOL} -Reply to 1 sender 2 recipients 1 rcpt is same - Scan File ${RSPAMD_TESTDIR}/messages/replyto_1_2_s.eml - ... IP=8.8.8.8 User=user@emailbl.com +Reply to 1 sender 2 recipients but SMTP recipient NOT matches + Scan File ${RSPAMD_TESTDIR}/messages/set_replyto_1_2_first.eml + ... IP=8.8.8.8 + ... User=user@emailbl.com ... Settings=${SETTINGS_REPLIES} - Expect Symbol ${SYMBOL} - -Reply to another sender 2 recipients - Scan File ${RSPAMD_TESTDIR}/messages/set_replyto_2_2.eml - ... IP=8.8.8.8 User=another@emailbl.com + Scan File ${RSPAMD_TESTDIR}/messages/replyto_1_2.eml + ... IP=8.8.8.8 User=user@emailbl.com + ... Rcpt=another@emailbl.com ... Settings=${SETTINGS_REPLIES} - Scan File ${RSPAMD_TESTDIR}/messages/replyto_2_2.eml - ... IP=8.8.8.8 User=another@emailbl.com - ... Settings=${SETTINGS_REPLIES} - Expect Symbol ${SYMBOL} + Do Not Expect Symbol ${SYMBOL} diff --git a/test/functional/cases/410_logging/000_console/000_systemd_logger.robot b/test/functional/cases/411_logging/000_console/000_systemd_logger.robot index 88178461b..88178461b 100644 --- a/test/functional/cases/410_logging/000_console/000_systemd_logger.robot +++ b/test/functional/cases/411_logging/000_console/000_systemd_logger.robot diff --git a/test/functional/cases/410_logging/000_console/001_timestamps.robot b/test/functional/cases/411_logging/000_console/001_timestamps.robot index bd8e2c349..bd8e2c349 100644 --- a/test/functional/cases/410_logging/000_console/001_timestamps.robot +++ b/test/functional/cases/411_logging/000_console/001_timestamps.robot diff --git a/test/functional/cases/410_logging/001_file/000_json.robot b/test/functional/cases/411_logging/001_file/000_json.robot index a2f04e85c..a2f04e85c 100644 --- a/test/functional/cases/410_logging/001_file/000_json.robot +++ b/test/functional/cases/411_logging/001_file/000_json.robot diff --git a/test/functional/cases/550_milter_headers.robot b/test/functional/cases/550_milter_headers.robot index 80471b83c..c09659714 100644 --- a/test/functional/cases/550_milter_headers.robot +++ b/test/functional/cases/550_milter_headers.robot @@ -37,3 +37,14 @@ CHECK HEADERS WITHOUT TEST SYMBOL # Check X-Spam-Level header Do Not Expect Added Header X-Spam-Level Expect Removed Header X-Spam-Level + +CHECK HEADERS WITH OVERRIDE SETTINGS + # id_milter_headers_override setting enables only authentication-results and x-spam-level routines + Scan File ${MESSAGE} Settings-Id=id_milter_headers_override + # Test the milter_headers override behavior + # Check that Authentication-Results and X-Spam-Level headers are present (exact values are not important) + Expect Header Is Present Authentication-Results + Expect Header Is Present X-Spam-Level + # Verify other headers are not added since only authentication-results and x-spam-level routines run + Do Not Expect Added Header X-Virus + Do Not Expect Added Header My-Spamd-Bar |