tests/smtp.py
branchdevel
changeset 164 b634a8fed51f
child 169 aabc04843d25
equal deleted inserted replaced
163:2f9c439013b0 164:b634a8fed51f
       
     1 from twisted.trial import unittest
       
     2 
       
     3 import email
       
     4 from email.header import decode_header
       
     5 import base64
       
     6 from smtp_helper import TestSMTPServer
       
     7 
       
     8 
       
     9 from iro.model.message import Mail
       
    10 from iro.offer.smtp import SMTP
       
    11 
       
    12 HOST = "localhost"
       
    13 PORT = 9999
       
    14 
       
    15 class TestSMTPProvider(unittest.TestCase):
       
    16     def setUp(self):
       
    17         self.smtp_server = TestSMTPServer((HOST, PORT))
       
    18         self.smtp_server.start()
       
    19 
       
    20     def tearDown(self):
       
    21         self.smtp_server.close()
       
    22 
       
    23     def testSendMail(self):
       
    24         c=[("send_from","send@t.de"),
       
    25             ("host",HOST),
       
    26             ("port",PORT),
       
    27             ("user",""),
       
    28             ("password",""),
       
    29             ]
       
    30 
       
    31         p=SMTP("test",c)
       
    32         content = "sadfadfgwertsdgsdf\n\nsdfgaerasdfsad\nadfasdf"
       
    33         status = p.send(Mail("sub", content, None), "t@t.de")
       
    34 
       
    35         self.assertEqual(status.status, status.GOOD)
       
    36 
       
    37         self.assertEqual(len(self.smtp_server.rcvd), 1)
       
    38         fromaddr, toaddrs, message = self.smtp_server.rcvd[0]
       
    39         msg = email.message_from_string(message)
       
    40         
       
    41         self.assertEqual(fromaddr,"send@t.de")
       
    42         self.assertEqual(msg.get_all("From"),["send@t.de"])
       
    43         self.assertEqual(toaddrs,["t@t.de"])
       
    44         self.assertEqual(msg.get_all("To"),["t@t.de"])
       
    45         self.assertEqual(decode_header(msg.get("Subject")),[("sub","utf-8")])
       
    46         self.assertEqual(base64.b64decode(msg.get_payload()),content)
       
    47 
       
    48     def testSendMailExtraFrm(self):
       
    49         c=[("send_from","send@t.de"),
       
    50             ("host",HOST),
       
    51             ("port",PORT),
       
    52             ("user",""),
       
    53             ("password",""),
       
    54             ]
       
    55 
       
    56         p=SMTP("test",c)
       
    57         content = ""
       
    58         status = p.send(Mail("sub", content, "f@t.de"), "t@t.de")
       
    59 
       
    60         self.assertEqual(status.status, status.GOOD)
       
    61 
       
    62         self.assertEqual(len(self.smtp_server.rcvd), 1)
       
    63         fromaddr, toaddrs, message = self.smtp_server.rcvd[0]
       
    64         msg = email.message_from_string(message)
       
    65         
       
    66         self.assertEqual(fromaddr,"f@t.de")
       
    67         self.assertEqual(msg.get_all("From"),["f@t.de"])
       
    68 
       
    69     def testSendMailException(self):
       
    70         c=[("send_from","send@t.de"),
       
    71             ("host",HOST),
       
    72             ("port",PORT-1),
       
    73             ("user",""),
       
    74             ("password",""),
       
    75             ]
       
    76 
       
    77         p=SMTP("test",c)
       
    78         content = ""
       
    79         status = p.send(Mail("sub", content, "f@t.de"), "t@t.de")
       
    80         self.assertEqual(status.status, status.ERROR)
       
    81         self.assertIsInstance(status.error,IOError)
       
    82         self.assertEqual(status.error.errno,111)
       
    83 
       
    84         self.assertEqual(len(self.smtp_server.rcvd), 0)
       
    85 
       
    86     def testNeededOption(self):
       
    87         pass
       
    88     testNeededOption.todo = "test NeededOption is not implemented"
       
    89 
       
    90     def testUnknownOption(self):
       
    91         pass
       
    92     testUnknownOption.todo = "test UnknownOption is not implemented"
       
    93 
       
    94     def testSendFunc(self):
       
    95         pass
       
    96     testSendFunc.todo = "test getSendFunc is not implemented"