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"