from twisted.trial import unittest
from mock import patch, Mock
from iro.error import NoRoute, NoTyp, NeededOption, UnknownOption
from iro.telnumber import Telnumber
from iro.model.message import SMS
from iro.offer import Smstrade
HOST = "localhost"
PORT = 9999
class TestSMStradeProvider(unittest.TestCase):
def getProvider(self, c=None):
ret={"key":"XXXXXX",
}
if c:
ret.update(c)
return Smstrade("test",ret.items())
@patch("urllib.urlopen")
def testSendSMS(self,mock_urlopen):
f = Mock()
f.readlines.return_value = ["100","12345678","0.055","1"]
mock_urlopen.return_value = f
params = ["key=XXXXXX","to=00491701234567", "message=Hello+World", "route=gold", "message_id=1", "cost=1","count=1",'charset=utf-8']
params.sort()
p=self.getProvider()
content = "Hello World"
p.send("gold",SMS(content,None), Telnumber("01701234567"))
ca = mock_urlopen.call_args[0]
c=ca[1].split("&")
c.sort()
self.assertEqual(ca[0],"https://gateway.smstrade.de")
self.assertEqual(c,params)
self.assertEqual(f.readlines.call_count,1)
def testStatusCode(self):
pass
testStatusCode.todo = "to implement"
def testNeededOption(self):
c={"key":"XXXXXXXX",}
s=Smstrade("test",c.items())
self.assertEqual(s.key, "XXXXXXXX")
self.assertRaises(NeededOption,Smstrade,"test",[])
c = {"unknown":""}
self.assertRaises(UnknownOption,Smstrade,"test",c.items())
def testSendFunc(self):
s = self.getProvider()
p = s.getSendFunc("sms","basic")
self.assertEqual(p.func, s.send)
self.assertEqual(p.args, ("basic",))
self.assertRaises(NoRoute,s.getSendFunc,"sms","foo")
self.assertRaises(NoTyp,s.getSendFunc,"mail2","basic")