redefinition of Status
Exception should be raised directly, not via Status , 'cause of Traceback
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.55","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"
status = p.send("gold",SMS(content,None), Telnumber("01701234567"))
self.assertEqual(status.status, status.GOOD)
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 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")