#!/usr/bin/python
import unittest
import mail, email
class test_data:
mail_host = None
mail_port = None
mail_connect = False
mail_from_address = None
mail_to_address = None
mail_message = None
# we define our needed mock SMTP
class SMTP:
def __init__(self, host=None, port=25):
test_data.mail_host = host
test_data.mail_port = port
if test_data.mail_host:
self.connect(test_data.mail_host, test_data.mail_port)
def connect(self, host, port):
test_data.mail_connect = True
def quit(self):
test_data.mail_connect = False
def sendmail(self, from_address, to_address, message):
test_data.mail_from_address = from_address
test_data.mail_to_address = to_address
test_data.mail_message = message
class mail_test(unittest.TestCase):
cached_SMTP = None
def setUp(self):
# now perform the slip
self.cached_SMTP = mail.smtplib.SMTP
mail.smtplib.SMTP = SMTP
def tearDown(self):
# now put things back
mail.smtplib.SMTP = self.cached_SMTP
def test_send_message(self):
message = email.Message.Message()
message["To"] = "you"
message["Cc"] = "them"
message["From"] = "me"
message["Subject"] = "hello"
message.set_payload("Hello everybody!")
mail.send("me", "you", "them", "hello", "Hello everybody!")
self.assertEquals("me", test_data.mail_from_address)
self.assertEquals(["you","them"], test_data.mail_to_address)
self.assertEquals(message.as_string(), test_data.mail_message)
# this is so the test can be run in standalone mode
if __name__ == '__main__':
unittest.main()