|
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" |