18 self.smtp_server.start() |
21 self.smtp_server.start() |
19 |
22 |
20 def tearDown(self): |
23 def tearDown(self): |
21 self.smtp_server.close() |
24 self.smtp_server.close() |
22 |
25 |
|
26 def getSMTP(self, c=None): |
|
27 ret={"send_from":"send@t.de", |
|
28 "host":HOST, |
|
29 "port":PORT, |
|
30 "user":"", |
|
31 "password":"", |
|
32 } |
|
33 |
|
34 if c: |
|
35 ret.update(c) |
|
36 |
|
37 return SMTP("test",ret.items()) |
|
38 |
23 def testSendMail(self): |
39 def testSendMail(self): |
24 c=[("send_from","send@t.de"), |
40 p=self.getSMTP() |
25 ("host",HOST), |
|
26 ("port",PORT), |
|
27 ("user",""), |
|
28 ("password",""), |
|
29 ] |
|
30 |
|
31 p=SMTP("test",c) |
|
32 content = "sadfadfgwertsdgsdf\n\nsdfgaerasdfsad\nadfasdf" |
41 content = "sadfadfgwertsdgsdf\n\nsdfgaerasdfsad\nadfasdf" |
33 status = p.send(Mail("sub", content, None), "t@t.de") |
42 status = p.send(Mail("sub", content, None), "t@t.de") |
34 |
43 |
35 self.assertEqual(status.status, status.GOOD) |
44 self.assertEqual(status.status, status.GOOD) |
36 |
45 |
44 self.assertEqual(msg.get_all("To"),["t@t.de"]) |
53 self.assertEqual(msg.get_all("To"),["t@t.de"]) |
45 self.assertEqual(decode_header(msg.get("Subject")),[("sub","utf-8")]) |
54 self.assertEqual(decode_header(msg.get("Subject")),[("sub","utf-8")]) |
46 self.assertEqual(base64.b64decode(msg.get_payload()),content) |
55 self.assertEqual(base64.b64decode(msg.get_payload()),content) |
47 |
56 |
48 def testSendMailExtraFrm(self): |
57 def testSendMailExtraFrm(self): |
49 c=[("send_from","send@t.de"), |
58 p=self.getSMTP() |
50 ("host",HOST), |
|
51 ("port",PORT), |
|
52 ("user",""), |
|
53 ("password",""), |
|
54 ] |
|
55 |
|
56 p=SMTP("test",c) |
|
57 content = "" |
59 content = "" |
58 status = p.send(Mail("sub", content, "f@t.de"), "t@t.de") |
60 status = p.send(Mail("sub", content, "f@t.de"), "t@t.de") |
59 |
61 |
60 self.assertEqual(status.status, status.GOOD) |
62 self.assertEqual(status.status, status.GOOD) |
61 |
63 |
65 |
67 |
66 self.assertEqual(fromaddr,"f@t.de") |
68 self.assertEqual(fromaddr,"f@t.de") |
67 self.assertEqual(msg.get_all("From"),["f@t.de"]) |
69 self.assertEqual(msg.get_all("From"),["f@t.de"]) |
68 |
70 |
69 def testSendMailException(self): |
71 def testSendMailException(self): |
70 c=[("send_from","send@t.de"), |
72 p=self.getSMTP({"port":PORT-1}) |
71 ("host",HOST), |
|
72 ("port",PORT-1), |
|
73 ("user",""), |
|
74 ("password",""), |
|
75 ] |
|
76 |
|
77 p=SMTP("test",c) |
|
78 content = "" |
73 content = "" |
79 status = p.send(Mail("sub", content, "f@t.de"), "t@t.de") |
74 self.assertRaises(IOError, 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 |
75 |
84 self.assertEqual(len(self.smtp_server.rcvd), 0) |
76 self.assertEqual(len(self.smtp_server.rcvd), 0) |
85 |
77 |
|
78 @patch("smtplib.SMTP_SSL") |
|
79 def testSSLSendMail(self,mock_ssl): |
|
80 def se(*args): |
|
81 return smtplib.SMTP(*args) |
|
82 mock_ssl.side_effect=se |
|
83 |
|
84 p=self.getSMTP({"SSL":True}) |
|
85 content = "sadfadfgwertsdgsdf\n\nsdfgaerasdfsad\nadfasdf" |
|
86 status = p.send(Mail("sub", content, None), "t@t.de") |
|
87 |
|
88 self.assertEqual(mock_ssl.call_count,1) |
|
89 self.assertEqual(status.status, status.GOOD) |
|
90 |
|
91 self.assertEqual(len(self.smtp_server.rcvd), 1) |
|
92 |
|
93 @patch("smtplib.SMTP") |
|
94 def testTLSSendMail(self,mock_smtp): |
|
95 mock_s = Mock() |
|
96 mock_smtp.return_value = mock_s |
|
97 |
|
98 p=self.getSMTP({"TLS":True}) |
|
99 content = "sadfadfgwertsdgsdf\n\nsdfgaerasdfsad\nadfasdf" |
|
100 status = p.send(Mail("sub", content, None), "t@t.de") |
|
101 |
|
102 mock_s.starttls.assert_called_once_with() |
|
103 self.assertEqual(mock_s.sendmail.call_count,1) |
|
104 self.assertEqual([i[0] for i in mock_s.method_calls],["starttls","sendmail","quit"]) |
|
105 self.assertEqual(status.status, status.GOOD) |
|
106 |
|
107 @patch("smtplib.SMTP") |
|
108 def testLoginSendMail(self,mock_smtp): |
|
109 mock_s = Mock() |
|
110 mock_smtp.return_value = mock_s |
|
111 |
|
112 p=self.getSMTP({"user":"user","password":"pw"}) |
|
113 content = "sadfadfgwertsdgsdf\n\nsdfgaerasdfsad\nadfasdf" |
|
114 status = p.send(Mail("sub", content, None), "t@t.de") |
|
115 |
|
116 mock_s.login.assert_called_once_with("user","pw") |
|
117 self.assertEqual(mock_s.sendmail.call_count,1) |
|
118 self.assertEqual([i[0] for i in mock_s.method_calls],["login","sendmail","quit"]) |
|
119 self.assertEqual(status.status, status.GOOD) |
|
120 |
|
121 |
86 def testNeededOption(self): |
122 def testNeededOption(self): |
87 pass |
123 c={"send_from":"send@t.de", |
88 testNeededOption.todo = "test NeededOption is not implemented" |
124 "host":HOST, |
|
125 "port":PORT, |
|
126 "user":"u", |
|
127 "password":"p", |
|
128 } |
|
129 s=SMTP("test",c.items()) |
|
130 self.assertEqual(s.send_from, "send@t.de") |
|
131 self.assertEqual(s.host, HOST) |
|
132 self.assertEqual(s.port, PORT) |
|
133 self.assertEqual(s.user, "u") |
|
134 self.assertEqual(s.password, "p") |
|
135 self.assertEqual(s.bSSL,False) |
|
136 self.assertEqual(s.bTLS,False) |
89 |
137 |
90 def testUnknownOption(self): |
138 c.update({"TLS":True, "SSL":True}) |
91 pass |
139 s=SMTP("test", c.items()) |
92 testUnknownOption.todo = "test UnknownOption is not implemented" |
140 self.assertEqual(s.bSSL,True) |
|
141 self.assertEqual(s.bTLS,True) |
|
142 |
|
143 del c["host"] |
|
144 self.assertRaises(NeededOption,SMTP,"test",c.items()) |
|
145 |
|
146 c = {"unknown":""} |
|
147 self.assertRaises(UnknownOption,SMTP,"test",c.items()) |
93 |
148 |
94 def testSendFunc(self): |
149 def testSendFunc(self): |
95 pass |
150 s = self.getSMTP() |
96 testSendFunc.todo = "test getSendFunc is not implemented" |
151 self.assertEqual(s.getSendFunc("mail",None), s.send) |
|
152 self.assertRaises(NoRoute,s.getSendFunc,"mail","foo") |
|
153 self.assertRaises(NoTyp,s.getSendFunc,"mail2","foo") |