from imap_tools import MailBox
from imap_tools import MailboxFolderSelectError
from imap_tools import MailBoxUnencrypted
+from imap_tools import MailMessage
from imap_tools import MailMessageFlags
from paperless_mail.models import MailAccount
from paperless_mail.models import MailRule
"Unknown title selector.",
) # pragma: nocover
- def get_correspondent(self, message, rule):
+ def get_correspondent(self, message: MailMessage, rule):
c_from = rule.assign_correspondent_from
if c_from == MailRule.CORRESPONDENT_FROM_NOTHING:
return self._correspondent_from_name(message.from_)
elif c_from == MailRule.CORRESPONDENT_FROM_NAME:
- if (
- message.from_values
- and "name" in message.from_values
- and message.from_values["name"]
- ):
- return self._correspondent_from_name(message.from_values["name"])
+ from_values = message.from_values
+ if from_values is not None and len(from_values.name) > 0:
+ return self._correspondent_from_name(from_values.name)
else:
return self._correspondent_from_name(message.from_)
from django.test import TestCase
from documents.models import Correspondent
from documents.tests.utils import DirectoriesMixin
+from imap_tools import EmailAddress
from imap_tools import MailboxFolderSelectError
from imap_tools import MailMessageFlags
from paperless_mail import tasks
class BogusFolderManager:
-
current_folder = "INBOX"
def set(self, new_folder):
def fake_magic_from_buffer(buffer, mime=False):
-
if mime:
if "PDF" in str(buffer):
return "application/pdf"
def test_get_correspondent(self):
message = namedtuple("MailMessage", [])
message.from_ = "someone@somewhere.com"
- message.from_values = {"name": "Someone!", "email": "someone@somewhere.com"}
+ message.from_values = EmailAddress(
+ "Someone!",
+ "someone@somewhere.com",
+ "Someone! <someone@somewhere.com>",
+ )
message2 = namedtuple("MailMessage", [])
message2.from_ = "me@localhost.com"
- message2.from_values = {"name": "", "email": "fake@localhost.com"}
+ message2.from_values = EmailAddress(
+ "",
+ "fake@localhost.com",
+ "",
+ )
me_localhost = Correspondent.objects.create(name=message2.from_)
someone_else = Correspondent.objects.create(name="someone else")
password="wrong",
)
- try:
+ with self.assertRaises(MailError) as context:
self.mail_account_handler.handle_mail_account(account)
- except MailError as e:
- self.assertTrue(str(e).startswith("Error while authenticating account"))
- else:
- self.fail("Should raise exception")
+ self.assertTrue(
+ str(context).startswith("Error while authenticating account"),
+ )
def test_error_skip_account(self):
account_faulty = MailAccount.objects.create(
"paperless_mail.management.commands.mail_fetcher.tasks.process_mail_accounts",
)
def test_mail_fetcher(self, m):
-
call_command("mail_fetcher")
m.assert_called_once()
@mock.patch("paperless_mail.tasks.MailAccountHandler.handle_mail_account")
def test_single_accounts(self, m):
-
MailAccount.objects.create(
name="A",
imap_server="A",