aboutsummaryrefslogtreecommitdiff
path: root/tests/test_pandora/test_transport.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_pandora/test_transport.py')
-rw-r--r--tests/test_pandora/test_transport.py60
1 files changed, 32 insertions, 28 deletions
diff --git a/tests/test_pandora/test_transport.py b/tests/test_pandora/test_transport.py
index 851fa06..28ca6b2 100644
--- a/tests/test_pandora/test_transport.py
+++ b/tests/test_pandora/test_transport.py
@@ -16,12 +16,12 @@ class SysCallError(Exception):
16 16
17 17
18class TestTransport(TestCase): 18class TestTransport(TestCase):
19
20 def test_test_url_should_return_true_if_request_okay(self): 19 def test_test_url_should_return_true_if_request_okay(self):
21 transport = t.APITransport(Mock()) 20 transport = t.APITransport(Mock())
22 transport._http = Mock() 21 transport._http = Mock()
23 transport._http.head.return_value = Mock( 22 transport._http.head.return_value = Mock(
24 status_code=requests.codes.not_found) 23 status_code=requests.codes.not_found
24 )
25 25
26 self.assertFalse(transport.test_url("foo")) 26 self.assertFalse(transport.test_url("foo"))
27 27
@@ -34,7 +34,8 @@ class TestTransport(TestCase):
34 34
35 time.sleep = Mock() 35 time.sleep = Mock()
36 client.transport._make_http_request = Mock( 36 client.transport._make_http_request = Mock(
37 side_effect=SysCallError("error_mock")) 37 side_effect=SysCallError("error_mock")
38 )
38 client.transport._start_request = Mock() 39 client.transport._start_request = Mock()
39 40
40 client("method") 41 client("method")
@@ -48,7 +49,8 @@ class TestTransport(TestCase):
48 49
49 time.sleep = Mock() 50 time.sleep = Mock()
50 client.transport._make_http_request = Mock( 51 client.transport._make_http_request = Mock(
51 side_effect=PandoraException("error_mock")) 52 side_effect=PandoraException("error_mock")
53 )
52 client.transport._start_request = Mock() 54 client.transport._start_request = Mock()
53 55
54 client("method") 56 client("method")
@@ -62,7 +64,8 @@ class TestTransport(TestCase):
62 64
63 time.sleep = Mock() 65 time.sleep = Mock()
64 client.transport._make_http_request = Mock( 66 client.transport._make_http_request = Mock(
65 side_effect=InvalidAuthToken("error_mock")) 67 side_effect=InvalidAuthToken("error_mock")
68 )
66 client.transport._start_request = Mock() 69 client.transport._start_request = Mock()
67 70
68 client._authenticate = Mock() 71 client._authenticate = Mock()
@@ -82,11 +85,11 @@ class TestTransport(TestCase):
82 transport._http.post.return_value = http_result 85 transport._http.post.return_value = http_result
83 86
84 self.assertEqual( 87 self.assertEqual(
85 "bar", transport(t.APITransport.NO_ENCRYPT[0], foo="bar")) 88 "bar", transport(t.APITransport.NO_ENCRYPT[0], foo="bar")
89 )
86 90
87 91
88class TestTransportSetters(TestCase): 92class TestTransportSetters(TestCase):
89
90 def setUp(self): 93 def setUp(self):
91 self.cryptor = Mock() 94 self.cryptor = Mock()
92 self.transport = t.APITransport(self.cryptor) 95 self.transport = t.APITransport(self.cryptor)
@@ -94,27 +97,29 @@ class TestTransportSetters(TestCase):
94 def test_set_partner(self): 97 def test_set_partner(self):
95 self.cryptor.decrypt_sync_time.return_value = 456 98 self.cryptor.decrypt_sync_time.return_value = 456
96 99
97 self.transport.set_partner({ 100 self.transport.set_partner(
98 "syncTime": "123", 101 {
99 "partnerAuthToken": "partner_auth_token", 102 "syncTime": "123",
100 "partnerId": "partner_id", 103 "partnerAuthToken": "partner_auth_token",
101 }) 104 "partnerId": "partner_id",
105 }
106 )
102 107
103 self.cryptor.decrypt_sync_time.assert_called_with("123") 108 self.cryptor.decrypt_sync_time.assert_called_with("123")
104 self.assertEqual("partner_auth_token", self.transport.auth_token) 109 self.assertEqual("partner_auth_token", self.transport.auth_token)
105 self.assertEqual("partner_id", self.transport.partner_id) 110 self.assertEqual("partner_id", self.transport.partner_id)
106 self.assertEqual( 111 self.assertEqual(
107 "partner_auth_token", self.transport.partner_auth_token) 112 "partner_auth_token", self.transport.partner_auth_token
113 )
108 114
109 self.transport.start_time = 10 115 self.transport.start_time = 10
110 with patch.object(time, "time", return_value=30): 116 with patch.object(time, "time", return_value=30):
111 self.assertEqual(476, self.transport.sync_time) 117 self.assertEqual(476, self.transport.sync_time)
112 118
113 def test_set_user(self): 119 def test_set_user(self):
114 self.transport.set_user({ 120 self.transport.set_user(
115 "userId": "user", 121 {"userId": "user", "userAuthToken": "auth",}
116 "userAuthToken": "auth", 122 )
117 })
118 123
119 self.assertEqual("user", self.transport.user_id) 124 self.assertEqual("user", self.transport.user_id)
120 self.assertEqual("auth", self.transport.user_auth_token) 125 self.assertEqual("auth", self.transport.user_auth_token)
@@ -126,7 +131,6 @@ class TestTransportSetters(TestCase):
126 131
127 132
128class TestDelayExponential(TestCase): 133class TestDelayExponential(TestCase):
129
130 def test_fixed_delay(self): 134 def test_fixed_delay(self):
131 self.assertEqual(8, t.delay_exponential(2, 2, 3)) 135 self.assertEqual(8, t.delay_exponential(2, 2, 3))
132 136
@@ -143,7 +147,6 @@ class TestDelayExponential(TestCase):
143 147
144 148
145class TestRetries(TestCase): 149class TestRetries(TestCase):
146
147 def test_no_retries_returns_none(self): 150 def test_no_retries_returns_none(self):
148 @t.retries(0) 151 @t.retries(0)
149 def foo(): 152 def foo():
@@ -178,7 +181,6 @@ class TestParseResponse(TestCase):
178 181
179 182
180class TestTransportRequestPrep(TestCase): 183class TestTransportRequestPrep(TestCase):
181
182 def setUp(self): 184 def setUp(self):
183 self.cryptor = Mock() 185 self.cryptor = Mock()
184 self.transport = t.APITransport(self.cryptor) 186 self.transport = t.APITransport(self.cryptor)
@@ -207,7 +209,8 @@ class TestTransportRequestPrep(TestCase):
207 209
208 self.transport._http = http 210 self.transport._http = http
209 res = self.transport._make_http_request( 211 res = self.transport._make_http_request(
210 "/url", b"data", {"a": None, "b": "c"}) 212 "/url", b"data", {"a": None, "b": "c"}
213 )
211 214
212 http.post.assert_called_with("/url", data=b"data", params={"b": "c"}) 215 http.post.assert_called_with("/url", data=b"data", params={"b": "c"})
213 retval.raise_for_status.assert_called_with() 216 retval.raise_for_status.assert_called_with()
@@ -237,7 +240,8 @@ class TestTransportRequestPrep(TestCase):
237 240
238 with patch.object(time, "time", return_value=20): 241 with patch.object(time, "time", return_value=20):
239 val = self.transport._build_data( 242 val = self.transport._build_data(
240 t.APITransport.NO_ENCRYPT[0], {"a": "b", "c": None}) 243 t.APITransport.NO_ENCRYPT[0], {"a": "b", "c": None}
244 )
241 245
242 val = json.loads(val) 246 val = json.loads(val)
243 self.assertEqual("b", val["a"]) 247 self.assertEqual("b", val["a"])
@@ -247,7 +251,6 @@ class TestTransportRequestPrep(TestCase):
247 251
248# All Cryptor implementations must pass these test cases unmodified 252# All Cryptor implementations must pass these test cases unmodified
249class CommonCryptorTestCases: 253class CommonCryptorTestCases:
250
251 def test_decrypt_invalid_padding(self): 254 def test_decrypt_invalid_padding(self):
252 with self.assertRaises(ValueError): 255 with self.assertRaises(ValueError):
253 data = b"12345678\x00" 256 data = b"12345678\x00"
@@ -267,7 +270,6 @@ class CommonCryptorTestCases:
267 270
268 271
269class TestPurePythonBlowfishCryptor(TestCase, CommonCryptorTestCases): 272class TestPurePythonBlowfishCryptor(TestCase, CommonCryptorTestCases):
270
271 def setUp(self): 273 def setUp(self):
272 # Ugh... blowfish can't even be *imported* in python2 274 # Ugh... blowfish can't even be *imported* in python2
273 if not t.blowfish: 275 if not t.blowfish:
@@ -288,7 +290,6 @@ class TestEncryptor(TestCase):
288 ENCODED_TIME = "31353037343131313539" 290 ENCODED_TIME = "31353037343131313539"
289 291
290 class NoopCrypto: 292 class NoopCrypto:
291
292 def __init__(self, key): 293 def __init__(self, key):
293 pass 294 pass
294 295
@@ -303,14 +304,17 @@ class TestEncryptor(TestCase):
303 304
304 def test_decrypt(self): 305 def test_decrypt(self):
305 self.assertEqual( 306 self.assertEqual(
306 {"foo": "bar"}, self.cryptor.decrypt(self.ENCODED_JSON)) 307 {"foo": "bar"}, self.cryptor.decrypt(self.ENCODED_JSON)
308 )
307 309
308 def test_encrypt(self): 310 def test_encrypt(self):
309 self.assertEqual( 311 self.assertEqual(
310 self.ENCODED_JSON.encode("ascii"), 312 self.ENCODED_JSON.encode("ascii"),
311 self.cryptor.encrypt(self.UNENCODED_JSON)) 313 self.cryptor.encrypt(self.UNENCODED_JSON),
314 )
312 315
313 def test_decrypt_sync_time(self): 316 def test_decrypt_sync_time(self):
314 self.assertEqual( 317 self.assertEqual(
315 self.EXPECTED_TIME, 318 self.EXPECTED_TIME,
316 self.cryptor.decrypt_sync_time(self.ENCODED_TIME)) 319 self.cryptor.decrypt_sync_time(self.ENCODED_TIME),
320 )