tests/offer_integrated.py
author Sandro Knauß <knauss@netzguerilla.net>
Mon, 05 Mar 2012 21:37:44 +0100
branchdevel
changeset 216 ab8e2f26718e
child 218 91f87ad13540
permissions -rw-r--r--
tests for Task.start -> ExJob->setError/setStatus
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
216
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     1
from twisted.internet.defer import inlineCallbacks
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     2
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     3
from datetime import datetime
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     4
from decimal import Decimal 
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     5
from mock import patch, Mock
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     6
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     7
from iro.model.job import exJobs
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     8
from iro.model.pool import data
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     9
from iro.model.schema import User, Offer as DBOffer, Userright
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    10
from iro.model.message import SMS
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    11
from iro.model import offer
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    12
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    13
from iro.controller.task import Task, taskPool
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    14
from iro.telnumber import Telnumber
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    15
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    16
from iro.offer import Smstrade, SMTP, Offer
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    17
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    18
from .dbtestcase import DBTestCase
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    19
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    20
class DummyPool():
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    21
    def run(self, f,*a,**k):
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    22
        return f(*a,**k)
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    23
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    24
def run( f,*a,**k):
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    25
    return f(*a,**k)
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    26
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    27
class IntegratedOfferTests(DBTestCase):
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    28
    def setUp(self):
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    29
        DBTestCase.setUp(self)
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    30
        self.pool = data.pool
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    31
        data.pool = DummyPool()
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    32
        
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    33
        self.taskPool = taskPool.run
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    34
        taskPool.run = run 
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    35
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    36
    def tearDown(self):
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    37
        exJobs.clear()
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    38
        data.pool = self.pool
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    39
        self.pool = None
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    40
        taskPool.run = self.taskPool
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    41
        self.taskPool = None
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    42
        DBTestCase.tearDown(self)
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    43
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    44
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    45
    @patch("iro.model.job.datetime")
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    46
    @patch("urllib.urlopen")
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    47
    @inlineCallbacks
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    48
    def testSmstrade(self, p_u, p_dt):
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    49
        f = Mock()
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    50
        f.readlines.return_value = ["100","12345678","0.055","1"]
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    51
        p_u.return_value = f
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    52
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    53
        p_dt.today.return_value = datetime(2000, 1, 2, 3, 4, 5)
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    54
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    55
        with self.session() as session:
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    56
            u = User(name='test',apikey='abcdef123456789')
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    57
            session.add(u)
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    58
            o=DBOffer(name="s", provider="bla", route="basic", typ="sms")
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    59
            u.rights.append(Userright(o))
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    60
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    61
        
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    62
        offer.providers["bla"] = Smstrade("bla")
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    63
        offer.providers["bla"].key = "XXXXXX"
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    64
        offer.offers["s"] = Offer("s",offer.providers["bla"],"basic","sms")
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    65
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    66
        j = yield exJobs.create(u,[Telnumber("0123456789")],SMS("bla"),['s'],'tesched')
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    67
        t = Task(Telnumber("0123456789"),j)
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    68
        yield t.start()
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    69
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    70
        with self.session() as session:
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    71
            u = session.merge(u)
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    72
            o = session.merge(o)
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    73
            job = u.job(j.dbjob)
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    74
            self.assertEqual(job.status,"sended")
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    75
            self.assertEqual(len(job.messages),1)
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    76
            
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    77
            msg = job.messages[0]
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    78
            self.assertEqual(msg.price,Decimal('0.0550'))
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    79
            self.assertEqual(msg.isBilled,False)
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    80
            self.assertEqual(msg.recipient,str(Telnumber('123456789')))
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    81
            self.assertEqual(msg.date,datetime(2000, 1, 2, 3, 4, 5))
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    82
            self.assertEqual(msg.offer,o)
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    83
            self.assertEqual(msg.exID,"12345678")
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    84
            self.assertEqual(msg.count,1)
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    85
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    86
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    87
    @patch("urllib.urlopen")
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    88
    @inlineCallbacks
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    89
    def testSmstradeException(self, mock_urlopen):
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    90
        f = Mock()
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    91
        f.readlines.return_value = ["703"]
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    92
        mock_urlopen.return_value = f
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    93
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    94
        with self.session() as session:
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    95
            u = User(name='test',apikey='abcdef123456789')
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    96
            session.add(u)
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    97
            o=DBOffer(name="s", provider="bla", route="basic", typ="sms")
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    98
            u.rights.append(Userright(o)) 
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    99
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   100
        offer.providers["bla"] = Smstrade("bla")
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   101
        offer.providers["bla"].key = "XXXXXX"
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   102
        offer.offers["s"] = Offer("s",offer.providers["bla"],"basic","sms")
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   103
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   104
        j = yield exJobs.create(u,[Telnumber("0123456789")],SMS("bla"),['s'],'tesched')
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   105
        t = Task(Telnumber("0123456789"),j)
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   106
        yield t.start()
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   107
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   108
        with self.session() as session:
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   109
            u = session.merge(u)
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   110
            o = session.merge(o)
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   111
            job = u.job(j.dbjob)
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   112
            self.assertEqual(job.status,"error")
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   113
            self.assertEqual(len(job.messages),0)
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   114
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   115
    def testSmtp(self):
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   116
        pass
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   117
    testSmtp.todo ="to implement"
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   118
    
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   119
    def testSmtpException(self):
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   120
        pass
ab8e2f26718e tests for Task.start -> ExJob->setError/setStatus
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   121
    testSmtpException.todo ="to implement"