示例#1
0
	def setUp(self):

        BaseIMAPFilterTest.setUp(self)

        self.msg = IMAPMessage()

        self.msg.imap_server = self.imap
class IMAPMessageTest(BaseIMAPFilterTest):
    def setUp(self):
        BaseIMAPFilterTest.setUp(self)
        self.msg = IMAPMessage()
        self.msg.imap_server = self.imap

    # These tests might fail if more than one second passes
    # between the call and the assert.  We could make it more robust,
    # or you could just run this on a faster machine, like me <wink>.
    def test_extract_time_no_date(self):
        date = self.msg.extractTime()
        self.assertEqual(date, imaplib.Time2Internaldate(time.time()))
    def test_extract_time_date(self):
        self.msg["Date"] = "Wed, 19 May 2004 20:05:15 +1200"
        date = self.msg.extractTime()
        self.assertEqual(date, '"19-May-2004 20:05:15 +1200"')
    def test_extract_time_bad_date(self):
        self.msg["Date"] = "Mon, 06 May 0102 10:51:16 -0100"
        date = self.msg.extractTime()
        self.assertEqual(date, imaplib.Time2Internaldate(time.time()))

    def test_as_string_invalid(self):
        content = "This is example content.\nThis is more\r\n"
        self.msg.invalid = True
        self.msg.invalid_content = content
        as_string = self.msg.as_string()
        self.assertEqual(self.msg._force_CRLF(content), as_string)

    def testMoveTo(self):
        fol1 = "Folder1"
        fol2 = "Folder2"
        self.msg.MoveTo(fol1)
        self.assertEqual(self.msg.folder, fol1)
        self.msg.MoveTo(fol2)
        self.assertEqual(self.msg.previous_folder, fol1)
        self.assertEqual(self.msg.folder, fol2)

    def test_get_full_message(self):
        self.assertRaises(AssertionError, self.msg.get_full_message)
        self.msg.id = "unittest"
        self.assertRaises(AttributeError, self.msg.get_full_message)

        self.msg.imap_server.login(IMAP_USERNAME, IMAP_PASSWORD)
        self.msg.imap_server.select()
        response = self.msg.imap_server.fetch(1, "UID")
        self.assertEqual(response[0], "OK")
        self.msg.uid = response[1][0][7:-1]
        self.msg.folder = IMAPFolder("Inbox", self.msg.imap_server, None)

        new_msg = self.msg.get_full_message()
        self.assertEqual(new_msg.folder, self.msg.folder)
        self.assertEqual(new_msg.previous_folder, self.msg.previous_folder)
        self.assertEqual(new_msg.uid, self.msg.uid)
        self.assertEqual(new_msg.id, self.msg.id)
        self.assertEqual(new_msg.rfc822_key, self.msg.rfc822_key)
        self.assertEqual(new_msg.rfc822_command, self.msg.rfc822_command)
        self.assertEqual(new_msg.imap_server, self.msg.imap_server)
        id_header = options["Headers", "mailid_header_name"]
        self.assertEqual(new_msg[id_header], self.msg.id)

        new_msg2 = new_msg.get_full_message()
        # These should be the same object, not just equal.
        self.assert_(new_msg is new_msg2)

    def test_get_bad_message(self):
        self.msg.id = "unittest"
        self.msg.imap_server.login(IMAP_USERNAME, IMAP_PASSWORD)
        self.msg.imap_server.select()
        self.msg.uid = 103 # id of malformed message in dummy server
        self.msg.folder = IMAPFolder("Inbox", self.msg.imap_server, None)
        print "\nWith email package versions less than 3.0, you should " \
              "see an error parsing the message."
        new_msg = self.msg.get_full_message()
        # With Python < 2.4 (i.e. email < 3.0) we get an exception
        # header.  With more recent versions, we get a defects attribute.
        # XXX I can't find a message that generates a defect!  Until
        # message 103 is replaced with one that does, this will fail with
        # Python 2.4/email 3.0.
        has_header = new_msg.as_string().find("X-Spambayes-Exception: ") != -1
        has_defect = hasattr(new_msg, "defects") and len(new_msg.defects) > 0
        self.assert_(has_header or has_defect)

    def test_get_memory_error_message(self):
        # XXX Figure out a way to trigger a memory error - but not in
        # the fake IMAP server, in imaplib, or our IMAP class.
        pass

    def test_Save(self):
        # XXX To-do
        pass
