def test_index_is_initialized_with_mail_tags_if_empty(self): mail_one = PixelatedMail.from_soledad(*test_helper.leap_mail(uid=0, extra_headers={'X-Tags': '["tag_1"]'})) mail_two = PixelatedMail.from_soledad(*test_helper.leap_mail(uid=1, extra_headers={'X-Tags': '["tag_2"]'})) mails = [mail_one, mail_two] self.tag_service.load_index(mails) self.assertEqual(self.tag_service.all_tags(), {Tag('sent'), Tag('inbox'), Tag('drafts'), Tag('trash'), Tag('tag_1'), Tag('tag_2')})
def test_remove_message_from_mailbox(self): mail = PixelatedMail.from_soledad(*test_helper.leap_mail(), soledad_querier=self.querier) when(self.querier).mail(1).thenReturn(mail) self.mailbox.remove(1) verify(self.querier).remove_mail(mail)
def _build_mails_from_fdocs(self, fdocs_chash): if len(fdocs_chash) == 0: return [] fdocs_hdocs = [(f[0], self.soledad.get_from_index('by-type-and-contenthash', 'head', f[1])[0]) for f in fdocs_chash] fdocs_hdocs_phash = [(f[0], f[1], f[1].content.get('body')) for f in fdocs_hdocs] fdocs_hdocs_bdocs = [(f[0], f[1], self.soledad.get_from_index('by-type-and-payloadhash', 'cnt', f[2])[0]) for f in fdocs_hdocs_phash] return [PixelatedMail.from_soledad(*raw_mail, soledad_querier=self) for raw_mail in fdocs_hdocs_bdocs]
def test_parse_date_from_soledad_uses_date_header_if_available(self): leap_mail_date = 'Wed, 3 Sep 2014 12:36:17 -0300' leap_mail_date_in_iso_format = "2014-09-03T12:36:17-03:00" leap_mail = test_helper.leap_mail(headers={'date': leap_mail_date}) mail = PixelatedMail.from_soledad(*leap_mail, soledad_querier=self.querier) self.assertEqual(str(mail.headers['Date']), leap_mail_date_in_iso_format)
def test_update_tags_notifies_tag_service(self): db_path = '/tmp/test_update_tags_notifies_tag_service' TagService.instance = TagService(TagIndex(db_path)) mail = PixelatedMail.from_soledad(*test_helper.leap_mail(), soledad_querier=self.querier) mail.update_tags({'new_tag'}) self.assertIn(Tag('new_tag'), mail.tag_service.all_tags()) os.remove(db_path + '.db')
def test_parse_date_from_soledad_fallback_to_received_header_if_date_header_isnt_available(self): leap_mail_date = "Wed, 03 Sep 2014 13:11:15 -0300" leap_mail_date_in_iso_format = "2014-09-03T13:11:15-03:00" leap_mail_received_header = "by bitmask.local from 127.0.0.1 with ESMTP ;\n " + leap_mail_date leap_mail = test_helper.leap_mail(headers={'received': leap_mail_received_header}) mail = PixelatedMail.from_soledad(*leap_mail, soledad_querier=self.querier) self.assertEqual(str(mail.headers['Date']), leap_mail_date_in_iso_format)
def test_send_mail_sends_to_To_Cc_and_Bcc(self): headers = { 'To': ['*****@*****.**', '*****@*****.**'], 'Cc': ['*****@*****.**', '*****@*****.**'], 'Bcc': ['*****@*****.**', '*****@*****.**'] } mail = PixelatedMail.from_soledad(*test_helper.leap_mail(extra_headers=headers)) mail.to_smtp_format = lambda: "mail as smtp string" self.mail_sender.sendmail(mail) expected_recipients = ['*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**'] verify(self.smtp_client).sendmail(self.mail_address, expected_recipients, "mail as smtp string")
def mail(self, ident): fdoc = self.soledad.get_from_index('by-type-and-contenthash', 'flags', ident)[0] hdoc = self.soledad.get_from_index('by-type-and-contenthash', 'head', ident)[0] bdoc = self.soledad.get_from_index('by-type-and-payloadhash', 'cnt', hdoc.content['body'])[0] return PixelatedMail.from_soledad(fdoc, hdoc, bdoc, soledad_querier=self)
def test_mark_as_not_recent(self): mail = PixelatedMail.from_soledad(*test_helper.leap_mail(flags=['\\Recent']), soledad_querier=self.querier) mail.mark_as_not_recent() self.assertEquals(mail.fdoc.content['flags'], [])
def test_update_tags_return_a_set_with_the_current_tags(self): soledad_docs = test_helper.leap_mail(extra_headers={'X-tags': '["custom_1", "custom_2"]'}) pixelated_mail = PixelatedMail.from_soledad(*soledad_docs, soledad_querier=self.querier) current_tags = pixelated_mail.update_tags({'custom_1', 'custom_3'}) self.assertEquals({'custom_3', 'custom_1'}, current_tags)