summaryrefslogtreecommitdiff
path: root/tests/db
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2021-01-30 14:12:33 +0100
committerAnton Khirnov <anton@khirnov.net>2021-01-30 14:12:33 +0100
commitcd35ec5f89cff3ba8c7780209efa7e8b0628744d (patch)
treea5f21a0b08ab2ce8a182f6cce7283f15d8f14dea /tests/db
parent5dfe5a2831adbe3ec129d2ede1d9039739e98b71 (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.py113
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.')