mail_unittest.py revision fa29a2a27f1534c71587cde382709a4795a820a1
1#!/usr/bin/python
2
3import unittest
4import mail, email.Message
5
6class test_data:
7	mail_host = None
8	mail_port = None
9	mail_connect = False
10	mail_from_address = None
11	mail_to_address = None
12	mail_message = None
13
14
15# we define our needed mock SMTP
16class SMTP:
17	def __init__(self, host=None, port=25):
18		test_data.mail_host = host
19		test_data.mail_port = port
20
21		if test_data.mail_host:
22			self.connect(test_data.mail_host, test_data.mail_port)
23
24
25	def connect(self, host, port):
26		test_data.mail_connect = True
27
28
29	def quit(self):
30		test_data.mail_connect = False
31
32
33	def sendmail(self, from_address, to_address, message):
34		test_data.mail_from_address = from_address
35		test_data.mail_to_address = to_address
36		test_data.mail_message = message
37
38
39class mail_test(unittest.TestCase):
40	cached_SMTP = None
41
42	def setUp(self):
43		# now perform the slip
44		self.cached_SMTP = mail.smtplib.SMTP
45		mail.smtplib.SMTP = SMTP
46
47
48	def tearDown(self):
49		# now put things back
50		mail.smtplib.SMTP = self.cached_SMTP
51
52
53	def test_send_message(self):
54		message = email.Message.Message()
55		message["To"] = "you"
56		message["Cc"] = "them"
57		message["From"] = "me"
58		message["Subject"] = "hello"
59		message.set_payload("Hello everybody!")
60
61		mail.send("me", "you", "them", "hello", "Hello everybody!")
62		self.assertEquals("me", test_data.mail_from_address)
63		self.assertEquals(["you","them"], test_data.mail_to_address)
64		self.assertEquals(message.as_string(), test_data.mail_message)
65
66
67# this is so the test can be run in standalone mode
68if __name__ == '__main__':
69	unittest.main()
70