示例#3
0
class IMAPMessageTest(BaseIMAPFilterTest):
    def setUp(self):
        BaseIMAPFilterTest.setUp(self)
        self.msg = IMAPMessage()
        self.msg.imap_server = self.imap
    def test_extract_time_no_date(self):
        date = self.msg.extractTime()
        self.assertEqual(date, imaplib.Time2Internaldate(time.time()))
    def test_extract_time_date(self):
        self.msg["Date"] = "Wed, 19 May 2004 20:05:15 +1200"
        date = self.msg.extractTime()
        self.assertEqual(date, '"19-May-2004 20:05:15 +1200"')
    def test_extract_time_bad_date(self):
        self.msg["Date"] = "Mon, 06 May 0102 10:51:16 -0100"
        date = self.msg.extractTime()
        self.assertEqual(date, imaplib.Time2Internaldate(time.time()))
    def test_as_string_invalid(self):
        content = "This is example content.\nThis is more\r\n"
        self.msg.invalid = True
        self.msg.invalid_content = content
        as_string = self.msg.as_string()
        self.assertEqual(self.msg._force_CRLF(content), as_string)
    def testMoveTo(self):
        fol1 = "Folder1"
        fol2 = "Folder2"
        self.msg.MoveTo(fol1)
        self.assertEqual(self.msg.folder, fol1)
        self.msg.MoveTo(fol2)
        self.assertEqual(self.msg.previous_folder, fol1)
        self.assertEqual(self.msg.folder, fol2)
    def test_get_full_message(self):
        self.assertRaises(AssertionError, self.msg.get_full_message)
        self.msg.id = "unittest"
        self.assertRaises(AttributeError, self.msg.get_full_message)
        self.msg.imap_server.login(IMAP_USERNAME, IMAP_PASSWORD)
        self.msg.imap_server.select()
        response = self.msg.imap_server.fetch(1, "UID")
        self.assertEqual(response[0], "OK")
        self.msg.uid = response[1][0][7:-1]
        self.msg.folder = IMAPFolder("Inbox", self.msg.imap_server, None)
        new_msg = self.msg.get_full_message()
        self.assertEqual(new_msg.folder, self.msg.folder)
        self.assertEqual(new_msg.previous_folder, self.msg.previous_folder)
        self.assertEqual(new_msg.uid, self.msg.uid)
        self.assertEqual(new_msg.id, self.msg.id)
        self.assertEqual(new_msg.rfc822_key, self.msg.rfc822_key)
        self.assertEqual(new_msg.rfc822_command, self.msg.rfc822_command)
        self.assertEqual(new_msg.imap_server, self.msg.imap_server)
        id_header = options["Headers", "mailid_header_name"]
        self.assertEqual(new_msg[id_header], self.msg.id)
        new_msg2 = new_msg.get_full_message()
        self.assert_(new_msg is new_msg2)
    def test_get_bad_message(self):
        self.msg.id = "unittest"
        self.msg.imap_server.login(IMAP_USERNAME, IMAP_PASSWORD)
        self.msg.imap_server.select()
        self.msg.uid = 103 # id of malformed message in dummy server
        self.msg.folder = IMAPFolder("Inbox", self.msg.imap_server, None)
        print "\nWith email package versions less than 3.0, you should " \
              "see an error parsing the message."
        new_msg = self.msg.get_full_message()
        has_header = new_msg.as_string().find("X-Spambayes-Exception: ") != -1
        has_defect = hasattr(new_msg, "defects") and len(new_msg.defects) > 0
        self.assert_(has_header or has_defect)
    def test_get_memory_error_message(self):
        pass
    def test_Save(self):
        pass
示例#4
0
 def setUp(self):
     BaseIMAPFilterTest.setUp(self)
     self.msg = IMAPMessage()
     self.msg.imap_server = self.imap
