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): |