| author | Sandro Knauß <knauss@netzguerilla.net> |
| Mon, 27 Feb 2012 22:20:19 +0100 | |
| branch | devel |
| changeset 192 | 6c708c334f37 |
| parent 191 | 1816e97881ce |
| child 198 | 85ede27b1add |
| permissions | -rw-r--r-- |
| 190 | 1 |
from twisted.internet.defer import inlineCallbacks |
2 |
from datetime import datetime |
|
|
191
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
3 |
from Queue import deque |
| 190 | 4 |
|
5 |
from iro.model.schema import User, Offer, Userright, Job, Message |
|
6 |
from iro.controller.viewinterface import Interface |
|
|
191
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
7 |
from iro.controller.pool import taskPool |
|
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
8 |
|
|
192
6c708c334f37
test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents:
191
diff
changeset
|
9 |
from iro.model.message import SMS, Fax, Mail |
| 190 | 10 |
from iro.model.pool import data |
|
191
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
11 |
from iro.model.offer import offers |
|
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
12 |
from iro.model.job import exJobs |
| 190 | 13 |
|
14 |
import iro.error as IroError |
|
15 |
||
16 |
from .dbtestcase import DBTestCase |
|
17 |
||
18 |
class DummyPool(): |
|
19 |
def run(self, f,*a,**k): |
|
20 |
return f(*a,**k) |
|
21 |
||
22 |
class ViewInterfaceTest(DBTestCase): |
|
23 |
"""tests for the xmlrpc interface""" |
|
24 |
def setUp(self): |
|
25 |
DBTestCase.setUp(self) |
|
26 |
self.pool = data.pool |
|
27 |
data.pool = DummyPool() |
|
28 |
||
29 |
def tearDown(self): |
|
|
191
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
30 |
exJobs.clear() |
|
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
31 |
offers.clear() |
|
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
32 |
taskPool.pool.q.queue = deque() |
| 190 | 33 |
data.pool = self.pool |
34 |
self.pool = None |
|
35 |
DBTestCase.tearDown(self) |
|
36 |
||
37 |
@inlineCallbacks |
|
38 |
def testStatus(self): |
|
39 |
''' test the status function''' |
|
40 |
with self.session() as session: |
|
41 |
u = User(name='test',apikey='abcdef123456789') |
|
42 |
session.add(User(name='test',apikey='abcdef123456789')) |
|
43 |
st = yield Interface().status('abcdef123456789') |
|
44 |
self.assertEqual(st, {}) |
|
45 |
||
46 |
with self.session() as session: |
|
47 |
u = session.merge(u) |
|
48 |
j = Job(info='info', status="started") |
|
49 |
j.user=u |
|
50 |
session.add(j) |
|
51 |
session.commit() |
|
52 |
jid=j.id |
|
53 |
status = {str(jid):{"status":"started"}} |
|
54 |
st = yield Interface().status('abcdef123456789',jid) |
|
55 |
self.assertEqual(st, status) |
|
56 |
st = yield Interface().status('abcdef123456789') |
|
57 |
self.assertEqual(st, status) |
|
58 |
st = yield Interface().status('abcdef123456789', '', 'false') |
|
59 |
self.assertEqual(st, status) |
|
60 |
st = yield Interface().status('abcdef123456789', '', 0) |
|
61 |
self.assertEqual(st, status) |
|
62 |
||
63 |
#JobNotFound |
|
64 |
d = Interface().status('abcdef123456789',jid+1) |
|
65 |
self.assertFailure(d, IroError.JobNotFound) |
|
66 |
yield d |
|
67 |
||
68 |
#self.assertEqual(self.__rpc2().status('abcdef123456789','abcde', True), ["<User('test','abcdef123456789')>",'abcde', True]) |
|
69 |
#self.assertEqual(self.__rpc2().status('abcdef123456789', '', 'true'), ["<User('test','abcdef123456789')>", '', True]) |
|
70 |
#self.assertEqual(self.__rpc2().status('abcdef123456789', '', 1), ["<User('test','abcdef123456789')>", '', True]) |
|
71 |
||
72 |
def testNoSuchUser(self): |
|
73 |
'''a unknown user should raise a UserNotNound Exception |
|
74 |
bewcause xmlrpc only has a Fault exception this Exception has to be deliverd through a xmlrpclib.Fault Exception''' |
|
75 |
d = Interface().status('abcdef123456789') |
|
76 |
self.assertFailure(d, IroError.UserNotFound) |
|
77 |
return d |
|
78 |
||
79 |
||
80 |
def testValidationFault(self): |
|
81 |
'''a validate Exception should be translated to a xmlrpclib.Fault.''' |
|
82 |
d = Interface().status('xxx') |
|
83 |
self.assertFailure(d, IroError.ValidateException) |
|
84 |
||
85 |
@inlineCallbacks |
|
86 |
def testRoutes(self): |
|
87 |
'''test the route function''' |
|
88 |
with self.session() as session: |
|
89 |
u=User(name='test',apikey='abcdef123456789') |
|
90 |
o=Offer(name="sipgate_basic", provider="sipgate", route="basic", typ="sms") |
|
91 |
u.rights.append(Userright(o)) |
|
92 |
session.add(u) |
|
93 |
r = yield Interface().routes('abcdef123456789','sms') |
|
94 |
self.assertEqual(r, ['sipgate_basic']) |
|
95 |
||
96 |
d = Interface().routes('abcdef123456789','fax') |
|
97 |
self.assertFailure(d,IroError.ValidateException) |
|
98 |
yield d |
|
99 |
||
100 |
with self.session() as session: |
|
101 |
o=Offer(name="sipgate_plus", provider="sipgate", route="plus", typ="sms") |
|
102 |
u = session.query(User).filter_by(name="test").first() |
|
103 |
u.rights.append(Userright(o)) |
|
104 |
o=Offer(name="faxde", provider="faxde", route="", typ="fax") |
|
105 |
session.add(o) |
|
106 |
session.commit() |
|
107 |
||
108 |
r = yield Interface().routes('abcdef123456789','sms') |
|
109 |
self.assertEqual(r, ['sipgate_basic','sipgate_plus']) |
|
110 |
r = yield Interface().routes('abcdef123456789','fax') |
|
111 |
self.assertEqual(r, []) |
|
112 |
||
113 |
||
114 |
with self.session() as session: |
|
115 |
u = session.query(User).filter_by(name="test").first() |
|
116 |
u.rights.append(Userright(o)) |
|
117 |
||
118 |
r = yield Interface().routes('abcdef123456789','sms') |
|
119 |
self.assertEqual(r, ['sipgate_basic','sipgate_plus']) |
|
120 |
r = yield Interface().routes('abcdef123456789','fax') |
|
121 |
self.assertEqual(r, ['faxde']) |
|
122 |
||
123 |
@inlineCallbacks |
|
124 |
def testDefaultRoutes(self): |
|
125 |
'''test the defaultRoute function''' |
|
126 |
with self.session() as session: |
|
127 |
u=User(name='test',apikey='abcdef123456789') |
|
128 |
o=Offer(name="sipgate_basic", provider="sipgate", route="basic", typ="sms") |
|
129 |
u.rights.append(Userright(o,True)) |
|
130 |
o=Offer(name="sipgate_plus", provider="sipgate", route="plus", typ="sms") |
|
131 |
u.rights.append(Userright(o)) |
|
132 |
session.add(u) |
|
133 |
r = yield Interface().defaultRoute('abcdef123456789','sms') |
|
134 |
self.assertEqual(r, ['sipgate_basic']) |
|
135 |
||
136 |
@inlineCallbacks |
|
137 |
def testTelnumbers(self): |
|
138 |
'''test the telefon validator''' |
|
139 |
r = yield Interface().telnumber(["0123/456(78)","+4912346785433","00123435456-658"]) |
|
140 |
self.assertEqual(r, True) |
|
141 |
||
142 |
invalid=['xa','+1','1-23',';:+0','0123'] |
|
143 |
||
144 |
d = Interface().telnumber(['01234']+invalid) |
|
145 |
def x(failure): |
|
146 |
self.assertEqual(failure.getErrorMessage(),"701:No valid telnumber: '%s'"%invalid[0]) |
|
147 |
failure.raiseException() |
|
148 |
d.addErrback(x) |
|
149 |
self.assertFailure(d, IroError.InvalidTel) |
|
150 |
yield d |
|
151 |
||
152 |
@inlineCallbacks |
|
153 |
def testVaildEmail(self): |
|
154 |
'''test vaild email adresses (got from wikipedia)''' |
|
155 |
validmails=["niceandsimple@example.com"] |
|
156 |
r = yield Interface().email(validmails) |
|
157 |
self.assertEqual(r,True) |
|
158 |
||
159 |
def testInvaildEmail(self): |
|
160 |
'''test invaild email adresses (got from wikipedia)''' |
|
161 |
invalid=["Abc.example.com",] |
|
162 |
d = Interface().email(invalid) |
|
163 |
self.assertFailure(d, IroError.InvalidMail) |
|
164 |
return d |
|
165 |
||
166 |
@inlineCallbacks |
|
167 |
def testBill(self): |
|
168 |
'''test bill function''' |
|
169 |
apikey='abcdef123456789' |
|
170 |
with self.session() as session: |
|
171 |
u=User(name='test',apikey=apikey) |
|
172 |
session.add(u) |
|
173 |
||
174 |
r = yield Interface().bill(apikey) |
|
175 |
self.assertEqual(r,{'total':{'price':0.0,'anz':0}}) |
|
176 |
||
177 |
with self.session() as session: |
|
178 |
u = session.merge(u) |
|
179 |
o = Offer(name='sipgate_basic',provider="sipgate",route="basic",typ="sms") |
|
180 |
u.rights.append(Userright(o)) |
|
181 |
j = Job(info='i',status='sended') |
|
182 |
j.messages.append(Message(recipient='0123456789', isBilled=False, date=datetime.now() , price=0.4, offer=o)) |
|
183 |
u.jobs.append(j) |
|
184 |
||
185 |
j = Job(info='a',status='sended') |
|
186 |
j.messages.append(Message(recipient='0123456789', isBilled=False, date=datetime.now(), price=0.4, offer=o)) |
|
187 |
u.jobs.append(j) |
|
188 |
||
189 |
ret=yield Interface().bill(apikey) |
|
190 |
self.assertEqual(ret['total'],{'price':0.8,'anz':2}) |
|
191 |
self.assertEqual(ret['sipgate_basic'], |
|
192 |
{'price':0.8,'anz':2, |
|
193 |
'info':{'i':{'price':0.4,'anz':1}, |
|
194 |
'a':{'price':0.4,'anz':1}, |
|
195 |
} |
|
196 |
}) |
|
197 |
||
|
191
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
198 |
@inlineCallbacks |
|
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
199 |
def testSMS(self): |
|
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
200 |
with self.session() as session: |
|
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
201 |
u = User(name='test',apikey='abcdef123456789') |
|
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
202 |
o = Offer(name='sipgate_basic',provider="sipgate",route="basic",typ="sms") |
|
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
203 |
u.rights.append(Userright(o)) |
|
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
204 |
session.add(u) |
|
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
205 |
|
|
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
206 |
jobid = yield Interface().sms('abcdef123456789','message',['0123325456'],['basic']) |
|
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
207 |
|
|
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
208 |
with self.session() as session: |
|
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
209 |
u = session.merge(u) |
|
192
6c708c334f37
test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents:
191
diff
changeset
|
210 |
job = u.job(jobid) |
|
6c708c334f37
test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents:
191
diff
changeset
|
211 |
exJob = job.extend |
|
6c708c334f37
test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents:
191
diff
changeset
|
212 |
|
|
6c708c334f37
test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents:
191
diff
changeset
|
213 |
self.assertEqual(exJob.message,SMS("message",None)) |
|
191
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
214 |
self.assertEqual(taskPool.pool.q.qsize(),1) |
| 190 | 215 |
|
216 |
||
|
192
6c708c334f37
test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents:
191
diff
changeset
|
217 |
@inlineCallbacks |
|
191
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
218 |
def testMail(self): |
|
192
6c708c334f37
test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents:
191
diff
changeset
|
219 |
with self.session() as session: |
|
6c708c334f37
test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents:
191
diff
changeset
|
220 |
u = User(name='test',apikey='abcdef123456789') |
|
6c708c334f37
test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents:
191
diff
changeset
|
221 |
o = Offer(name='loc',provider="localhost",route="",typ="mail") |
|
6c708c334f37
test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents:
191
diff
changeset
|
222 |
u.rights.append(Userright(o)) |
|
6c708c334f37
test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents:
191
diff
changeset
|
223 |
session.add(u) |
|
6c708c334f37
test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents:
191
diff
changeset
|
224 |
|
|
6c708c334f37
test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents:
191
diff
changeset
|
225 |
jobid = yield Interface().mail('abcdef123456789','sub', "hey body!", ['t@te.de'], "frm@t.de" ,['loc']) |
|
6c708c334f37
test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents:
191
diff
changeset
|
226 |
with self.session() as session: |
|
6c708c334f37
test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents:
191
diff
changeset
|
227 |
u = session.merge(u) |
|
6c708c334f37
test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents:
191
diff
changeset
|
228 |
job = u.job(jobid) |
|
6c708c334f37
test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents:
191
diff
changeset
|
229 |
exJob = job.extend |
|
6c708c334f37
test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents:
191
diff
changeset
|
230 |
|
|
6c708c334f37
test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents:
191
diff
changeset
|
231 |
self.assertEqual(exJob.message,Mail("sub",'hey body!','frm@t.de')) |
|
6c708c334f37
test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents:
191
diff
changeset
|
232 |
self.assertEqual(taskPool.pool.q.qsize(),1) |
| 190 | 233 |
|
|
191
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
234 |
def testFax(self): |
|
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
235 |
pass |
|
1816e97881ce
test viewinterface.sms added
Sandro Knauß <knauss@netzguerilla.net>
parents:
190
diff
changeset
|
236 |
testFax.todo = "To implement" |