60 lines
2.3 KiB
Python
60 lines
2.3 KiB
Python
import lacre.text
|
|
import sys
|
|
from email import message_from_binary_file
|
|
from email.message import EmailMessage
|
|
from email.policy import SMTPUTF8
|
|
|
|
import unittest
|
|
|
|
class LacreTextTest(unittest.TestCase):
|
|
def test_parse_content_type_without_charset(self):
|
|
(mtype, mcharset) = lacre.text.parse_content_type('text/plain')
|
|
self.assertEqual(mtype, 'text/plain')
|
|
self.assertEqual(mcharset, sys.getdefaultencoding())
|
|
|
|
def test_parse_content_type_with_charset(self):
|
|
(mtype, mcharset) = lacre.text.parse_content_type('text/plain; charset="UTF-8"')
|
|
self.assertEqual(mtype, 'text/plain')
|
|
self.assertEqual(mcharset, '"UTF-8"')
|
|
|
|
def test_parse_content_type_with_other_attributes(self):
|
|
(mtype, mcharset) = lacre.text.parse_content_type('text/plain; some-param="Some Value"')
|
|
self.assertEqual(mtype, 'text/plain')
|
|
self.assertEqual(mcharset, sys.getdefaultencoding())
|
|
|
|
def test_parse_content_type_with_several_attributes(self):
|
|
(mtype, mcharset) = lacre.text.parse_content_type('text/plain; charset="UTF-8"; some-param="Some Value"')
|
|
self.assertEqual(mtype, 'text/plain')
|
|
self.assertEqual(mcharset, '"UTF-8"')
|
|
|
|
def test_parse_email_without_delimiter(self):
|
|
addr = "Some.Name@example.com"
|
|
(addr2, topic) = lacre.text.parse_delimiter(addr)
|
|
self.assertEqual(addr2, "Some.Name@example.com")
|
|
self.assertEqual(topic, None)
|
|
|
|
def test_parse_email_with_delimiter(self):
|
|
addr = "Some.Name+some-topic@example.com"
|
|
(addr2, topic) = lacre.text.parse_delimiter(addr)
|
|
self.assertEqual(addr2, "Some.Name@example.com")
|
|
self.assertEqual(topic, "some-topic")
|
|
|
|
def test_pgp_inline_recognised(self):
|
|
msg = None
|
|
with open('test/msgin/ed2ed.msg', 'rb') as f:
|
|
msg = message_from_binary_file(f, policy=SMTPUTF8)
|
|
|
|
body = msg.get_payload()
|
|
|
|
self.assertIn(lacre.text.PGP_BEGIN_S, body)
|
|
self.assertIn(lacre.text.PGP_END_S, body)
|
|
self.assertTrue(lacre.text.is_payload_pgp_inline(body))
|
|
|
|
def test_pgp_marker_mentioned(self):
|
|
msg = None
|
|
with open('test/msgin/with-markers2clear.msg', 'rb') as f:
|
|
msg = message_from_binary_file(f, policy=SMTPUTF8)
|
|
|
|
body = msg.get_payload()
|
|
|
|
self.assertFalse(lacre.text.is_payload_pgp_inline(body))
|