62 '''list of all offical Methods, that can be executed''' |
70 '''list of all offical Methods, that can be executed''' |
63 ret=self.__rpc2().listMethods() |
71 ret=self.__rpc2().listMethods() |
64 self.failUnlessEqual(ret, ['listMethods', 'status', 'stop', 'sms', 'fax', 'mail', 'routes', 'defaultRoute', 'statistic']) |
72 self.failUnlessEqual(ret, ['listMethods', 'status', 'stop', 'sms', 'fax', 'mail', 'routes', 'defaultRoute', 'statistic']) |
65 |
73 |
66 def testStatus(self): |
74 def testStatus(self): |
|
75 ''' test the status function''' |
|
76 with WithSession(md.engine, autocommit=True) as session: |
|
77 session.add(User(name='test',apikey='abcdef123456789')) |
67 ret = self.__rpc2().status('abcdef123456789') |
78 ret = self.__rpc2().status('abcdef123456789') |
68 self.failUnlessEqual(ret, "<User('test','abcdef123456789')>") |
79 self.failUnlessEqual(ret, "<User('test','abcdef123456789')>") |
69 self.failUnlessEqual(self.__rpc2().status('abcdef123456789','abcde'), ["<User('test','abcdef123456789')>",'abcde',False]) |
80 self.failUnlessEqual(self.__rpc2().status('abcdef123456789','abcde'), ["<User('test','abcdef123456789')>",'abcde',False]) |
70 self.failUnlessEqual(self.__rpc2().status('abcdef123456789','abcde', True), ["<User('test','abcdef123456789')>",'abcde', True]) |
81 self.failUnlessEqual(self.__rpc2().status('abcdef123456789','abcde', True), ["<User('test','abcdef123456789')>",'abcde', True]) |
71 self.failUnlessEqual(self.__rpc2().status('abcdef123456789', '', 'true'), ["<User('test','abcdef123456789')>", '', True]) |
82 self.failUnlessEqual(self.__rpc2().status('abcdef123456789', '', 'true'), ["<User('test','abcdef123456789')>", '', True]) |
72 self.failUnlessEqual(self.__rpc2().status('abcdef123456789', '', 'false'), "<User('test','abcdef123456789')>") |
83 self.failUnlessEqual(self.__rpc2().status('abcdef123456789', '', 'false'), "<User('test','abcdef123456789')>") |
73 self.failUnlessEqual(self.__rpc2().status('abcdef123456789', '', 0), "<User('test','abcdef123456789')>") |
84 self.failUnlessEqual(self.__rpc2().status('abcdef123456789', '', 0), "<User('test','abcdef123456789')>") |
74 self.failUnlessEqual(self.__rpc2().status('abcdef123456789', '', 1), ["<User('test','abcdef123456789')>", '', True]) |
85 self.failUnlessEqual(self.__rpc2().status('abcdef123456789', '', 1), ["<User('test','abcdef123456789')>", '', True]) |
75 |
86 |
76 |
|
77 def testNoSuchUser(self): |
87 def testNoSuchUser(self): |
78 '''a unknown user should raise a UserNotNound Exception |
88 '''a unknown user should raise a UserNotNound Exception |
79 bewcause xmlrpc only has a Fault exception this Exception has to be deliverd through a xmlrpclib.Fault Exception''' |
89 bewcause xmlrpc only has a Fault exception this Exception has to be deliverd through a xmlrpclib.Fault Exception''' |
80 with self.assertRaises(Fault) as fault: |
90 with self.assertRaises(Fault) as fault: |
81 self.__rpc2().status('abcdef123456788') |
91 self.__rpc2().status('abcdef123456789') |
82 exc = fault.exception |
92 exc = fault.exception |
83 unf=IroError.UserNotFound() |
93 unf=IroError.UserNotFound() |
84 self.failUnlessEqual(exc.faultCode, unf.code) |
94 self.failUnlessEqual(exc.faultCode, unf.code) |
85 self.failUnlessEqual(exc.faultString, unf.msg) |
95 self.failUnlessEqual(exc.faultString, unf.msg) |
86 |
96 |
97 with self.assertRaises(Fault) as fault: |
107 with self.assertRaises(Fault) as fault: |
98 self.__rpc2().status('xxx') |
108 self.__rpc2().status('xxx') |
99 exc = fault.exception |
109 exc = fault.exception |
100 self.failUnlessEqual(exc.faultCode, 700) |
110 self.failUnlessEqual(exc.faultCode, 700) |
101 self.failUnlessEqual(exc.faultString, "Validation of 'apikey' failed.") |
111 self.failUnlessEqual(exc.faultString, "Validation of 'apikey' failed.") |
|
112 |
|
113 def testRoutes(self): |
|
114 '''test the route function''' |
|
115 with WithSession(md.engine, autocommit=True) as session: |
|
116 u=User(name='test',apikey='abcdef123456789') |
|
117 o=Offer(name="sipgate_basic", provider="sipgate", route="basic", typ="sms") |
|
118 u.rights.append(Userright(o)) |
|
119 session.add(u) |
|
120 self.failUnlessEqual(self.__rpc2().routes('abcdef123456789','sms'),['sipgate_basic']) |
|
121 |
|
122 with self.assertRaises(Fault) as fault: |
|
123 self.__rpc2().routes('abcdef123456789','fax') |
|
124 exc = fault.exception |
|
125 self.failUnlessEqual(exc.faultCode, 700) |
|
126 self.failUnlessEqual(exc.faultString, "Typ is not valid.") |
|
127 |
|
128 with WithSession(md.engine, autocommit=True) as session: |
|
129 o=Offer(name="sipgate_plus", provider="sipgate", route="plus", typ="sms") |
|
130 u = session.query(User).filter_by(name="test").first() |
|
131 u.rights.append(Userright(o)) |
|
132 session.commit() |
|
133 self.failUnlessEqual(self.__rpc2().routes('abcdef123456789','sms'),['sipgate_basic','sipgate_plus']) |
102 |
134 |
103 def startReactor(engine): |
135 def startReactor(engine): |
104 """starts the Rector with a special debug Clild, so that the reactor can be stopped remotly. """ |
136 """starts the Rector with a special debug Clild, so that the reactor can be stopped remotly. """ |
105 from twisted.internet import reactor |
137 from twisted.internet import reactor |
106 from twisted.web import xmlrpc, resource |
138 from twisted.web import xmlrpc, resource |