示例#5
0
class IMAPMessageTest(BaseIMAPFilterTest):
    def setUp(self):
        BaseIMAPFilterTest.setUp(self)
        self.msg = IMAPMessage()
        self.msg.imap_server = self.imap

    # These tests might fail if more than one second passes
    # between the call and the assert.  We could make it more robust,
    # or you could just run this on a faster machine, like me <wink>.
    def test_extract_time_no_date(self):
        date = self.msg.extractTime()
        self.assertEqual(date, imaplib.Time2Internaldate(time.time()))

    def test_extract_time_date(self):
        self.msg["Date"] = "Wed, 19 May 2004 20:05:15 +1200"
        date = self.msg.extractTime()
        self.assertEqual(date, '"19-May-2004 20:05:15 +1200"')

    def test_extract_time_bad_date(self):
        self.msg["Date"] = "Mon, 06 May 0102 10:51:16 -0100"
        date = self.msg.extractTime()
        self.assertEqual(date, imaplib.Time2Internaldate(time.time()))

    def test_as_string_invalid(self):
        content = "This is example content.\nThis is more\r\n"
        self.msg.invalid = True
        self.msg.invalid_content = content
        as_string = self.msg.as_string()
        self.assertEqual(self.msg._force_CRLF(content), as_string)

    def testMoveTo(self):
        fol1 = "Folder1"
        fol2 = "Folder2"
        self.msg.MoveTo(fol1)
        self.assertEqual(self.msg.folder, fol1)
        self.msg.MoveTo(fol2)
        self.assertEqual(self.msg.previous_folder, fol1)
        self.assertEqual(self.msg.folder, fol2)

    def test_get_full_message(self):
        self.assertRaises(AssertionError, self.msg.get_full_message)
        self.msg.id = "unittest"
        self.assertRaises(AttributeError, self.msg.get_full_message)

        self.msg.imap_server.login(IMAP_USERNAME, IMAP_PASSWORD)
        self.msg.imap_server.select()
        response = self.msg.imap_server.fetch(1, "UID")
        self.assertEqual(response[0], "OK")
        self.msg.uid = response[1][0][7:-1]
        self.msg.folder = IMAPFolder("Inbox", self.msg.imap_server, None)

        new_msg = self.msg.get_full_message()
        self.assertEqual(new_msg.folder, self.msg.folder)
        self.assertEqual(new_msg.previous_folder, self.msg.previous_folder)
        self.assertEqual(new_msg.uid, self.msg.uid)
        self.assertEqual(new_msg.id, self.msg.id)
        self.assertEqual(new_msg.rfc822_key, self.msg.rfc822_key)
        self.assertEqual(new_msg.rfc822_command, self.msg.rfc822_command)
        self.assertEqual(new_msg.imap_server, self.msg.imap_server)
        id_header = options["Headers", "mailid_header_name"]
        self.assertEqual(new_msg[id_header], self.msg.id)

        new_msg2 = new_msg.get_full_message()
        # These should be the same object, not just equal.
        self.assert_(new_msg is new_msg2)

    def test_get_bad_message(self):
        self.msg.id = "unittest"
        self.msg.imap_server.login(IMAP_USERNAME, IMAP_PASSWORD)
        self.msg.imap_server.select()
        self.msg.uid = 103  # id of malformed message in dummy server
        self.msg.folder = IMAPFolder("Inbox", self.msg.imap_server, None)
        print "\nWith email package versions less than 3.0, you should " \
              "see an error parsing the message."
        new_msg = self.msg.get_full_message()
        # With Python < 2.4 (i.e. email < 3.0) we get an exception
        # header.  With more recent versions, we get a defects attribute.
        # XXX I can't find a message that generates a defect!  Until
        # message 103 is replaced with one that does, this will fail with
        # Python 2.4/email 3.0.
        has_header = new_msg.as_string().find("X-Spambayes-Exception: ") != -1
        has_defect = hasattr(new_msg, "defects") and len(new_msg.defects) > 0
        self.assert_(has_header or has_defect)

    def test_get_memory_error_message(self):
        # XXX Figure out a way to trigger a memory error - but not in
        # the fake IMAP server, in imaplib, or our IMAP class.
        pass

    def test_Save(self):
        # XXX To-do
        pass
