diff options
author | Anton Khirnov <anton@khirnov.net> | 2021-01-30 14:12:33 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2021-01-30 14:12:33 +0100 |
commit | cd35ec5f89cff3ba8c7780209efa7e8b0628744d (patch) | |
tree | a5f21a0b08ab2ce8a182f6cce7283f15d8f14dea /tests/db | |
parent | 5dfe5a2831adbe3ec129d2ede1d9039739e98b71 (diff) |
db/envelope: move to a new module "mail"
It has nothing to do with the database.
Diffstat (limited to 'tests/db')
-rw-r--r-- | tests/db/test_envelope.py | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/tests/db/test_envelope.py b/tests/db/test_envelope.py deleted file mode 100644 index 0d46ba43..00000000 --- a/tests/db/test_envelope.py +++ /dev/null @@ -1,113 +0,0 @@ -# Copyright © 2017 Lucas Hoffmann -# Copyright © 2018 Dylan Baker -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -import email -import email.policy -import os -import tempfile -import unittest -from unittest import mock - -from alot.db import envelope - -SETTINGS = { - 'user_agent': 'agent', -} - -class TestEnvelope(unittest.TestCase): - - def _compare_content(self, first, second): - c1 = first.get_content().replace('\r\n', '\n') - c2 = second.get_content().replace('\r\n', '\n') - self.assertEqual(c1, c2) - - def assertEmailEqual(self, first, second): - with self.subTest('body'): - self.assertEqual(first.is_multipart(), second.is_multipart()) - if not first.is_multipart(): - self._compare_content(first, second) - else: - for f, s in zip(first.walk(), second.walk()): - if f.is_multipart() or s.is_multipart(): - self.assertEqual(first.is_multipart(), - second.is_multipart()) - else: - self._compare_content(f, s) - with self.subTest('headers'): - self.assertListEqual(first.values(), second.values()) - - def test_setitem_stores_text_unchanged(self): - "Just ensure that the value is set and unchanged" - e = envelope.Envelope() - e['Subject'] = 'sm\xf8rebr\xf8d' - self.assertEqual(e['Subject'], 'sm\xf8rebr\xf8d') - - def _test_mail(self, envelope): - mail = envelope.construct_mail() - raw = mail.as_bytes() - actual = email.message_from_bytes(raw, policy = mail.policy) - self.assertEmailEqual(mail, actual) - - @mock.patch('alot.db.envelope.settings', SETTINGS) - def test_construct_mail_simple(self): - """Very simple envelope with a To, From, Subject, and body.""" - headers = { - 'From': 'foo@example.com', - 'To': 'bar@example.com', - 'Subject': 'Test email', - } - e = envelope.Envelope(headers={k: [v] for k, v in headers.items()}, - bodytext='Test') - self._test_mail(e) - - @mock.patch('alot.db.envelope.settings', SETTINGS) - def test_construct_mail_with_attachment(self): - """Very simple envelope with a To, From, Subject, body and attachment. - """ - headers = { - 'From': 'foo@example.com', - 'To': 'bar@example.com', - 'Subject': 'Test email', - } - e = envelope.Envelope(headers={k: [v] for k, v in headers.items()}, - bodytext='Test') - with tempfile.NamedTemporaryFile(mode='wt', delete=False) as f: - f.write('blah') - self.addCleanup(os.unlink, f.name) - e.attach(f.name) - - self._test_mail(e) - - @mock.patch('alot.db.envelope.settings', SETTINGS) - def test_parse_template(self): - """Tests multi-line header and body parsing""" - raw = ( - 'From: foo@example.com\n' - 'To: bar@example.com,\n' - ' baz@example.com\n' - 'Subject: Fwd: Test email\n' - '\n' - 'Some body content: which is not a header.\n' - ) - envlp = envelope.Envelope() - envlp.parse_template(raw) - self.assertDictEqual(envlp.headers, { - 'From': ['foo@example.com'], - 'To': ['bar@example.com, baz@example.com'], - 'Subject': ['Fwd: Test email'] - }) - self.assertEqual(envlp.body, - 'Some body content: which is not a header.') |