Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def search_matches(self, folder, message_dict):
self._get_mailaddress_search_domain(
folder,
message_dict,
operator="like",
operator="ilike",
values=["%@" + domain for domain in set(domains)],
),
order=folder.model_order,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def _get_mailaddresses(self, folder, message_dict):
return [addr.lower() for addr in mailaddresses]

def _get_mailaddress_search_domain(
self, folder, message_dict, operator="=", values=None
self, folder, message_dict, operator="=ilike", values=None
):
mailaddresses = values or self._get_mailaddresses(folder, message_dict)
if not mailaddresses:
Expand Down
25 changes: 25 additions & 0 deletions fetchmail_attach_from_folder/tests/test_match_algorithms.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,31 @@ def test_email_exact(self):
self._test_search_matches(email_domain.EmailDomain)
self._test_apply_matching(email_domain.EmailDomain)

def test_email_exact_case_insensitive(self):
"""Email matching must be case-insensitive regardless of stored casing."""
from ..match_algorithm.email_exact import EmailExact

mixed_case_email = TEST_EMAIL.replace("reynaert", "Reynaert").replace(
"dutchsagas", "DutchSagas"
)
self.test_partner.write({"email": mixed_case_email})
MAIL_MESSAGE["from"] = TEST_EMAIL
matcher = EmailExact()
matches = matcher.search_matches(self.folder, MAIL_MESSAGE)
self.assertEqual(matches, self.test_partner)

def test_email_domain_case_insensitive(self):
"""Domain matching must be case-insensitive regardless of stored casing."""
mixed_case_email = TEST_EMAIL.replace("dutchsagas", "DutchSagas")
self.test_partner.write({"email": mixed_case_email})
alternate_email = TEST_EMAIL.replace("reynaert@", "mariken@")
MAIL_MESSAGE["from"] = alternate_email
self.folder.match_algorithm = "email_domain"
self.folder.match_first = True
matcher = email_domain.EmailDomain()
matches = matcher.search_matches(self.folder, MAIL_MESSAGE)
self.assertEqual(matches, self.test_partner)

def test_email_domain(self):
"""Test with email in same domain, but different mailbox."""
ALTERNATE_EMAIL = TEST_EMAIL.replace("reynaert@", "mariken@")
Expand Down
Loading