# HG changeset patch # User Sandro Knauß # Date 1330979864 -3600 # Node ID ab8e2f26718ef54f3cd0b654e26b23cc98874dea # Parent 5bacdb7e94d1d95f30c0082ade8e86471c93669e tests for Task.start -> ExJob->setError/setStatus diff -r 5bacdb7e94d1 -r ab8e2f26718e iro/offer/smstrade.py --- a/iro/offer/smstrade.py Mon Mar 05 19:47:08 2012 +0100 +++ b/iro/offer/smstrade.py Mon Mar 05 21:37:44 2012 +0100 @@ -84,7 +84,7 @@ "key":Option(lambda x,y:x,long="smstrade Gateway Key https://login.smstrade.de/index.php?gateway", must=True) }) - def send(self, route, sms, recipient): + def send(self, route, recipient, sms): """send SMS with $sms to $recipients""" #logger.debug('smstrade.sendSMS(%s,%s)'%(sms, recipient)) diff -r 5bacdb7e94d1 -r ab8e2f26718e tests/job.py --- a/tests/job.py Mon Mar 05 19:47:08 2012 +0100 +++ b/tests/job.py Mon Mar 05 21:37:44 2012 +0100 @@ -169,14 +169,11 @@ job = u.job(self.job.dbjob) self.assertEqual(job.status,"sending") - - @patch("iro.model.job.datetime") def testCosts(self,p_dt): p_dt.today.return_value = datetime(2000, 1, 2, 3, 4, 5) task = Task(Telnumber('123456789'),self.job) - status = Status(self.provider,"a") - status.costs = 0.055 + status = Status(self.provider,"a",costs=0.055,exID="12345678",count=1) self.job.setStatus(task, status) @@ -193,3 +190,5 @@ self.assertEqual(msg.recipient,str(Telnumber('123456789'))) self.assertEqual(msg.date,datetime(2000, 1, 2, 3, 4, 5)) self.assertEqual(msg.offer,o) + self.assertEqual(msg.exID,"12345678") + self.assertEqual(msg.count,1) diff -r 5bacdb7e94d1 -r ab8e2f26718e tests/offer_integrated.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/offer_integrated.py Mon Mar 05 21:37:44 2012 +0100 @@ -0,0 +1,121 @@ +from twisted.internet.defer import inlineCallbacks + +from datetime import datetime +from decimal import Decimal +from mock import patch, Mock + +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 import offer + +from iro.controller.task import Task, taskPool +from iro.telnumber import Telnumber + +from iro.offer import Smstrade, SMTP, Offer + +from .dbtestcase import DBTestCase + +class DummyPool(): + def run(self, f,*a,**k): + return f(*a,**k) + +def run( f,*a,**k): + return f(*a,**k) + +class IntegratedOfferTests(DBTestCase): + def setUp(self): + DBTestCase.setUp(self) + self.pool = data.pool + data.pool = DummyPool() + + self.taskPool = taskPool.run + taskPool.run = run + + def tearDown(self): + exJobs.clear() + data.pool = self.pool + self.pool = None + taskPool.run = self.taskPool + self.taskPool = None + DBTestCase.tearDown(self) + + + @patch("iro.model.job.datetime") + @patch("urllib.urlopen") + @inlineCallbacks + def testSmstrade(self, p_u, p_dt): + f = Mock() + f.readlines.return_value = ["100","12345678","0.055","1"] + p_u.return_value = f + + p_dt.today.return_value = datetime(2000, 1, 2, 3, 4, 5) + + with self.session() as session: + u = User(name='test',apikey='abcdef123456789') + session.add(u) + o=DBOffer(name="s", provider="bla", route="basic", typ="sms") + u.rights.append(Userright(o)) + + + offer.providers["bla"] = Smstrade("bla") + offer.providers["bla"].key = "XXXXXX" + offer.offers["s"] = Offer("s",offer.providers["bla"],"basic","sms") + + j = yield exJobs.create(u,[Telnumber("0123456789")],SMS("bla"),['s'],'tesched') + t = Task(Telnumber("0123456789"),j) + yield t.start() + + 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(len(job.messages),1) + + msg = job.messages[0] + self.assertEqual(msg.price,Decimal('0.0550')) + self.assertEqual(msg.isBilled,False) + self.assertEqual(msg.recipient,str(Telnumber('123456789'))) + self.assertEqual(msg.date,datetime(2000, 1, 2, 3, 4, 5)) + self.assertEqual(msg.offer,o) + self.assertEqual(msg.exID,"12345678") + self.assertEqual(msg.count,1) + + + @patch("urllib.urlopen") + @inlineCallbacks + def testSmstradeException(self, mock_urlopen): + f = Mock() + f.readlines.return_value = ["703"] + mock_urlopen.return_value = f + + with self.session() as session: + u = User(name='test',apikey='abcdef123456789') + session.add(u) + o=DBOffer(name="s", provider="bla", route="basic", typ="sms") + u.rights.append(Userright(o)) + + offer.providers["bla"] = Smstrade("bla") + offer.providers["bla"].key = "XXXXXX" + offer.offers["s"] = Offer("s",offer.providers["bla"],"basic","sms") + + j = yield exJobs.create(u,[Telnumber("0123456789")],SMS("bla"),['s'],'tesched') + t = Task(Telnumber("0123456789"),j) + yield t.start() + + 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) + + def testSmtp(self): + pass + testSmtp.todo ="to implement" + + def testSmtpException(self): + pass + testSmtpException.todo ="to implement" diff -r 5bacdb7e94d1 -r ab8e2f26718e tests/smstrade.py --- a/tests/smstrade.py Mon Mar 05 19:47:08 2012 +0100 +++ b/tests/smstrade.py Mon Mar 05 21:37:44 2012 +0100 @@ -36,7 +36,7 @@ p=self.getProvider() content = "Hello World" - r = p.send("gold",SMS(content,None), Telnumber("01701234567")) + r = p.send("gold", Telnumber("01701234567"), SMS(content,None)) ca = mock_urlopen.call_args[0] c=ca[1].split("&") @@ -74,7 +74,7 @@ def testRejectRecipient(self): p=self.getProvider() content = "Hello World" - e = self.assertRaises(RejectRecipient, p.send, "basic",SMS(content,None), Telnumber("+331701234567")) + e = self.assertRaises(RejectRecipient, p.send, "basic", Telnumber("+331701234567"), SMS(content,None)) self.assertEqual(str(e),'Reject recipient(00331701234567): None') @patch("urllib.urlopen") @@ -85,10 +85,10 @@ p=self.getProvider() content = "Hello World" - self.assertRaises(RejectRecipient, p.send , "basic", SMS(content,None), Telnumber("01701234567")) + self.assertRaises(RejectRecipient, p.send , "basic", Telnumber("01701234567") ,SMS(content,None)) f.readlines.return_value = ["71"] - e = self.assertRaises(RejectRecipient, p.send , "basic", SMS(content,None), Telnumber("01701234567")) + e = self.assertRaises(RejectRecipient, p.send , "basic", Telnumber("01701234567"), SMS(content,None)) self.assertEqual(str(e),'Reject recipient(00491701234567): 71: Feature nicht ueber diese Route moeglich.') @patch("urllib.urlopen") @@ -99,7 +99,7 @@ p=self.getProvider() content = "Hello World" - e = self.assertRaises(SmstradeException, p.send , "basic", SMS(content,None), Telnumber("01701234567")) + e = self.assertRaises(SmstradeException, p.send , "basic", Telnumber("01701234567"), SMS(content,None)) self.assertEqual(str(e),'950:Error in external API.\n703: unknown statuscode.') @patch("urllib.urlopen") @@ -110,7 +110,7 @@ p=self.getProvider() content = "Hello World" - e = self.assertRaises(SmstradeException, p.send , "basic", SMS(content,None), Telnumber("01701234567")) + e = self.assertRaises(SmstradeException, p.send , "basic", Telnumber("01701234567"), SMS(content,None)) self.assertEqual(str(e),'950:Error in external API.\n10: Empfaengernummer nicht korrekt.')