tests/offer.py
branchdevel
changeset 157 0192f9107870
parent 150 c6896c3374c4
child 159 fbd7364b252d
equal deleted inserted replaced
156:a4ad521b127b 157:0192f9107870
     1 from twisted.internet import reactor
     1 from twisted.internet import reactor
     2 from twisted.internet.defer import inlineCallbacks
     2 from twisted.internet.defer import inlineCallbacks
     3 
     3 
       
     4 import io
       
     5 
     4 from iro.model import offer
     6 from iro.model import offer
     5 from iro.config import config
     7 from iro.config import config
     6 
     8 from iro.offer import Offer, providers as OfferProviders, Provider
     7 from iro.offer.offer import Offer
       
     8 from iro.model.schema import User, Offer as DBOffer, Userright
     9 from iro.model.schema import User, Offer as DBOffer, Userright
     9 from iro.controller.pool  import dbPool
    10 from iro.controller.pool  import dbPool
       
    11 from iro.error import NoProvider
    10 from .dbtestcase import DBTestCase
    12 from .dbtestcase import DBTestCase
    11 
    13 
    12 class TestOffers(DBTestCase):
    14 class TestOffers(DBTestCase):
    13     '''test config class'''
    15     '''test config class'''
    14     def setUp(self):
    16     def setUp(self):
    16         dbPool.start(reactor)
    18         dbPool.start(reactor)
    17 
    19 
    18     def tearDown(self):
    20     def tearDown(self):
    19         dbPool.pool.stop()
    21         dbPool.pool.stop()
    20         offer.offers.clear()
    22         offer.offers.clear()
       
    23         try:
       
    24             del(OfferProviders["test"])
       
    25         except KeyError:
       
    26             pass
       
    27         offer.providers.clear()
    21         DBTestCase.tearDown(self)
    28         DBTestCase.tearDown(self)
    22 
    29 
    23     def testReloadList(self):
    30     def testReloadList(self):
    24         '''test if loadOffers will be fired by reloading Config'''
    31         '''test if loadOffers will be fired by reloading Config'''
    25         self.assertTrue(offer.loadOffers in config.reloadList)
    32         self.assertTrue(offer.loadOffers in config.reloadList)
    58             u = User(name='test',apikey='abcdef123456789')
    65             u = User(name='test',apikey='abcdef123456789')
    59             session.add(u)
    66             session.add(u)
    60             o=DBOffer(name="oh", provider="bla", route="a", typ="sms")
    67             o=DBOffer(name="oh", provider="bla", route="a", typ="sms")
    61             u.rights.append(Userright(o)) 
    68             u.rights.append(Userright(o)) 
    62         
    69         
    63         offer.offers={"bla":Offer("bla",["a","b","c"])}
    70         offer.providers={"bla":Provider("bla",None, ["a","b","c"])}
    64 
    71 
    65         for l in [['bla'],['oh'],['oh','bla'],['bla','oh']]:
    72         for l in [['bla'],['oh'],['oh','bla'],['bla','oh']]:
    66             ret = yield offer.extendProvider(u, "sms", l)
    73             ret = yield offer.extendProvider(u, "sms", l)
    67             self.assertEqual(ret, ["oh"])
    74             self.assertEqual(ret, ["oh"])
    68 
    75 
    75             o=DBOffer(name="oh", provider="bla", route="a", typ="sms")
    82             o=DBOffer(name="oh", provider="bla", route="a", typ="sms")
    76             u.rights.append(Userright(o)) 
    83             u.rights.append(Userright(o)) 
    77             o=DBOffer(name="a", provider="bla", route="b", typ="sms")
    84             o=DBOffer(name="a", provider="bla", route="b", typ="sms")
    78             u.rights.append(Userright(o)) 
    85             u.rights.append(Userright(o)) 
    79         
    86         
    80         offer.offers={"bla":Offer("bla",["a","b","c"])}
    87         offer.providers={"bla":Provider("bla", None, ["a","b","c"])}
    81 
    88 
    82         ret = yield offer.extendProvider(u, "sms",  ["bla"])
    89         ret = yield offer.extendProvider(u, "sms",  ["bla"])
    83         self.assertEqual(ret, ["oh","a"])
    90         self.assertEqual(ret, ["oh","a"])
    84     
    91     
    85         ret = yield offer.extendProvider(u, "sms",  ["a","bla"])
    92         ret = yield offer.extendProvider(u, "sms",  ["a","bla"])
    86         self.assertEqual(ret, ["a","oh"])
    93         self.assertEqual(ret, ["a","oh"])
    87 
    94 
    88         ret = yield offer.extendProvider(u, "sms",  ["bla", "a"])
    95         ret = yield offer.extendProvider(u, "sms",  ["bla", "a"])
    89         self.assertEqual(ret, ["oh","a"])
    96         self.assertEqual(ret, ["oh","a"])
    90 
    97 
       
    98     @inlineCallbacks
       
    99     def testLoadOffers(self):
       
   100         
       
   101         class TestProvider(Provider):
       
   102             def __init__(self,name,config):
       
   103                 Provider.__init__(self,name,config,["a",])
       
   104         
       
   105         with self.session() as session:
       
   106             session.add(DBOffer(name="oh", provider="p", route="a", typ="sms"))
       
   107 
       
   108         sample_config = """[p]
       
   109 typ = test
       
   110 """
       
   111         config.readfp(io.BytesIO(sample_config))
       
   112         OfferProviders["test"]=TestProvider
       
   113         yield offer.loadOffers()        
       
   114         self.assertEqual(offer.offers.keys(),["oh"])
       
   115         self.assertEqual(offer.providers.keys(),["p"])
       
   116         self.assertEqual(offer.providers["p"].name,"p")
       
   117         self.assertEqual(offer.providers["p"].typ,"test")
       
   118         self.assertEqual(offer.offers["oh"],Offer(provider=offer.providers["p"], name="oh", route="a", typ="sms"))
       
   119 
       
   120     def testLoadOffersUnknown(self):
       
   121         with self.session() as session:
       
   122             session.add(DBOffer(name="oh", provider="p", route="a", typ="sms"))
       
   123 
       
   124         sample_config = """[p]
       
   125 typ = unknown
       
   126 """
       
   127         config.readfp(io.BytesIO(sample_config))
       
   128         d = offer.loadOffers()        
       
   129         self.assertFailure(d, NoProvider)
       
   130