#/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'])