tests/job.py
author Sandro Knauß <knauss@netzguerilla.net>
Tue, 07 Feb 2012 01:56:59 +0100
branchdevel
changeset 135 f8640c663e3e
child 140 75d0eaaa871d
permissions -rw-r--r--
model.job created
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
135
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     1
import unittest
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     2
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     3
from iro.controller.task import createJob
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     4
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     5
from iro.model.job import jobs, Job
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     6
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     7
from iro.model.pool import data
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     8
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     9
from iro.model.message import SMS, Fax, Mail
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    10
from iro.model.schema import Job as DBJob, User
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    11
from iro.telnumber import Telnumber
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    12
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    13
from iro.error import JobNotFound
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    14
from iro.validate import vHash
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    15
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    16
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    17
from .dbtestcase import DBTestCase, setUpModule, tearDownModule
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    18
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    19
#activates all logging we can get.
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    20
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    21
from twisted.python import log
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    22
import logging
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    23
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(name)s(%(processName)s)-%(levelname)s: %(message)s')
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    24
observer = log.PythonLoggingObserver()
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    25
observer.start()
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    26
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    27
class DumpPool():
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    28
    def run(self, f,*a,**k):
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    29
        return f(*a,**k)
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    30
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    31
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    32
data.pool=DumpPool()
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    33
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    34
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    35
class JobsTest(DBTestCase):
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    36
    '''tests for jobs'''
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    37
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    38
    def tearDown(self):
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    39
        jobs.clear()
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    40
        DBTestCase.tearDown(self)
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    41
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    42
    def testCreate(self):
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    43
        with self.session() as session:
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    44
            u = User(name='test',apikey='abcdef123456789')
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    45
            session.add(u)
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    46
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    47
        job = jobs.create(u, [Telnumber('123456789')], SMS('test'), ['test'])
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    48
        self.assertIsInstance(job, Job)
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    49
        self.assertTrue(vHash(job.id, None, 40, 40))
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    50
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    51
        with self.session() as session:
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    52
            j = session.query(DBJob.hash).all()
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    53
            self.assertEqual(j,[(job.id,)])
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    54
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    55
        self.assertEqual(jobs[job.id],job)
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    56
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    57
    def testGet(self):
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    58
        with self.session() as session:
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    59
            u = User(name='test',apikey='abcdef123456789')
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    60
            session.add(u)
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    61
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    62
        job = Job(u, [Telnumber('123456789')], SMS('test'), ['test'])
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    63
        jobs['a1'] = job
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    64
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    65
        self.assertEqual(len(jobs), 1)
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    66
        self.assertEqual(job, jobs['a1'])
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    67
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    68
    def testGetFromDB(self):
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    69
        with self.session() as session:
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    70
            u = User(name='test',apikey='abcdef123456789')
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    71
            job = DBJob(hash='a1', info="info", status="started")
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    72
            u.jobs.append(job)
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    73
            session.add(u)
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    74
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    75
        with self.session() as session:
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    76
            job = session.merge(job)
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    77
            u = session.merge(u)
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    78
            self.assertEqual(repr(jobs['a1'].dbjob),repr(job))
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    79
            self.assertEqual(repr(jobs['a1'].user),repr(u))
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    80
            self.assertEqual(jobs['a1'].info, 'info')
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    81
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    82
    def testUnknownJob(self):
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    83
        with self.assertRaises(JobNotFound):
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    84
            Job.fromDB('a1234567890')
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    85
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    86
        with self.assertRaises(KeyError):
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    87
            jobs['a1234567890']
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    88
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    89
    @unittest.skip('test not implemented')
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    90
    def testSyncroniced(self):
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    91
        pass
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    92
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    93
class JobTest(DBTestCase):
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    94
    def testCreateSMS(self):
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    95
        job = createJob([],SMS('sms'),[])
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    96
        pass
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    97
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    98
    def testCreateFax(self):
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    99
        job = createJob([],Fax('header','fax',[]),[])
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   100
        pass
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   101
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   102
    def testCreateMail(self):
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   103
        job = createJob([],Mail('sub','body','t@t.de'),[])
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   104
    
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   105
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   106
if __name__ == '__main__':
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   107
        unittest.main()