From 67301a23a14c943714ae1fd7bf6b4e21156e6ef5 Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Tue, 22 Aug 2017 16:15:08 -0700 Subject: tests/db/utils: Add some more coverage to add_signature_headers There are a couple of pieces of this function that aren't covered, including a bug. yay bugs. --- tests/db/utils_test.py | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'tests/db') diff --git a/tests/db/utils_test.py b/tests/db/utils_test.py index 26768597..ddb16786 100644 --- a/tests/db/utils_test.py +++ b/tests/db/utils_test.py @@ -21,6 +21,7 @@ import mock from alot import crypto from alot import helper from alot.db import utils +from alot.errors import GPGProblem from ..utilities import make_key, make_uid, TestCaseClassCleanup @@ -342,14 +343,14 @@ class TestAddSignatureHeaders(unittest.TestCase): def add_header(self, header, value): self.headers.append((header, value)) - def check(self, key, valid): + def check(self, key, valid, error_msg=u''): mail = self.FakeMail() with mock.patch('alot.db.utils.crypto.get_key', mock.Mock(return_value=key)), \ mock.patch('alot.db.utils.crypto.check_uid_validity', mock.Mock(return_value=valid)): - utils.add_signature_headers(mail, [mock.Mock(fpr='')], u'') + utils.add_signature_headers(mail, [mock.Mock(fpr='')], error_msg) return mail @@ -388,6 +389,31 @@ class TestAddSignatureHeaders(unittest.TestCase): self.assertIn( (utils.X_SIGNATURE_MESSAGE_HEADER, u'Valid: AndreĆ”'), mail.headers) + def test_error_message_unicode(self): + mail = self.check(mock.Mock(), mock.Mock(), u'error message') + self.assertIn((utils.X_SIGNATURE_VALID_HEADER, u'False'), mail.headers) + self.assertIn( + (utils.X_SIGNATURE_MESSAGE_HEADER, u'Invalid: error message'), + mail.headers) + + def test_error_message_bytes(self): + mail = self.check(mock.Mock(), mock.Mock(), b'error message') + self.assertIn((utils.X_SIGNATURE_VALID_HEADER, u'False'), mail.headers) + self.assertIn( + (utils.X_SIGNATURE_MESSAGE_HEADER, u'Invalid: error message'), + mail.headers) + + @unittest.expectedFailure + def test_get_key_fails(self): + mail = self.FakeMail() + with mock.patch('alot.db.utils.crypto.get_key', + mock.Mock(side_effect=GPGProblem(u'', 0))): + utils.add_signature_headers(mail, [mock.Mock(fpr='')], u'') + self.assertIn((utils.X_SIGNATURE_VALID_HEADER, u'False'), mail.headers) + self.assertIn( + (utils.X_SIGNATURE_MESSAGE_HEADER, u'Untrusted: '), + mail.headers) + class TestMessageFromFile(TestCaseClassCleanup): -- cgit v1.2.3