示例#6
0
class  IMAPMessageTest (BaseIMAPFilterTest) :
	def setUp(self):

        BaseIMAPFilterTest.setUp(self)

        self.msg = IMAPMessage()

        self.msg.imap_server = self.imap
 def test_extract_time_no_date(self):

        date = self.msg.extractTime()

        self.assertEqual(date, imaplib.Time2Internaldate(time.time()))
 def test_extract_time_date(self):

        self.msg["Date"] = "Wed, 19 May 2004 20:05:15 +1200"

        date = self.msg.extractTime()

        self.assertEqual(date, '"19-May-2004 20:05:15 +1200"')
 def test_extract_time_bad_date(self):

        self.msg["Date"] = "Mon, 06 May 0102 10:51:16 -0100"

        date = self.msg.extractTime()

        self.assertEqual(date, imaplib.Time2Internaldate(time.time()))
 def test_as_string_invalid(self):

        content = "This is example content.\nThis is more\r\n"

        self.msg.invalid = True

        self.msg.invalid_content = content

        as_string = self.msg.as_string()

        self.assertEqual(self.msg._force_CRLF(content), as_string)
 def testMoveTo(self):

        fol1 = "Folder1"

        fol2 = "Folder2"

        self.msg.MoveTo(fol1)

        self.assertEqual(self.msg.folder, fol1)

        self.msg.MoveTo(fol2)

        self.assertEqual(self.msg.previous_folder, fol1)

        self.assertEqual(self.msg.folder, fol2)
 def test_get_full_message(self):

        self.assertRaises(AssertionError, self.msg.get_full_message)

        self.msg.id = "unittest"

        self.assertRaises(AttributeError, self.msg.get_full_message)

        self.msg.imap_server.login(IMAP_USERNAME, IMAP_PASSWORD)

        self.msg.imap_server.select()

        response = self.msg.imap_server.fetch(1, "UID")

        self.assertEqual(response[0], "OK")

        self.msg.uid = response[1][0][7:-1]

        self.msg.folder = IMAPFolder("Inbox", self.msg.imap_server, None)

        new_msg = self.msg.get_full_message()

        self.assertEqual(new_msg.folder, self.msg.folder)

        self.assertEqual(new_msg.previous_folder, self.msg.previous_folder)

        self.assertEqual(new_msg.uid, self.msg.uid)

        self.assertEqual(new_msg.id, self.msg.id)

        self.assertEqual(new_msg.rfc822_key, self.msg.rfc822_key)

        self.assertEqual(new_msg.rfc822_command, self.msg.rfc822_command)

        self.assertEqual(new_msg.imap_server, self.msg.imap_server)

        id_header = options["Headers", "mailid_header_name"]

        self.assertEqual(new_msg[id_header], self.msg.id)

        new_msg2 = new_msg.get_full_message()

        self.assert_(new_msg is new_msg2)
 def test_get_bad_message(self):

        self.msg.id = "unittest"

        self.msg.imap_server.login(IMAP_USERNAME, IMAP_PASSWORD)

        self.msg.imap_server.select()

        self.msg.uid = 103 

        self.msg.folder = IMAPFolder("Inbox", self.msg.imap_server, None)

        print("\nWith email package versions less than 3.0, you should " \
              "see an error parsing the message.")

        new_msg = self.msg.get_full_message()

        has_header = new_msg.as_string().find("X-Spambayes-Exception: ") != -1

        has_defect = hasattr(new_msg, "defects") and len(new_msg.defects) > 0

        self.assert_(has_header or has_defect)
 def test_get_memory_error_message(self):

        pass
 def test_Save(self):

        pass

