* do not quarantine an email if fails DMARC but has a small rspamd score * use 0 when cannot parse rspamd score * use -1 as default value
47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
from app.handler.spamd_result import DmarcCheckResult, SpamdResult
|
|
from tests.utils import load_eml_file
|
|
|
|
|
|
def test_dmarc_result_softfail():
|
|
msg = load_eml_file("dmarc_gmail_softfail.eml")
|
|
assert DmarcCheckResult.soft_fail == SpamdResult.extract_from_headers(msg).dmarc
|
|
assert SpamdResult.extract_from_headers(msg).rspamd_score == 0.5
|
|
|
|
|
|
def test_dmarc_result_quarantine():
|
|
msg = load_eml_file("dmarc_quarantine.eml")
|
|
assert DmarcCheckResult.quarantine == SpamdResult.extract_from_headers(msg).dmarc
|
|
|
|
|
|
def test_dmarc_result_reject():
|
|
msg = load_eml_file("dmarc_reject.eml")
|
|
assert DmarcCheckResult.reject == SpamdResult.extract_from_headers(msg).dmarc
|
|
|
|
|
|
def test_dmarc_result_allow():
|
|
msg = load_eml_file("dmarc_allow.eml")
|
|
assert DmarcCheckResult.allow == SpamdResult.extract_from_headers(msg).dmarc
|
|
|
|
|
|
def test_dmarc_result_na():
|
|
msg = load_eml_file("dmarc_na.eml")
|
|
assert DmarcCheckResult.not_available == SpamdResult.extract_from_headers(msg).dmarc
|
|
|
|
|
|
def test_dmarc_result_bad_policy():
|
|
msg = load_eml_file("dmarc_bad_policy.eml")
|
|
assert SpamdResult._get_from_message(msg) is None
|
|
assert DmarcCheckResult.bad_policy == SpamdResult.extract_from_headers(msg).dmarc
|
|
assert SpamdResult._get_from_message(msg) is not None
|
|
|
|
|
|
def test_parse_rspamd_score():
|
|
msg = load_eml_file("dmarc_gmail_softfail.eml")
|
|
assert SpamdResult.extract_from_headers(msg).rspamd_score == 0.5
|
|
|
|
|
|
def test_cannot_parse_rspamd_score():
|
|
msg = load_eml_file("dmarc_cannot_parse_rspamd_score.eml")
|
|
# use the default score when cannot parse
|
|
assert SpamdResult.extract_from_headers(msg).rspamd_score == -1
|