tests/smstrade.py
branchdevel
changeset 215 5bacdb7e94d1
parent 214 bacf50bc46bf
child 216 ab8e2f26718e
equal deleted inserted replaced
214:bacf50bc46bf 215:5bacdb7e94d1
     1 from twisted.trial import unittest
     1 from twisted.trial import unittest
     2 
     2 from decimal import Decimal
     3 from mock import patch, Mock
     3 from mock import patch, Mock
     4 
     4 
     5 from iro.error import NoRoute, NoTyp, NeededOption, RejectRecipient
     5 from iro.error import NoRoute, NoTyp, NeededOption, RejectRecipient
     6 from iro.telnumber import Telnumber
     6 from iro.telnumber import Telnumber
     7 from iro.model.message import SMS
     7 from iro.model.message import SMS
     8 from iro.offer.smstrade import Smstrade, StatusException
     8 from iro.offer.smstrade import Smstrade, SmstradeException, StatusCode
       
     9 
     9 
    10 
    10 HOST = "localhost"
    11 HOST = "localhost"
    11 PORT = 9999
    12 PORT = 9999
    12 
    13 
    13 class TestSMStradeProvider(unittest.TestCase):
    14 class TestSMStradeProvider(unittest.TestCase):
    33         params = ["key=XXXXXXXX","to=00491701234567", "message=Hello+World", "route=gold", "message_id=1", "cost=1","count=1",'charset=utf-8']
    34         params = ["key=XXXXXXXX","to=00491701234567", "message=Hello+World", "route=gold", "message_id=1", "cost=1","count=1",'charset=utf-8']
    34         params.sort()
    35         params.sort()
    35         
    36         
    36         p=self.getProvider()
    37         p=self.getProvider()
    37         content = "Hello World"
    38         content = "Hello World"
    38         p.send("gold",SMS(content,None), Telnumber("01701234567"))
    39         r = p.send("gold",SMS(content,None), Telnumber("01701234567"))
    39 
    40 
    40         ca = mock_urlopen.call_args[0]
    41         ca = mock_urlopen.call_args[0]
    41         c=ca[1].split("&")
    42         c=ca[1].split("&")
    42         c.sort()
    43         c.sort()
    43         
    44         
    44         self.assertEqual(ca[0],"https://gateway.smstrade.de")
    45         self.assertEqual(ca[0],"https://gateway.smstrade.de")
    45         self.assertEqual(c,params)
    46         self.assertEqual(c,params)
    46         self.assertEqual(f.readlines.call_count,1)
    47         self.assertEqual(f.readlines.call_count,1)
    47 
    48 
       
    49         self.assertEqual(r.provider, p)
       
    50         self.assertEqual(r.route, 'gold')
       
    51         self.assertEqual(r.costs, Decimal('0.055'))
       
    52         self.assertEqual(r.exID, '12345678')
       
    53         self.assertEqual(r.count, 1)
       
    54 
    48     def testStatusCode(self):
    55     def testStatusCode(self):
    49         pass
    56         s = StatusCode(10,"12345678","1.10",1)
    50     
    57         self.assertEqual(str(s),'10: Empfaengernummer nicht korrekt.')
    51     testStatusCode.todo = "to implement"
    58         self.assertEqual(int(s),10)
       
    59         self.assertEqual(s.count,1)
       
    60         self.assertEqual(s.costs,Decimal("1.10"))
       
    61         self.assertEqual(s.exID,'12345678')
       
    62 
       
    63 
       
    64     def testUnknownStatusCode(self):
       
    65         s = StatusCode(999)
       
    66         self.assertEqual(str(s),'999: unknown statuscode.')
       
    67         self.assertEqual(int(s),999)
       
    68         self.assertEqual(s.count,0)
       
    69         self.assertEqual(s.costs,Decimal("0.00"))
       
    70         self.assertEqual(s.exID, None)
       
    71 
       
    72 
    52 
    73 
    53     def testRejectRecipient(self):
    74     def testRejectRecipient(self):
    54         p=self.getProvider()
    75         p=self.getProvider()
    55         content = "Hello World"
    76         content = "Hello World"
    56         e = self.assertRaises(RejectRecipient, p.send, "basic",SMS(content,None), Telnumber("+331701234567"))
    77         e = self.assertRaises(RejectRecipient, p.send, "basic",SMS(content,None), Telnumber("+331701234567"))
    76         f.readlines.return_value = ["703"]
    97         f.readlines.return_value = ["703"]
    77         mock_urlopen.return_value = f
    98         mock_urlopen.return_value = f
    78 
    99 
    79         p=self.getProvider()
   100         p=self.getProvider()
    80         content = "Hello World"
   101         content = "Hello World"
    81         e = self.assertRaises(StatusException, p.send , "basic", SMS(content,None), Telnumber("01701234567"))
   102         e = self.assertRaises(SmstradeException, p.send , "basic", SMS(content,None), Telnumber("01701234567"))
    82         self.assertEqual(str(e),'950:Error in external API.\n703: unknown statuscode.')
   103         self.assertEqual(str(e),'950:Error in external API.\n703: unknown statuscode.')
    83 
   104 
    84     @patch("urllib.urlopen")
   105     @patch("urllib.urlopen")
    85     def testStatusException(self,mock_urlopen):
   106     def testSmstradeException(self,mock_urlopen):
    86         f = Mock()
   107         f = Mock()
    87         f.readlines.return_value = ["10"]
   108         f.readlines.return_value = ["10"]
    88         mock_urlopen.return_value = f
   109         mock_urlopen.return_value = f
    89 
   110 
    90         p=self.getProvider()
   111         p=self.getProvider()
    91         content = "Hello World"
   112         content = "Hello World"
    92         e = self.assertRaises(StatusException, p.send , "basic", SMS(content,None), Telnumber("01701234567"))
   113         e = self.assertRaises(SmstradeException, p.send , "basic", SMS(content,None), Telnumber("01701234567"))
    93         self.assertEqual(str(e),'950:Error in external API.\n10: Empfaengernummer nicht korrekt.')
   114         self.assertEqual(str(e),'950:Error in external API.\n10: Empfaengernummer nicht korrekt.')
    94 
   115 
    95 
   116 
    96 
   117 
    97     def testNeededOption(self):
   118     def testNeededOption(self):