aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xarchive_folder.py15
-rw-r--r--test/test_email_server.py28
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))