class  IMAPFolderTest (BaseIMAPFilterTest) :
	def setUp(self):

        BaseIMAPFilterTest.setUp(self)

        self.imap.login(IMAP_USERNAME, IMAP_PASSWORD)

        self.folder = IMAPFolder("testfolder", self.imap, None)
 def test_cmp(self):

        folder2 = IMAPFolder("testfolder", self.imap, None)

        folder3 = IMAPFolder("testfolder2", self.imap, None)

        self.assertEqual(self.folder, folder2)

        self.assertNotEqual(self.folder, folder3)
 def test_iter(self):

        keys = list(self.folder.keys())

        for msg in self.folder:

            msg = msg.get_full_message()

            msg_correct = email.message_from_string(IMAP_MESSAGES[int(keys[0])],
                                                    _class=message.Message)

            id_header_name = options["Headers", "mailid_header_name"]

            if msg_correct[id_header_name] is None:

                msg_correct[id_header_name] = msg.id

            self.assertEqual(msg.as_string(), msg_correct.as_string())

            keys = keys[1:]
 def test_keys(self):

        keys = list(self.folder.keys())

        correct_keys = [str(IMAP_UIDS[id]) for id in UNDELETED_IDS]

        self.assertEqual(keys, correct_keys)
 def test_getitem_new_style(self):

        id_header_name = options["Headers", "mailid_header_name"]

        msg1 = self.folder[101]

        self.assertEqual(msg1.id, SB_ID_1)

        msg1 = msg1.get_full_message()

        msg1_correct = email.message_from_string(IMAP_MESSAGES[101],
                                                 message.Message)

        self.assertNotEqual(msg1[id_header_name], None)

        msg1_correct[id_header_name] = SB_ID_1

        self.assertEqual(msg1.as_string(), msg1_correct.as_string())
 def test_getitem_old_style(self):

        id_header_name = options["Headers", "mailid_header_name"]

        msg2 = self.folder[102]

        self.assertEqual(msg2.id, SB_ID_2)

        msg2 = msg2.get_full_message()

        self.assertNotEqual(msg2[id_header_name], None)

        self.assertEqual(msg2.as_string(), IMAP_MESSAGES[102])
 def test_getitem_new_id(self):

        id_header_name = options["Headers", "mailid_header_name"]

        msg3 = self.folder[104]

        self.assertNotEqual(msg3[id_header_name], None)

        msg_correct = email.message_from_string(IMAP_MESSAGES[104],
                                                message.Message)

        msg_correct[id_header_name] = msg3.id

        self.assertEqual(msg3.as_string(), msg_correct.as_string())
 def test_generate_id(self):

        id1 = self.folder._generate_id()

        id2 = self.folder._generate_id()

        id3 = self.folder._generate_id()

        time.sleep(1)

        id4 = self.folder._generate_id()

        self.assertEqual(id2, id1 + "-2")

        self.assertEqual(id3, id1 + "-3")

        self.assertNotEqual(id1, id4)

        self.assertNotEqual(id2, id4)

        self.assertNotEqual(id3, id4)

        self.assert_('-' not in id4)
 def test_Train(self):

        pass
 def test_Filter(self):

        pass

class  IMAPFilterTest (BaseIMAPFilterTest) :
	def setUp(self):

        BaseIMAPFilterTest.setUp(self)

        self.imap.login(IMAP_USERNAME, IMAP_PASSWORD)

        classifier = Classifier()

        self.filter = IMAPFilter(classifier, None)

        options["imap", "ham_train_folders"] = ("ham_to_train",)

        options["imap", "spam_train_folders"] = ("spam_to_train",)
 def test_Train(self):

        pass
 def test_Filter(self):

        pass

class  SFBugsTest (BaseIMAPFilterTest) :
	def test_802545(self):

        pass
 def test_816400(self):

        pass
 def test_818552(self):

        pass
 def test_842984(self):

        pass
 def test_886133(self):

        pass

class  InterfaceTest (unittest.TestCase) :
	def setUp(self):

        self.saved_server = options["imap", "server"]

        options["imap", "server"] = ""

        self._server = threading.Thread(target=run, args=(True,))

        self._server.setDaemon(True)

        self._server.start()

        time.sleep(1)
 def tearDown(self):

        options["imap", "server"] = self.saved_server

        from urllib.request import urlopen

        from urllib.parse import urlencode

        urlopen('http://localhost:%d/save' % options["html_ui", "port"],
                urlencode({'how': _('Save & shutdown')})).read()
 
def test_UI(self):

    httpServer = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    httpServer.connect(('localhost', options["html_ui", "port"]))

    httpServer.send("get / HTTP/1.0\r\n\r\n")

    response = ''

    while 1:

        packet = httpServer.recv(1024)

        if not packet: break

        response += packet

    self.assert_(re.search(r"(?s)<html>.*SpamBayes IMAP Filter.*</html>",
                           response))

 def suite():

    suite = unittest.TestSuite()

    for cls in (IMAPSessionTest,
                IMAPMessageTest,
                IMAPFolderTest,
                IMAPFilterTest,
                SFBugsTest,
                InterfaceTest,
               ):

        suite.addTest(unittest.makeSuite(cls))

    return suite
 if __name__=='__main__':

    def runTestServer():

        TestListener()

        asyncore.loop()

    server = threading.Thread(target=runTestServer, args=())

    server.setDaemon(True)

    server.start()

    time.sleep(2)

    sb_test_support.unittest_main(argv=sys.argv + ['suite'])

 if __name__=='__main__':

    def runTestServer():

        TestListener()

        asyncore.loop()

    server = threading.Thread(target=runTestServer, args=())

    server.setDaemon(True)

    server.start()

    time.sleep(2)

    sb_test_support.unittest_main(argv=sys.argv + ['suite'])





try:

    IMAPError = imaplib.error

except AttributeError:

    IMAPError = imaplib.IMAP4.error