--- a/iro/model/job.py Mon Mar 05 23:51:56 2012 +0100
+++ b/iro/model/job.py Mon Mar 05 23:52:29 2012 +0100
@@ -61,7 +61,6 @@
self.incStatus()
if self.status != "error":
self._status(session,"error")
-
log.err(_why="Error: Job(%s) to '%s' failed."%(self.dbjob, task.recipient),_stuff=err)
threadable.synchronize(ExJob)
--- a/iro/offer/smtp.py Mon Mar 05 23:51:56 2012 +0100
+++ b/iro/offer/smtp.py Mon Mar 05 23:52:29 2012 +0100
@@ -33,7 +33,7 @@
"SSL":Option(vBool,long="use SSL for connection to MTA", default=False),
})
- def send(self,mail,recipient):
+ def send(self, recipient, mail):
if not self.testmode:
if self.SSL:
smtp = smtplib.SMTP_SSL(self.host,self.port)
--- 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)
+
--- a/tests/smtp.py Mon Mar 05 23:51:56 2012 +0100
+++ b/tests/smtp.py Mon Mar 05 23:52:29 2012 +0100
@@ -40,7 +40,7 @@
def testSendMail(self):
p=self.getSMTP()
content = "sadfadfgwertsdgsdf\n\nsdfgaerasdfsad\nadfasdf"
- p.send(Mail("sub", content, None), "t@t.de")
+ p.send("t@t.de", Mail("sub", content, None))
self.assertEqual(len(self.smtp_server.rcvd), 1)
@@ -57,7 +57,7 @@
def testSendMailExtraFrm(self):
p=self.getSMTP()
content = ""
- p.send(Mail("sub", content, "f@t.de"), "t@t.de")
+ p.send("t@t.de", Mail("sub", content, "f@t.de"))
self.assertEqual(len(self.smtp_server.rcvd), 1)
fromaddr, toaddrs, message = self.smtp_server.rcvd[0]
@@ -69,7 +69,7 @@
def testSendMailException(self):
p=self.getSMTP({"port":PORT-1})
content = ""
- self.assertRaises(IOError, p.send, Mail("sub", content, "f@t.de"), "t@t.de")
+ self.assertRaises(IOError, p.send, "t@t.de", Mail("sub", content, "f@t.de"))
self.assertEqual(len(self.smtp_server.rcvd), 0)
@@ -81,7 +81,7 @@
p=self.getSMTP({"SSL":True})
content = "sadfadfgwertsdgsdf\n\nsdfgaerasdfsad\nadfasdf"
- p.send(Mail("sub", content, None), "t@t.de")
+ p.send("t@t.de", Mail("sub", content, None))
self.assertEqual(mock_ssl.call_count,1)
@@ -94,7 +94,7 @@
p=self.getSMTP({"TLS":True})
content = "sadfadfgwertsdgsdf\n\nsdfgaerasdfsad\nadfasdf"
- p.send(Mail("sub", content, None), "t@t.de")
+ p.send("t@t.de", Mail("sub", content, None))
mock_s.starttls.assert_called_once_with()
self.assertEqual(mock_s.sendmail.call_count,1)
@@ -107,7 +107,7 @@
p=self.getSMTP({"user":"user","password":"pw"})
content = "sadfadfgwertsdgsdf\n\nsdfgaerasdfsad\nadfasdf"
- p.send(Mail("sub", content, None), "t@t.de")
+ p.send("t@t.de", Mail("sub", content, None))
mock_s.login.assert_called_once_with("user","pw")
self.assertEqual(mock_s.sendmail.call_count,1)