iro/tests/task.py
author Sandro Knauß <bugs@sandroknauss.de>
Tue, 15 Apr 2025 01:22:19 +0200
changeset 316 63c681b8e92c
parent 294 0e75bd39767d
permissions -rw-r--r--
fix link to about.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
294
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
     1
# Copyright (c) 2012 netzguerilla.net <iro@netzguerilla.net>
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
     2
# 
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
     3
# This file is part of Iro.
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
     4
# 
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
     5
# Permission is hereby granted, free of charge, to any person obtaining a copy of
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
     6
# this software and associated documentation files (the "Software"), to deal in
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
     7
# the Software without restriction, including without limitation the rights to use,
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
     8
# copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
     9
# #Software, and to permit persons to whom the Software is furnished to do so,
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
    10
# subject to the following conditions:
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
    11
# 
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
    12
# The above copyright notice and this permission notice shall be included in
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
    13
# all copies or substantial portions of the Software.
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
    14
# 
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
    15
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
    16
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
    17
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
    18
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
    19
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
    20
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 243
diff changeset
    21
175
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    22
from twisted.internet import reactor
234
08fcc2b6df99 refactoring task._run
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
    23
from twisted.internet.defer import inlineCallbacks, Deferred
175
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    24
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    25
from Queue import deque
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    26
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    27
from iro.model.schema import User, Offer as DBOffer, Userright
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    28
from iro.model.message import SMS
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    29
from iro.model.status import Status
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    30
from iro.model.offer import offers
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    31
from iro.model.job import exJobs
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    32
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    33
from iro.controller.task import createJob, Task
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    34
from iro.controller.pool  import taskPool, dbPool
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    35
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    36
from iro.offer import Offer, Provider
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    37
239
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
    38
from iro.error import NoRouteForTask,RejectRecipient
175
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    39
from iro.telnumber import Telnumber
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    40
231
3929338fd17f moving tests -> iro.tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 217
diff changeset
    41
from ..test_helpers.dbtestcase import DBTestCase
175
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    42
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    43
class TaskTestCase(DBTestCase):
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    44
    def setUp(self):
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    45
        DBTestCase.setUp(self)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    46
        dbPool.start(reactor)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    47
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    48
    def tearDown(self):
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    49
        exJobs.clear()
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    50
        offers.clear()
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    51
        dbPool.pool.stop()
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    52
        taskPool.pool.q.queue = deque()
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    53
        DBTestCase.tearDown(self)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    54
 
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    55
class TestTasks(TaskTestCase):
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    56
   
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    57
    @inlineCallbacks
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    58
    def testCreateSMS(self):
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    59
        with self.session() as session:
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    60
            u = User(name='test',apikey='abcdef123456789')
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    61
            session.add(u)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    62
        
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    63
        job = yield createJob(u,[Telnumber('0123325456')],SMS('sms'),[])
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    64
        
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    65
        self.assertEqual(taskPool.pool.q.qsize(),1)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    66
        
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    67
        self.assertEqual(job.tasks.keys(),[Telnumber('0123325456')])
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    68
        self.assertIsInstance(job.tasks[Telnumber('0123325456')], Task)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    69
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    70
    @inlineCallbacks
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    71
    def testRun(self):
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    72
        with self.session() as session:
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    73
            u = User(name='test',apikey='abcdef123456789')
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    74
            session.add(u)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    75
            o=DBOffer(name="test", provider="bla", route="basic", typ="sms")
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    76
            u.rights.append(Userright(o)) 
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    77
        
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 175
diff changeset
    78
        p=Provider(name="p", typs={"sms":["test",]})
175
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    79
        def send(typ,route,recipient,message):
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    80
            return Status(provider=p, route=route)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    81
        p.send=send
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    82
        offers["test"] = Offer("test",provider=p, route="test", typ="sms")
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    83
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    84
        exjob = yield exJobs.create(u, [Telnumber('123456789')], SMS('test'), ['test'])
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    85
        
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    86
        task=Task(Telnumber('123456789'), exjob)
234
08fcc2b6df99 refactoring task._run
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
    87
        task.d=Deferred()
08fcc2b6df99 refactoring task._run
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
    88
        task._run()
08fcc2b6df99 refactoring task._run
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
    89
        ret = yield task.d
175
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    90
        self.assertIsInstance(ret, Status)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    91
        self.assertEqual(ret.provider, p)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    92
        self.assertEqual(ret.route, "test")
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    93
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    94
    def testNoRoute(self):
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    95
        with self.session() as session:
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    96
            u = User(name='test',apikey='abcdef123456789')
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    97
            session.add(u)
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    98
        
234
08fcc2b6df99 refactoring task._run
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
    99
        def c(exjob):
08fcc2b6df99 refactoring task._run
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
   100
            task = Task(Telnumber('123456789'), exjob)
