--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/iro/tests/sipgate.py Tue Apr 24 23:59:00 2012 +0200
@@ -0,0 +1,85 @@
+# -*- coding: utf-8 -*-
+from twisted.trial import unittest
+from twisted.web import xmlrpc, server
+from twisted.internet import reactor
+from decimal import Decimal
+
+from iro.error import NoRoute, NoTyp, NeededOption, RejectRecipient
+from iro.telnumber import Telnumber
+from iro.model.message import SMS, Fax
+from iro.offer.sipgate import Sipgate
+
+
+class XMLRPCServer(xmlrpc.XMLRPC):
+ def lookupProcedure(self, procedurePath):
+ return self.l[procedurePath]
+
+class TestSipgateProvider(unittest.TestCase):
+
+ def setUp(self):
+ self.server = XMLRPCServer()
+ self.p = reactor.listenTCP(0, server.Site(self.server),
+ interface="127.0.0.1")
+ self.port = self.p.getHost().port
+
+ def tearDown(self):
+ self.server = None
+ return self.p.stopListening()
+
+ def getProvider(self, c=None):
+ _c={"username":"XXXXXXXX",
+ "password":"PPPPPPPP",
+ "typ": "sipgate"
+ }
+
+ if c:
+ _c.update(c)
+
+ ret = Sipgate("test")
+ ret.url="http://%%s:%%s@127.0.0.1:%d/" % self.port
+ ret.load(_c.items())
+ return ret
+
+ def testSendSMS(self):
+ p=self.getProvider()
+ content = u"Hello World - äüöß'\""
+
+ @xmlrpc.withRequest
+ def f(request, args):
+ self.assertEqual(request.getUser(),"XXXXXXXX")
+ self.assertEqual(request.getPassword(),"PPPPPPPP")
+ self.assertEqual(args,{'Content': u'Hello World - äüöß\'"',
+ 'TOS': 'text',
+ 'RemoteUri': 'sip:491701234567@sipgate.net'})
+ return {"SessionID":"", "StatusCode":200, "StatusString":"Method success"}
+
+ self.server.l = {"samurai.SessionInitiate": f}
+
+ def s(r):
+ self.assertEqual(r.provider, p)
+ self.assertEqual(r.route, None)
+ self.assertEqual(r.costs, Decimal('0.079'))
+ self.assertEqual(r.exID, '')
+ self.assertEqual(r.count, 1)
+
+ d = p.send("sms", Telnumber("01701234567"), SMS(content,None))
+ d.addCallback(s)
+ return d
+
+
+ def testNeededOption(self):
+ s= self.getProvider()
+ self.assertEqual(s.username, "XXXXXXXX")
+ self.assertEqual(s.password, "PPPPPPPP")
+ self.assertEqual(s.price_sms, '0.079')
+ self.assertEqual(s.price_fax, '0.03')
+
+ self.assertRaises(NeededOption, s.load,[])
+
+ def testSendFunc(self):
+ s = self.getProvider()
+ p = s.getSendFunc("sms",None)
+ self.assertEqual(p.func, s.send)
+ self.assertEqual(p.args, ("sms",))
+ self.assertRaises(NoRoute,s.getSendFunc,"sms","foo")
+ self.assertRaises(NoTyp,s.getSendFunc,"mail2",None)