summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorDuda Dornelles <ddornell@thoughtworks.com>2014-08-26 19:11:01 -0300
committerDuda Dornelles <ddornell@thoughtworks.com>2014-08-26 19:11:01 -0300
commitcf3ea5411adb12dd1bdc12ec01a17b37d974c7c3 (patch)
tree52b203175aee472099efb29bb47033b870cc9a8d /service
parent6095a286a0298c10df3b7bfa163f2f5240b580cd (diff)
refactoring pixelatedMail constructor so we can have 'two' (from_dict and from_leap_mail)
Diffstat (limited to 'service')
-rw-r--r--service/pixelated/adapter/mail_service.py4
-rw-r--r--service/pixelated/adapter/pixelated_mail.py36
-rw-r--r--service/pixelated/bitmask_libraries/smtp.py1
-rw-r--r--service/test/adapter/pixelated_mail_test.py37
4 files changed, 56 insertions, 22 deletions
diff --git a/service/pixelated/adapter/mail_service.py b/service/pixelated/adapter/mail_service.py
index 54deb488..82925870 100644
--- a/service/pixelated/adapter/mail_service.py
+++ b/service/pixelated/adapter/mail_service.py
@@ -52,7 +52,7 @@ class MailService:
def mails(self, query):
mails = self.mailbox.messages or []
- mails = [PixelatedMail(mail) for mail in mails]
+ mails = [PixelatedMail.from_leap_mail(mail) for mail in mails]
return mails
def update_tags(self, mail_id, new_tags):
@@ -77,7 +77,7 @@ class MailService:
def mail(self, mail_id):
for message in self.mailbox.messages:
if message.getUID() == int(mail_id):
- return PixelatedMail(message)
+ return PixelatedMail.from_leap_mail(message)
def all_tags(self):
return self.tags
diff --git a/service/pixelated/adapter/pixelated_mail.py b/service/pixelated/adapter/pixelated_mail.py
index 081eb846..4169bb23 100644
--- a/service/pixelated/adapter/pixelated_mail.py
+++ b/service/pixelated/adapter/pixelated_mail.py
@@ -39,21 +39,27 @@ class PixelatedMail:
'\\Recent': 'inbox'
}
- def __init__(self, leap_mail):
- self.leap_mail = leap_mail
- self.body = leap_mail.bdoc.content['raw']
- self.headers = self.extract_headers()
- self.date = dateparser.parse(self.headers['date'])
- self.ident = leap_mail.getUID()
- self.status = self.extract_status()
- self.security_casing = {}
- self.tags = self.extract_tags()
-
- def extract_status(self):
+ def __init__(self):
+ pass
+
+ @staticmethod
+ def from_leap_mail(leap_mail):
+ mail = PixelatedMail()
+ mail.leap_mail = leap_mail
+ mail.body = leap_mail.bdoc.content['raw']
+ mail.headers = mail._extract_headers()
+ mail.date = dateparser.parse(mail.headers['date'])
+ mail.ident = leap_mail.getUID()
+ mail.status = mail._extract_status()
+ mail.security_casing = {}
+ mail.tags = mail._extract_tags()
+ return mail
+
+ def _extract_status(self):
flags = self.leap_mail.getFlags()
return [converted for flag, converted in self.LEAP_FLAGS_STATUSES.items() if flag in flags]
- def extract_headers(self):
+ def _extract_headers(self):
temporary_headers = {}
for header, value in self.leap_mail.hdoc.content['headers'].items():
temporary_headers[header.lower()] = value
@@ -61,7 +67,7 @@ class PixelatedMail:
temporary_headers['to'] = [temporary_headers['to']]
return temporary_headers
- def extract_tags(self):
+ def _extract_tags(self):
flags = self.leap_mail.getFlags()
tag_names = self._converted_tags(flags) + self._custom_tags(flags)
tags = []
@@ -95,3 +101,7 @@ class PixelatedMail:
'security_casing': self.security_casing,
'body': self.body
}
+
+ @staticmethod
+ def from_dict(mail_dict):
+ return PixelatedMail()
diff --git a/service/pixelated/bitmask_libraries/smtp.py b/service/pixelated/bitmask_libraries/smtp.py
index d82c7603..94214e4c 100644
--- a/service/pixelated/bitmask_libraries/smtp.py
+++ b/service/pixelated/bitmask_libraries/smtp.py
@@ -32,6 +32,7 @@ class LeapSmtp(object):
self._smtp_port = None
self._smtp_service = None
self._twisted_port = 10000 + int(random.random() * 5000)
+ print "## SMTP port: " + str(self._twisted_port)
def smtp_info(self):
return ('localhost', LeapSmtp.SMTP_PORT)
diff --git a/service/test/adapter/pixelated_mail_test.py b/service/test/adapter/pixelated_mail_test.py
index b0e2f9d2..308424e0 100644
--- a/service/test/adapter/pixelated_mail_test.py
+++ b/service/test/adapter/pixelated_mail_test.py
@@ -24,29 +24,52 @@ import test_helper
class TestPixelatedMail(unittest.TestCase):
def test_leap_recent_flag_is_translated_to_inbox_tag(self):
- pixelated_mail = PixelatedMail(test_helper.leap_mail(leap_flags=['\\Recent']))
+ pixelated_mail = PixelatedMail.from_leap_mail(test_helper.leap_mail(leap_flags=['\\Recent']))
self.assertIn(Tag('inbox'), pixelated_mail.tags)
def test_leap_deleted_flag_is_translated_to_trash_tag(self):
- pixelated_mail = PixelatedMail(test_helper.leap_mail(leap_flags=['\\Deleted']))
+ pixelated_mail = PixelatedMail.from_leap_mail(test_helper.leap_mail(leap_flags=['\\Deleted']))
self.assertIn(Tag('trash'), pixelated_mail.tags)
def test_leap_draft_flag_is_translated_to_draft_tag(self):
- pixelated_mail = PixelatedMail(test_helper.leap_mail(leap_flags=['\\Draft']))
+ pixelated_mail = PixelatedMail.from_leap_mail(test_helper.leap_mail(leap_flags=['\\Draft']))
self.assertIn(Tag('drafts'), pixelated_mail.tags)
def test_leap_seen_flag_is_translated_to_read_status(self):
- pixelated_mail = PixelatedMail(test_helper.leap_mail(leap_flags=['\\Seen']))
+ pixelated_mail = PixelatedMail.from_leap_mail(test_helper.leap_mail(leap_flags=['\\Seen']))
self.assertIn('read', pixelated_mail.status)
def test_leap_answered_flag_is_translated_to_replied_status(self):
- pixelated_mail = PixelatedMail(test_helper.leap_mail(leap_flags=['\\Answered']))
+ pixelated_mail = PixelatedMail.from_leap_mail(test_helper.leap_mail(leap_flags=['\\Answered']))
self.assertIn('replied', pixelated_mail.status)
def test_leap_flags_that_are_custom_tags_are_handled(self):
- pixelated_mail = PixelatedMail(test_helper.leap_mail(extra_flags=['tag_work']))
+ pixelated_mail = PixelatedMail.from_leap_mail(test_helper.leap_mail(extra_flags=['tag_work']))
self.assertIn(Tag('work'), pixelated_mail.tags)
def test_custom_tags_containing_our_prefix_are_handled(self):
- pixelated_mail = PixelatedMail(test_helper.leap_mail(extra_flags=['tag_tag_work_tag_']))
+ pixelated_mail = PixelatedMail.from_leap_mail(test_helper.leap_mail(extra_flags=['tag_tag_work_tag_']))
self.assertIn(Tag('tag_work_tag_'), pixelated_mail.tags)
+
+ def from_dict(self):
+ mail_dict = {
+ 'body': 'Este \xe9 o corpo',
+ 'header': {
+ 'cc': ['cc@pixelated.com'],
+ 'to': ['to@pixelated.com'],
+ 'subject': 'Oi',
+ 'bcc': ['bcc@pixelated.com']
+ },
+ 'ident': '',
+ 'tags': ['sent']
+ }
+
+ mail = PixelatedMail.from_dict(mail_dict)
+
+ self.assertEqual(mail.headers.cc, ['cc@pixelated.com'])
+ self.assertEqual(mail.headers.to, ['to@pixelated.com'])
+ self.assertEqual(mail.headers.bcc, ['bcc@pixelated.com'])
+ self.assertEqual(mail.headers.subject, 'Oi')
+ self.assertEqual(mail.ident, '')
+ self.assertEqual(mail.tags, ['sent'])
+ self.assertEqual(mail.body, 'Este \xe9 o corpo')