08fcc2b6df99 refactoring task._run
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
   101
            task.d = Deferred()
08fcc2b6df99 refactoring task._run
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
   102
            task._run()
08fcc2b6df99 refactoring task._run
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
   103
            self.assertFailure(task.d, NoRouteForTask)
08fcc2b6df99 refactoring task._run
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
   104
            return task.d
08fcc2b6df99 refactoring task._run
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
   105
08fcc2b6df99 refactoring task._run
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
   106
        d = exJobs.create(u, [Telnumber('123456789')], SMS('test'), [])
08fcc2b6df99 refactoring task._run
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
   107
        d.addCallback(c)
08fcc2b6df99 refactoring task._run
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
   108
        return d
08fcc2b6df99 refactoring task._run
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
   109
        
239
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   110
    def testNoRoute2(self):
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   111
        with self.session() as session:
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   112
            u = User(name='test',apikey='abcdef123456789')
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   113
            session.add(u)
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   114
            o=DBOffer(name="test", provider="bla", route="basic", typ="sms")
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   115
            u.rights.append(Userright(o)) 
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   116
            o=DBOffer(name="test2", provider="bla", route="basic2", typ="sms")
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   117
            u.rights.append(Userright(o)) 
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   118
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   119
        p=Provider(name="p", typs={"sms":["basic","basic2"]})
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   120
        def send(typ,route,recipient,message):
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   121
            raise RejectRecipient(recipient)
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   122
        p.send=send
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   123
        offers["test"] = Offer("test",provider=p, route="basic", typ="sms")
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   124
        offers["test2"] = Offer("test2",provider=p, route="basic2", typ="sms")
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   125
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   126
        def c(exjob):
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   127
            task = Task(Telnumber('123456789'), exjob)
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   128
            task.d = Deferred()
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   129
            task._run()
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   130
            self.assertFailure(task.d, NoRouteForTask)
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   131
            return task.d
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   132
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   133
        d = exJobs.create(u, [Telnumber('123456789')], SMS('test'), ['test','test2'])
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   134
        d.addCallback(c)
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 234
diff changeset
   135
        return d
175
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   136
243
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   137
    def testChaining(self):
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   138
        with self.session() as session:
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   139
            u = User(name='test',apikey='abcdef123456789')
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   140
            session.add(u)
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   141
            o=DBOffer(name="test", provider="bla", route="basic", typ="sms")
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   142
            u.rights.append(Userright(o)) 
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   143
            o=DBOffer(name="test2", provider="bla", route="basic2", typ="sms")
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   144
            u.rights.append(Userright(o)) 
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   145
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   146
        p=Provider(name="p", typs={"sms":["basic","basic2"]})
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   147
        def send(typ,route,recipient,message):
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   148
            if route=="basic":
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   149
                raise Exception("oh my god an exception")
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   150
            return Status(p,route)
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   151
        p.send=send
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   152
        offers["test"] = Offer("test",provider=p, route="basic", typ="sms")
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   153
        offers["test2"] = Offer("test2",provider=p, route="basic2", typ="sms")
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   154
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   155
        def c(exjob):
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   156
            task = Task(Telnumber('123456789'), exjob)
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   157
            task.d = Deferred()
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   158
            task.d.addCallback(stat, task)
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   159
            task._run()
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   160
            return task.d
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   161
       
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   162
        def stat(status, task): 
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   163
            errors = self.flushLoggedErrors(Exception)
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   164
            self.assertEqual(len(errors), 1)
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   165
            self.assertEqual(self.log.e[1]['why'], "Job(%s): Send to '0049123456789' failed via 'test'"% task.job.dbjob)
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   166
            self.assertIsInstance(status, Status)
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   167
            self.assertEqual(status.provider, p)
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   168
            self.assertEqual(status.route, "basic2")
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   169
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   170
        d = exJobs.create(u, [Telnumber('123456789')], SMS('test'), ['test','test2'])
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   171
        d.addCallback(c)
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   172
        return d
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   173
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   174
b348d8f15b0a tests for OfferChaning added
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   175
217
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
   176
    def testSetStatus(self):
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
   177
        task=Task(Telnumber('123456789'), None)
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
   178
        self.assertEqual(task.status,None)
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
   179
        self.assertEqual(task.error,False)
175
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   180
217
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
   181
        self.assertEqual(task.setStatus("fooja"),"fooja")
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
   182
        self.assertEqual(task.status,"fooja")
175
c29acd5fb841 splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   183
217
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
   184
    def testSetError(self):
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
   185
        task=Task(Telnumber('123456789'), None)
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
   186
        self.assertEqual(task.setError("fooja"),"fooja")
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
   187
        self.assertEqual(task.status,"fooja")
d755b2e0cc0b task now saves own status
Sandro Knauß <knauss@netzguerilla.net>
parents: 186
diff changeset
   188
        self.assertEqual(task.error,True)