⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_sb_pop3dnd.py

📁 用python实现的邮件过滤器
💻 PY
字号:
# Test sb_pop3dnd script.import sysimport emailimport timeimport threadimport imaplibimport unittestimport sb_test_supportsb_test_support.fix_sys_path()from spambayes import Dibblerfrom spambayes.Options import optionsfrom spambayes.classifier import Classifierfrom spambayes.message import SBHeaderMessagefrom sb_pop3dnd import IMAPMessage, DynamicIMAPMessage, IMAPFileMessagefrom sb_pop3dnd import IMAPFileMessageFactory# We borrow the dummy POP3 server that test_sb_server uses.# And also the test messages.from test_sb_server import TestListener, good1, spam1POP_PORT = 8110class IMAPMessageTest(unittest.TestCase):    def testIMAPMessage(self):        msg = IMAPMessage()        self.assertEqual(msg.date, None)        msg = IMAPMessage("fake date")        self.assertEqual(msg.date, "fake date")        for att in ["date", "deleted", "flagged", "seen", "draft",                    "recent", "answered"]:            self.assert_(att in msg.stored_attributes)        for flag in ["deleted", "answered", "flagged", "seen", "draft",                     "recent"]:            self.assertEqual(getattr(msg, flag), False)    def testGetAllHeaders(self):        msg = email.message_from_string(good1, _class=IMAPMessage)        correct_msg = email.message_from_string(good1)        # Without passing a list, we should get them all.        # We get them in lowercase, because this is a twisted        # requirement.        headers = msg.getHeaders(False)        for k, v in correct_msg.items():            self.assertEqual(headers[k.lower()], v)        # Should work the same with negate        headers = msg.getHeaders(True)        for k, v in correct_msg.items():            self.assertEqual(headers[k.lower()], v)            def testGetIndividualHeaders(self):        msg = email.message_from_string(good1, _class=IMAPMessage)        correct_msg = email.message_from_string(good1)        # We get them in lowercase, because this is a twisted        # requirement.  We pass them in uppercard, because this        # is a twisted requirement.  It's not called twisted for        # nothing!        headers = msg.getHeaders(False, "SUBJECT")        self.assertEqual(headers["subject"], correct_msg["Subject"])        # Negate should get all the other headers.        headers = msg.getHeaders(True, "SUBJECT")        self.assert_("subject" not in headers)        for k, v in correct_msg.items():            if k == "Subject":                continue            self.assertEqual(headers[k.lower()], v)    def testGetFlags(self):        msg = IMAPMessage()        all_flags = ["deleted", "answered", "flagged", "seen", "draft",                     "recent"]        for flag in all_flags:            setattr(msg, flag, True)        flags = list(msg.getFlags())        for flag in all_flags:            self.assert_("\\%s" % (flag.upper(),) in flags)        for flag in all_flags:            setattr(msg, flag, False)        flags = list(msg.getFlags())        self.assertEqual(flags, [])    def testGetInternalDate(self):        msg = IMAPMessage()        self.assertRaises(AssertionError, msg.getInternalDate)        msg = IMAPMessage("fake date")        self.assertEqual(msg.getInternalDate(), "fake date")    def testGetBodyFile(self):        msg = email.message_from_string(spam1, _class=IMAPMessage)        correct_msg = email.message_from_string(spam1)        body = msg.getBodyFile()        # Our messages are designed for transmittal, so have        # \r\n rather than \n as end-of-line.        self.assertEqual(body.read().replace('\r\n', '\n'),                         correct_msg.get_payload())    def testGetSize(self):        msg = email.message_from_string(spam1, _class=IMAPMessage)        correct_msg = email.message_from_string(spam1)        # Our messages are designed for transmittal, so have        # \r\n rather than \n as end-of-line.        self.assertEqual(msg.getSize(),                         len(correct_msg.as_string().replace('\n', '\r\n')))    def testGetUID(self):        msg = IMAPMessage()        msg.id = "fake id" # Heh        self.assertEqual(msg.getUID(), "fake id")    def testIsMultipart(self):        msg = IMAPMessage()        self.assertEqual(msg.isMultipart(), False)    def testGetSubPart(self):        msg = IMAPMessage()        self.assertRaises(NotImplementedError, msg.getSubPart, None)    def testClearFlags(self):        msg = IMAPMessage()        all_flags = ["deleted", "answered", "flagged", "seen", "draft",                     "recent"]        for flag in all_flags:            setattr(msg, flag, True)        msg.clear_flags()        for flag in all_flags:            self.assertEqual(getattr(msg, flag), False)    def testFlags(self):        msg = IMAPMessage()        all_flags = ["deleted", "answered", "flagged", "seen", "draft",                     "recent"]        for flag in all_flags:            setattr(msg, flag, True)        flags = list(msg.flags())        for flag in all_flags:            self.assert_("\\%s" % (flag.upper(),) in flags)        for flag in all_flags:            setattr(msg, flag, False)        flags = list(msg.flags())        self.assertEqual(flags, [])    def testTrain(self):        # XXX To do        pass    def testStructure(self):        # XXX To do        pass    def testBody(self):        msg = email.message_from_string(good1, _class=IMAPMessage)        correct_msg = email.message_from_string(good1)        body = msg.body()        # Our messages are designed for transmittal, so have        # \r\n rather than \n as end-of-line.        self.assertEqual(body.replace('\r\n', '\n'),                         correct_msg.get_payload())    def testHeaders(self):        msg = email.message_from_string(good1, _class=IMAPMessage)        correct_msg = email.message_from_string(good1)        headers = msg.headers()        correct_headers = "\r\b".join(["%s: %s" % (k, v) \                                       for k, v in correct_msg.items()])class DynamicIMAPMessageTest(unittest.TestCase):    def setUp(self):        def fakemsg(body=False, headers=False):            msg = []            if headers:                msg.append("Header: Fake")                if body:                    msg.append("\r\n")            if body:                msg.append("Fake Body")            return "\r\n".join(msg)        self.msg = DynamicIMAPMessage(fakemsg)    def testDate(self):        date = imaplib.Time2Internaldate(time.time())[1:-1]        self.assertEqual(self.msg.date, date)    def testLoad(self):        self.assertEqual(self.msg.as_string(),                         "Header: Fake\r\n\r\nFake Body")class IMAPFileMessageTest(unittest.TestCase):    def setUp(self):        self.msg = IMAPFileMessage("filename", "directory")    def testID(self):        self.assertEqual(self.msg.id, "filename")    def testDate(self):        date = imaplib.Time2Internaldate(time.time())[1:-1]        self.assertEqual(self.msg.date, date)class IMAPFileMessageFactoryTest(unittest.TestCase):    def testCreateNoContent(self):        factory = IMAPFileMessageFactory()        msg = factory.create("key", "directory")        self.assertEqual(msg.id, key)        self.assert_(isinstance(msg, type(IMAPFileMessage())))        def suite():    suite = unittest.TestSuite()    for cls in (IMAPMessageTest,                DynamicIMAPMessageTest,                IMAPFileMessageTest,               ):        suite.addTest(unittest.makeSuite(cls))    return suiteif __name__=='__main__':    def runTestServer():        import asyncore        asyncore.loop()    TestListener()    thread.start_new_thread(runTestServer, ())    sb_test_support.unittest_main(argv=sys.argv + ['suite'])

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -