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): |
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 |