diff options
author | Matěj Cepl <mcepl@cepl.eu> | 2018-04-21 22:55:05 +0200 |
---|---|---|
committer | Matěj Cepl <mcepl@cepl.eu> | 2018-04-21 23:03:51 +0200 |
commit | 75be2c284dc0647765046b55655ecd0dbb64f131 (patch) | |
tree | b1cff04f8f0f9a28225db70f5791b8d413dc0974 | |
parent | 26daa1452153ba503f8b5b941f1574275346ecfd (diff) | |
download | imapArch-75be2c284dc0647765046b55655ecd0dbb64f131.tar.gz |
Functioning tests of EmailServer creation with mock.
-rwxr-xr-x | archive_folder.py | 15 | ||||
-rw-r--r-- | test/test_email_server.py | 28 |
2 files changed, 22 insertions, 21 deletions
diff --git a/archive_folder.py b/archive_folder.py index e321dfe..744fcba 100755 --- a/archive_folder.py +++ b/archive_folder.py @@ -189,30 +189,21 @@ class EmailServer(object): config = self.get_config() acc_name = serverKey if serverKey is not None \ else config['general']['account'] - if config.has_section(acc_name): - self.cfg = dict(config.items(acc_name)) - else: - self.cfg = { - 'host': 'localhost', - 'username': 'unknown', - 'password': 'verysecret' - } + self.cfg = dict(config.items(acc_name)) self.archive_root = archive_root self.__box = self.__login(**self.cfg) def __login(self, host='localhost', username=None, password=None, ssl=None): box = imaplib.IMAP4_SSL(host=host) - ok, data = box.login(username, password) + res = box.login(username, password) + ok, data = res if ok != 'OK': raise ServerError('Cannot login with credentials %s' % str((host, username, password,))) ok, data = box.capability() - log.debug('data = %s', data) capas = data[0].decode() - log.debug('capas = %s', capas) box.features_present = Capas._make(['MOVE' in capas, 'UIDPLUS' in capas]) - log.debug('features_present = %s', box.features_present) @staticmethod @functools.lru_cache() diff --git a/test/test_email_server.py b/test/test_email_server.py index 3be9824..8ff8788 100644 --- a/test/test_email_server.py +++ b/test/test_email_server.py @@ -1,17 +1,27 @@ +import logging import unittest from unittest import mock import archive_folder +log = logging.getLogger('test') class TestEmailServer(unittest.TestCase): - - # Ok, data = box.login(username, password) - # Ok, data = box.capability() - @mock.patch.object(archive_folder.imaplib, 'IMAP4_SSL', autospec=True) - def test_server_initialization(self, mock_imapobj): - mock_imapobj.login.return_value = ('OK', 'FAKED success') - host = 'fakehost' - box = archive_folder.EmailServer(host, 'FakeArchive') - mock_imapobj.assert_called_with(host) + @mock.patch.object(archive_folder.configparser, 'ConfigParser', autospec=True) + def test_server_initialization(self, mock_configparser, mock_imapobj): + mock_imapobj().login.return_value = ('OK', 'FAKED success') + mock_imapobj().capability.return_value = ( + 'OK', [b'IMAP4rev1 LITERAL+ UIDPLUS'] + ) + mock_configparser().items.return_value = [ + ("host", 'fakehost'), + ('ssl', True), + ('username', 'fakeuser'), + ('password', 'veryverysecret') + ] + box = archive_folder.EmailServer('fakeuser@fakehost', 'FakeArchive') + mock_imapobj.assert_called_with(host='fakehost') + mock_imapobj().login.assert_called_once_with('fakeuser', 'veryverysecret') + mock_imapobj().capability.assert_called_once_with() + self.assertEqual(mock_imapobj().features_present, (False, True)) |