Esempio n. 1
0
    def test_remove_next_part_from_content(self):
        with open(get_test_file("pipermail_nextpart.txt")) as email_file:
            msg = email.message_from_file(email_file, _class=Message)
        scrubber = Scrubber("*****@*****.**", msg)
        contents, attachments = scrubber.scrub()

        self.failIf("-------------- next part --------------" in contents)
Esempio n. 2
0
    def test_remove_next_part_from_content(self):
        with open(get_test_file("pipermail_nextpart.txt")) as email_file:
            msg = email.message_from_file(email_file, _class=Message)
        scrubber = Scrubber("*****@*****.**", msg)
        contents, attachments = scrubber.scrub()

        self.failIf("-------------- next part --------------" in contents)
Esempio n. 3
0
 def test_attachment_2(self):
     with open(get_test_file("attachment-2.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     scrubber = Scrubber("*****@*****.**", msg)
     contents, attachments = scrubber.scrub()
     self.assertEqual(len(attachments), 1)
     self.assertEqual(
         attachments[0],
         (
             3,
             "signature.asc",
             "application/pgp-signature",
             None,
             "-----BEGIN PGP SIGNATURE-----\r\nVersion: GnuPG v1.4.12 "
             "(GNU/Linux)\r\nComment: Using GnuPG with Mozilla - "
             "http://www.enigmail.net/\r\n\r\niEYEARECAAYFAlBhm3oACgkQhmBj"
             "z394AnmMnQCcC+6tWcqE1dPQmIdRbLXgKGVp\r\nEeUAn2OqtaXaXaQV7rx+"
             "SmOldmSzcFw4\r\n=OEJv\r\n-----END PGP SIGNATURE-----\r\n",
         ),
     )
     self.assertEqual(
         contents,
         u"This is a test message\r\nNon-ascii chars: Hofm\xfchlgasse\r\n"
         u"\n-- \ndevel mailing list\[email protected]\n"
         u"https://admin.fedoraproject.org/mailman/listinfo/devel\n",
     )
Esempio n. 4
0
 def test_html_only_email(self):
     # This email only has an HTML part, thus the scrubbed content will be
     # empty. It should be an unicode empty string, not str.
     with open(get_test_file("html-email-2.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     scrubber = Scrubber("*****@*****.**", msg)
     contents, attachments = scrubber.scrub()
     self.assertTrue(isinstance(contents, unicode),
         u"Scrubbed content should always be unicode")
Esempio n. 5
0
 def test_html_only_email(self):
     # This email only has an HTML part, thus the scrubbed content will be
     # empty. It should be an unicode empty string, not str.
     with open(get_test_file("html-email-2.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     scrubber = Scrubber("*****@*****.**", msg)
     contents, attachments = scrubber.scrub()
     self.assertTrue(isinstance(contents, unicode),
                     u"Scrubbed content should always be unicode")
Esempio n. 6
0
 def test_name_unicode(self):
     for num in range(1, 6):
         with open(get_test_file("attachment-%d.txt" % num)) as email_file:
             msg = email.message_from_file(email_file, _class=Message)
         scrubber = Scrubber("*****@*****.**", msg)
         contents, attachments = scrubber.scrub()
         for attachment in attachments:
             name = attachment[1]
             self.assertTrue(isinstance(name, unicode),
                             "attachment %r must be unicode" % name)
Esempio n. 7
0
 def test_non_ascii_payload(self):
     """Scrubber must handle non-ascii messages"""
     for enc in ["utf8", "iso8859"]:
         with open(get_test_file("payload-%s.txt" % enc)) as email_file:
             msg = email.message_from_file(email_file, _class=Message)
         scrubber = Scrubber("*****@*****.**", msg)
         contents, attachments = scrubber.scrub()
         self.assertTrue(isinstance(contents, unicode))
         self.assertEqual(contents, u'This message contains non-ascii '
                 u'characters:\n\xe9 \xe8 \xe7 \xe0 \xee \xef \xeb \u20ac\n')
Esempio n. 8
0
 def test_non_ascii_payload(self):
     """Scrubber must handle non-ascii messages"""
     for enc in ["utf8", "iso8859"]:
         with open(get_test_file("payload-%s.txt" % enc)) as email_file:
             msg = email.message_from_file(email_file, _class=Message)
         scrubber = Scrubber("*****@*****.**", msg)
         contents, attachments = scrubber.scrub()
         self.assertTrue(isinstance(contents, unicode))
         self.assertEqual(contents, u'This message contains non-ascii '
                 u'characters:\n\xe9 \xe8 \xe7 \xe0 \xee \xef \xeb \u20ac\n')
Esempio n. 9
0
 def test_bad_content_type(self):
     """Scrubber must handle unknown content-types"""
     with open(get_test_file("payload-unknown.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     scrubber = Scrubber("*****@*****.**", msg)
     try:
         contents, attachments = scrubber.scrub()
     except LookupError, e:
         import traceback;
         print(traceback.format_exc())
         self.fail(e) # codec not found
Esempio n. 10
0
 def test_html_email_1(self):
     with open(get_test_file("html-email-1.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     scrubber = Scrubber("*****@*****.**", msg)
     contents, attachments = scrubber.scrub()
     self.assertEqual(len(attachments), 1)
     # HTML part
     self.assertEqual(attachments[0][0:4], (2, "attachment.html", "text/html", "iso-8859-1"))
     self.assertEqual(len(attachments[0][4]), 2723)
     # Scrubbed content
     self.assertEqual(contents, u"This is a test message\r\n" u"Non-ASCII chars: r\xe9ponse fran\xe7ais \n")
Esempio n. 11
0
 def test_bad_content_type(self):
     """Scrubber must handle unknown content-types"""
     with open(get_test_file("payload-unknown.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     scrubber = Scrubber("*****@*****.**", msg)
     try:
         contents, attachments = scrubber.scrub()
     except LookupError, e:
         import traceback
         print traceback.format_exc()
         self.fail(e)  # codec not found
Esempio n. 12
0
 def test_attachment_insert_order(self):
     """Attachments must not be inserted in the DB before the email"""
     # Re-activate foreign key support in sqlite
     self.store.db._connection._raw_connection.isolation_level = 'IMMEDIATE'
     self.store.db.execute("PRAGMA foreign_keys = ON")
     self.store.db._connection._raw_connection.execute("PRAGMA foreign_keys = ON")
     #print "*"*10, list(self.store.db.execute("PRAGMA foreign_keys"))
     #self.store = get_storm_store("postgres://*****:*****@localhost/kittystore_test")
     with open(get_test_file("attachment-1.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     try:
         self.store.add_to_list(FakeList("example-list"), msg)
     except IntegrityError, e:
         self.fail(e)
Esempio n. 13
0
 def test_html_email_1(self):
     with open(get_test_file("html-email-1.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     scrubber = Scrubber("*****@*****.**", msg)
     contents, attachments = scrubber.scrub()
     self.assertEqual(len(attachments), 1)
     # HTML part
     self.assertEqual(attachments[0][0:4],
             (2, "attachment.html", "text/html", "iso-8859-1"))
     self.assertEqual(len(attachments[0][4]), 2723)
     # Scrubbed content
     self.assertEqual(contents,
             u"This is a test message\r\n"
             u"Non-ASCII chars: r\xe9ponse fran\xe7ais \n")
Esempio n. 14
0
 def test_attachment_1(self):
     with open(get_test_file("attachment-1.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     scrubber = Scrubber("*****@*****.**", msg)
     contents, attachments = scrubber.scrub()
     self.assertEqual(len(attachments), 1)
     self.assertEqual(attachments[0],
                      (2, 'puntogil.vcf', 'text/x-vcard', "utf-8",
                       'begin:vcard\r\nfn:gil\r\nn:;gil\r\nversion:2.1\r\n'
                       'end:vcard\r\n\r\n'))
     self.assertEqual(
         contents, "This is a test message.\r\n\r\n"
         "\n-- \ndevel mailing list\[email protected]\n"
         "https://admin.fedoraproject.org/mailman/listinfo/devel\n")
Esempio n. 15
0
 def test_attachment_5(self):
     with open(get_test_file("attachment-5.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     scrubber = Scrubber("*****@*****.**", msg)
     contents, attachments = scrubber.scrub()
     self.assertEqual(len(attachments), 1)
     # text attachment
     self.assertEqual(attachments[0][0:4],
             (2, u"todo-djeuner.txt", "text/plain", "utf-8"))
     self.assertEqual(len(attachments[0][4]), 112)
     # Scrubbed content
     self.assertEqual(contents, u'This is a test, HTML message with '
             u'accented letters : \xe9 \xe8 \xe7 \xe0.\r\nAnd an '
             u'attachment with an accented filename\r\n\r\n\r\n\r\n')
Esempio n. 16
0
 def test_attachment_3(self):
     with open(get_test_file("attachment-3.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     scrubber = Scrubber("*****@*****.**", msg)
     contents, attachments = scrubber.scrub()
     self.assertEqual(len(attachments), 2)
     # HTML part
     self.assertEqual(attachments[0][0:4], (3, "attachment.html", "text/html", "iso-8859-1"))
     self.assertEqual(len(attachments[0][4]), 3134)
     # Image attachment
     self.assertEqual(attachments[1][0:4], (4, "GeoffreyRoucourt.jpg", "image/jpeg", None))
     self.assertEqual(len(attachments[1][4]), 282180)
     # Scrubbed content
     self.assertEqual(contents, u"This is a test message\r\n")
Esempio n. 17
0
 def test_attachment_insert_order(self):
     """Attachments must not be inserted in the DB before the email"""
     # Re-activate foreign key support in sqlite
     self.store.db._connection._raw_connection.isolation_level = 'IMMEDIATE'
     self.store.db.execute("PRAGMA foreign_keys = ON")
     self.store.db._connection._raw_connection.execute(
         "PRAGMA foreign_keys = ON")
     #print "*"*10, list(self.store.db.execute("PRAGMA foreign_keys"))
     #self.store = get_storm_store("postgres://*****:*****@localhost/kittystore_test")
     with open(get_test_file("attachment-1.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     try:
         self.store.add_to_list(FakeList("example-list"), msg)
     except IntegrityError, e:
         self.fail(e)
Esempio n. 18
0
 def test_attachment_5(self):
     with open(get_test_file("attachment-5.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     scrubber = Scrubber("*****@*****.**", msg)
     contents, attachments = scrubber.scrub()
     self.assertEqual(len(attachments), 1)
     # text attachment
     self.assertEqual(attachments[0][0:4],
             #(2, u"todo-déjeuner.txt", "text/plain", "utf-8"))
             (2, u"attachment.bin", "text/plain", "utf-8"))
     self.assertEqual(len(attachments[0][4]), 112)
     # Scrubbed content
     self.assertEqual(contents, u'This is a test, HTML message with '
             u'accented letters : \xe9 \xe8 \xe7 \xe0.\r\nAnd an '
             u'attachment with an accented filename\r\n\r\n\r\n\r\n')
Esempio n. 19
0
 def test_attachment_1(self):
     with open(get_test_file("attachment-1.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     scrubber = Scrubber("*****@*****.**", msg)
     contents, attachments = scrubber.scrub()
     self.assertEqual(len(attachments), 1)
     self.assertEqual(attachments[0], (
             2, 'puntogil.vcf', 'text/x-vcard', "utf-8",
             'begin:vcard\r\nfn:gil\r\nn:;gil\r\nversion:2.1\r\n'
             'end:vcard\r\n\r\n'))
     self.assertEqual(contents,
             "This is a test message.\r\n\r\n"
             "\n-- \ndevel mailing list\[email protected]\n"
             "https://admin.fedoraproject.org/mailman/listinfo/devel\n"
             )
Esempio n. 20
0
 def test_attachment_3(self):
     with open(get_test_file("attachment-3.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     scrubber = Scrubber("*****@*****.**", msg)
     contents, attachments = scrubber.scrub()
     self.assertEqual(len(attachments), 2)
     # HTML part
     self.assertEqual(attachments[0][0:4],
             (3, "attachment.html", "text/html", "iso-8859-1"))
     self.assertEqual(len(attachments[0][4]), 3134)
     # Image attachment
     self.assertEqual(attachments[1][0:4],
             (4, "GeoffreyRoucourt.jpg", "image/jpeg", None))
     self.assertEqual(len(attachments[1][4]), 282180)
     # Scrubbed content
     self.assertEqual(contents, u"This is a test message\r\n")
Esempio n. 21
0
 def test_attachment_2(self):
     with open(get_test_file("attachment-2.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     scrubber = Scrubber("*****@*****.**", msg)
     contents, attachments = scrubber.scrub()
     self.assertEqual(len(attachments), 1)
     self.assertEqual(attachments[0], (
             3, 'signature.asc', 'application/pgp-signature', None,
             '-----BEGIN PGP SIGNATURE-----\r\nVersion: GnuPG v1.4.12 '
             '(GNU/Linux)\r\nComment: Using GnuPG with Mozilla - '
             'http://www.enigmail.net/\r\n\r\niEYEARECAAYFAlBhm3oACgkQhmBj'
             'z394AnmMnQCcC+6tWcqE1dPQmIdRbLXgKGVp\r\nEeUAn2OqtaXaXaQV7rx+'
             'SmOldmSzcFw4\r\n=OEJv\r\n-----END PGP SIGNATURE-----\r\n'))
     self.assertEqual(contents,
             u"This is a test message\r\nNon-ascii chars: Hofm\xfchlgasse\r\n"
             u"\n-- \ndevel mailing list\[email protected]\n"
             u"https://admin.fedoraproject.org/mailman/listinfo/devel\n"
             )
Esempio n. 22
0
 def test_attachment_4(self):
     with open(get_test_file("attachment-4.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     scrubber = Scrubber("*****@*****.**", msg)
     contents, attachments = scrubber.scrub()
     self.assertEqual(len(attachments), 2)
     # HTML part
     self.assertEqual(attachments[0][0:4], (3, "attachment.html", "text/html", "iso-8859-1"))
     self.assertEqual(len(attachments[0][4]), 114)
     # text attachment
     self.assertEqual(
         attachments[1][0:4],
         # (4, u"todo-déjeuner.txt", "text/plain", "utf-8"))
         (4, u"todo-djeuner.txt", "text/plain", "utf-8"),
     )
     self.assertEqual(len(attachments[1][4]), 112)
     # Scrubbed content
     self.assertEqual(
         contents,
         u"This is a test, HTML message with "
         u"accented letters : \xe9 \xe8 \xe7 \xe0.\r\nAnd an "
         u"attachment with an accented filename\r\n",
     )
Esempio n. 23
0
 def test_ref_parsing(self):
     with open(get_test_file("strange-in-reply-to-header.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     ref_id = kittystore.utils.get_ref(msg)
     self.assertEqual(ref_id, "*****@*****.**")
Esempio n. 24
0
 def test_wrong_reply_to_format(self):
     with open(get_test_file("wrong-in-reply-to-header.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     ref_id = kittystore.utils.get_ref(msg)
     self.assertEqual(ref_id, None)
Esempio n. 25
0
 def test_ref_parsing(self):
     with open(
             get_test_file("strange-in-reply-to-header.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     ref_id = kittystore.utils.get_ref(msg)
     self.assertEqual(ref_id, "*****@*****.**")
Esempio n. 26
0
 def test_wrong_reply_to_format(self):
     with open(get_test_file("wrong-in-reply-to-header.txt")) as email_file:
         msg = email.message_from_file(email_file, _class=Message)
     ref_id = kittystore.utils.get_ref(msg)
     self.assertEqual(ref_id, None)