diff -r d755b2e0cc0b -r 91f87ad13540 tests/offer_integrated.py --- a/tests/offer_integrated.py Mon Mar 05 23:51:56 2012 +0100 +++ b/tests/offer_integrated.py Mon Mar 05 23:52:29 2012 +0100 @@ -7,13 +7,14 @@ from iro.model.job import exJobs from iro.model.pool import data from iro.model.schema import User, Offer as DBOffer, Userright -from iro.model.message import SMS +from iro.model.message import SMS, Mail from iro.model import offer from iro.controller.task import Task, taskPool from iro.telnumber import Telnumber from iro.offer import Smstrade, SMTP, Offer +from iro.offer.smstrade import SmstradeException, StatusCode from .dbtestcase import DBTestCase @@ -24,6 +25,23 @@ def run( f,*a,**k): return f(*a,**k) +from twisted.python import log + +class DummyObserver(object): + def __init__(self): + self.e=[] + + def start(self): + log.addObserver(self.emit) + + def stop(self): + log.removeObserver(self.emit) + + def emit(self, eventDict): + self.e.append(eventDict) + + + class IntegratedOfferTests(DBTestCase): def setUp(self): DBTestCase.setUp(self) @@ -33,7 +51,11 @@ self.taskPool = taskPool.run taskPool.run = run + self.log = DummyObserver() + self.log.start() + def tearDown(self): + self.log.stop() exJobs.clear() data.pool = self.pool self.pool = None @@ -67,11 +89,14 @@ t = Task(Telnumber("0123456789"),j) yield t.start() + self.assertEqual(self.log.e[0]['message'], ("Job(%s) to '0049123456789' ended sucecessfully via bla:basic."%j.dbjob,)) + with self.session() as session: u = session.merge(u) o = session.merge(o) job = u.job(j.dbjob) self.assertEqual(job.status,"sended") + self.assertEqual(job.info,"tesched") self.assertEqual(len(job.messages),1) msg = job.messages[0] @@ -105,6 +130,13 @@ t = Task(Telnumber("0123456789"),j) yield t.start() + errors = self.flushLoggedErrors(SmstradeException) + self.assertEqual(len(errors), 1) + self.assertEqual(self.log.e[0]['why'], "Error: Job(%s) to '0049123456789' failed."%j.dbjob) + + self.assertEqual(t.error, True) + self.assertEqual(str(t.status.value),str(SmstradeException(StatusCode(703)))) + with self.session() as session: u = session.merge(u) o = session.merge(o) @@ -112,10 +144,72 @@ self.assertEqual(job.status,"error") self.assertEqual(len(job.messages),0) - def testSmtp(self): - pass - testSmtp.todo ="to implement" + @patch("smtplib.SMTP") + @inlineCallbacks + def testSmtp(self, p_s ): + with self.session() as session: + u = User(name='test',apikey='abcdef123456789') + session.add(u) + o=DBOffer(name="s", provider="bla", route=None, typ="mail") + u.rights.append(Userright(o)) + + offer.providers["bla"] = SMTP("bla") + offer.providers["bla"].SSL = False + offer.providers["bla"].TLS = False + offer.providers["bla"].host = "localhost" + offer.providers["bla"].port = 12345 + offer.providers["bla"].user = "" + offer.providers["bla"].send_from = "frm@test.de" + offer.offers["s"] = Offer("s",offer.providers["bla"],None,"mail") + + j = yield exJobs.create(u,["t@test.de"],Mail("bla",'msg',None),['s'],'tesched') + t = Task("t@test.de",j) + yield t.start() + + self.assertEqual(self.log.e[0]['message'], ("Job(%s) to 't@test.de' ended sucecessfully via bla:None."%j.dbjob,)) + + with self.session() as session: + u = session.merge(u) + o = session.merge(o) + job = u.job(j.dbjob) + self.assertEqual(job.status,"sended") + self.assertEqual(job.info,"tesched") + self.assertEqual(len(job.messages),0) - def testSmtpException(self): - pass - testSmtpException.todo ="to implement" + @patch("smtplib.SMTP") + @inlineCallbacks + def testSmtpException(self, p_s): + p_s.side_effect = IOError(111,"Connection refused") + with self.session() as session: + u = User(name='test',apikey='abcdef123456789') + session.add(u) + o=DBOffer(name="s", provider="bla", route=None, typ="mail") + u.rights.append(Userright(o)) + + offer.providers["bla"] = SMTP("bla") + offer.providers["bla"].SSL = False + offer.providers["bla"].TLS = False + offer.providers["bla"].host = "localhost" + offer.providers["bla"].port = 12345 + offer.providers["bla"].user = "" + offer.providers["bla"].send_from = "frm@test.de" + offer.offers["s"] = Offer("s",offer.providers["bla"],None,"mail") + + j = yield exJobs.create(u,["t@test.de"],Mail("bla",'msg',None),['s'],'tesched') + t = Task("t@test.de",j) + yield t.start() + + errors = self.flushLoggedErrors(IOError) + self.assertEqual(len(errors), 1) + self.assertEqual(self.log.e[0]['why'], "Error: Job(%s) to 't@test.de' failed."%j.dbjob +) + self.assertEqual(t.error, True) + self.assertEqual(str(t.status.value),str(IOError(111,"Connection refused"))) + + with self.session() as session: + u = session.merge(u) + o = session.merge(o) + job = u.job(j.dbjob) + self.assertEqual(job.status,"error") + self.assertEqual(len(job.messages),0) +