tests/smstrade.py
branchdevel
changeset 172 adfe245c377d
child 177 6c76753f9056
equal deleted inserted replaced
171:5619596a0053 172:adfe245c377d
       
     1 from twisted.trial import unittest
       
     2 
       
     3 from mock import patch, Mock
       
     4 
       
     5 from iro.error import NoRoute, NoTyp, NeededOption, UnknownOption
       
     6 from iro.telnumber import Telnumber
       
     7 from iro.model.message import SMS
       
     8 from iro.offer import Smstrade
       
     9 
       
    10 HOST = "localhost"
       
    11 PORT = 9999
       
    12 
       
    13 class TestSMStradeProvider(unittest.TestCase):
       
    14 
       
    15     def getProvider(self, c=None):
       
    16         ret={"key":"XXXXXX",
       
    17             }
       
    18 
       
    19         if c:
       
    20             ret.update(c)
       
    21 
       
    22         return Smstrade("test",ret.items())
       
    23 
       
    24     @patch("urllib.urlopen")
       
    25     def testSendSMS(self,mock_urlopen):
       
    26         f = Mock()
       
    27         f.readlines.return_value = ["100","12345678","0.55","1"]
       
    28         mock_urlopen.return_value = f
       
    29 
       
    30         params = ["key=XXXXXX","to=00491701234567", "message=Hello+World", "route=gold", "message_id=1", "cost=1","count=1",'charset=utf-8']
       
    31         params.sort()
       
    32         
       
    33         p=self.getProvider()
       
    34         content = "Hello World"
       
    35         status = p.send("gold",SMS(content,None), Telnumber("01701234567"))
       
    36 
       
    37         self.assertEqual(status.status, status.GOOD)
       
    38 
       
    39         ca = mock_urlopen.call_args[0]
       
    40         c=ca[1].split("&")
       
    41         c.sort()
       
    42         
       
    43         self.assertEqual(ca[0],"https://gateway.smstrade.de")
       
    44         self.assertEqual(c,params)
       
    45         self.assertEqual(f.readlines.call_count,1)
       
    46 
       
    47     
       
    48     def testNeededOption(self):
       
    49         c={"key":"XXXXXXXX",}
       
    50         s=Smstrade("test",c.items())
       
    51         self.assertEqual(s.key, "XXXXXXXX")
       
    52 
       
    53         self.assertRaises(NeededOption,Smstrade,"test",[])
       
    54 
       
    55         c = {"unknown":""}
       
    56         self.assertRaises(UnknownOption,Smstrade,"test",c.items())
       
    57 
       
    58     def testSendFunc(self):
       
    59         s = self.getProvider()
       
    60         p = s.getSendFunc("sms","basic")
       
    61         self.assertEqual(p.func, s.send)
       
    62         self.assertEqual(p.args, ("basic",))
       
    63         self.assertRaises(NoRoute,s.getSendFunc,"sms","foo")
       
    64         self.assertRaises(NoTyp,s.getSendFunc,"mail2","basic")