#/usr/bin/python -Qwarnall -tt
import unittest
from test import test_support
import cutil, os, Setup
MOCK_DATA = dict()
class MockSendmail:
def __init__(self, sentMails):
self.active = True
self.sentMails = sentMails
self.err = None
self.rise = None
def setError(self, e):
self.err = e
def setRaise(self, e):
self.rise = e
def sendmail(self, sender, recipients, message):
self.sentMails.append( (sender, recipients, message) )
if not self.active:
raise Error, "Not connected"
if self.rise is not None:
raise self.rise
return self.err
def quit(self):
if self.active:
self.active = False
else:
raise Error, "Not connected"
def module_setup():
'''
Setup the mock implementations for all the tests to use
'''
md = MOCK_DATA
assert md is not None
md['connects'] = []
md['emails'] = []
md['email-err'] = None
md['email-rise'] = None
md['email-connect-err'] = None
def mock_connect_email(servername):
print "In mock sendmail"
md['connects'].append(servername)
r = MockSendmail(md['emails'])
if md['email-err']:
r.setError(md['email-err'])
if md['email-rise']:
r.setRise(md['email-rise'])
md['sendmail'] = r
if md['email-connect-err']:
raise md['email-connect-err']
print "Returning sendmail mock"
return r
cutil._connectMailServer = mock_connect_email
md['logfile'] = 'test_cutil.log'
Setup.LOGGING.logfile = md['logfile']
def setup(loglevel = cutil.VERBOSE, emailLogLevel = cutil.FATAL, errMsg = None, exception = None):
'''
Setup a test
'''
md = MOCK_DATA
md['connects'] = []
md['emails'] = []
md['email-err'] = errMsg
md['email-rise'] = exception
md['email-connect-err'] = None
md['sendmail'] = None
Setup.LOGGING.logLevel = loglevel
Setup.LOGGING.emailLogLevel = emailLogLevel
Setup.LOGGING.adminEmail = 'adminEmail'
Setup.LOGGING.emailErrorSubject = 'emailErrorSubject'
Setup.LOGGING.smtpHost = 'smtpHost'
Setup.LOGGING.emailReplyTo = 'emailReplyTo'
Setup.LOGGING.emailSender = 'emailSender'
Setup.LOGGING.emailSubjectPrefix = 'emailSubjectPrefix'
if os.path.exists(md['logfile']):
os.remove(md['logfile'])
class TestCUTIL(unittest.TestCase):
def test_log1(self):
setup()
cutil.log(cutil.FATAL, "test message")
md = MOCK_DATA
self.assert_(md['sendmail'] is not None, 'Did not try to send mail')
if __name__ == '__main__':
module_setup()
print cutil._connectMailServer
try:
unittest.main()
finally:
if os.path.exists(MOCK_DATA['logfile']):
os.remove(MOCK_DATA['logfile'])