fix(projekt-matching): store outgoing mail copies in Sent via IMAP append
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import email
|
||||
from email.message import EmailMessage
|
||||
|
||||
import pytest
|
||||
from unittest import mock
|
||||
@@ -62,7 +63,8 @@ def test_fetch_raises_on_malformed_ok_response():
|
||||
|
||||
|
||||
def test_send_mail_starttls():
|
||||
with mock.patch("projektmatch.mailer.smtplib.SMTP") as smtp:
|
||||
with mock.patch("projektmatch.mailer.smtplib.SMTP") as smtp, \
|
||||
mock.patch("projektmatch.mailer.append_sent") as append_sent:
|
||||
server = smtp.return_value.__enter__.return_value
|
||||
mailer.send_mail("u@x", "pw", "to@x", "Subj", "Body")
|
||||
server.starttls.assert_called_once()
|
||||
@@ -71,3 +73,30 @@ def test_send_mail_starttls():
|
||||
assert msg["Subject"] == "Subj" and msg["To"] == "to@x"
|
||||
assert msg["Date"]
|
||||
assert msg["Message-ID"].endswith("@destengs.com>")
|
||||
append_sent.assert_called_once_with("u@x", "pw", msg)
|
||||
|
||||
|
||||
def test_send_mail_survives_append_failure():
|
||||
with mock.patch("projektmatch.mailer.smtplib.SMTP") as smtp, \
|
||||
mock.patch("projektmatch.mailer.append_sent",
|
||||
side_effect=OSError("imap down")):
|
||||
mailer.send_mail("u@x", "pw", "to@x", "Subj", "Body")
|
||||
|
||||
|
||||
def test_append_sent_uses_special_use_folder():
|
||||
conn = mock.Mock()
|
||||
conn.list.return_value = ("OK", [
|
||||
b'(\\HasNoChildren) "." "INBOX"',
|
||||
b'(\\HasNoChildren \\Sent) "." "Sent"'])
|
||||
msg = EmailMessage()
|
||||
msg["Subject"] = "Subj"
|
||||
msg.set_content("Body")
|
||||
|
||||
mailer.append_sent("u@x", "pw", msg, conn=conn)
|
||||
|
||||
args = conn.append.call_args.args
|
||||
assert args[0] == "Sent"
|
||||
assert "\\Seen" in args[1]
|
||||
assert args[3] == msg.as_bytes()
|
||||
conn.login.assert_not_called()
|
||||
conn.logout.assert_not_called()
|
||||
|
||||
Reference in New Issue
Block a user