@@ -236,56 +236,69 @@ def raise_for_status(self): pass
236
236
237
237
Epidata .debug = True
238
238
239
- with self .subTest (name = 'test multiple GET' ):
240
- with self .assertLogs ('delphi_epidata_client' , level = 'INFO' ) as logs :
241
- get .reset_mock ()
242
- get .return_value = MockResponse (b'{"key": "value"}' , 200 )
243
- Epidata ._request_with_retry ("test_endpoint1" , params = {"key1" : "value1" })
244
- Epidata ._request_with_retry ("test_endpoint2" , params = {"key2" : "value2" })
245
-
246
- output = logs .output
247
- self .assertEqual (len (output ), 4 ) # [request, response, request, response]
248
- self .assertIn ("Sending GET request to URL: http://delphi_web_epidata/epidata/test_endpoint1/" , output [0 ])
249
- self .assertIn ("params: {'key1': 'value1'}" , output [0 ])
250
- self .assertIn ("Received 200 response (16 bytes)" , output [1 ])
251
- self .assertIn ("Sending GET request to URL: http://delphi_web_epidata/epidata/test_endpoint2/" , output [2 ])
252
- self .assertIn ("params: {'key2': 'value2'}" , output [2 ])
253
- self .assertIn ("Received 200 response (16 bytes)" , output [3 ])
254
-
255
- with self .subTest (name = 'test GET and POST' ):
256
- with self .assertLogs ('delphi_epidata_client' , level = 'INFO' ) as logs :
257
- get .reset_mock ()
258
- get .return_value = MockResponse (b'{"key": "value"}' , 414 )
259
- post .reset_mock ()
260
- post .return_value = MockResponse (b'{"key": "value"}' , 200 )
261
- Epidata ._request_with_retry ("test_endpoint3" , params = {"key3" : "value3" })
262
-
263
- output = logs .output
264
- self .assertEqual (len (output ), 4 ) # [request, response, request, response]
265
- self .assertIn ("Sending GET request to URL: http://delphi_web_epidata/epidata/test_endpoint3/" , output [0 ])
266
- self .assertIn ("params: {'key3': 'value3'}" , output [0 ])
267
- self .assertIn ("Received 414 response (16 bytes)" , output [1 ])
268
- self .assertIn ("Sending POST request to URL: http://delphi_web_epidata/epidata/test_endpoint3/" , output [2 ])
269
- self .assertIn ("params: {'key3': 'value3'}" , output [2 ])
270
- self .assertIn ("Received 200 response (16 bytes)" , output [3 ])
271
-
272
- Epidata .debug = False
239
+ try :
240
+ with self .subTest (name = 'test multiple GET' ):
241
+ with self .assertLogs ('delphi_epidata_client' , level = 'INFO' ) as logs :
242
+ get .reset_mock ()
243
+ get .return_value = MockResponse (b'{"key": "value"}' , 200 )
244
+ Epidata ._request_with_retry ("test_endpoint1" , params = {"key1" : "value1" })
245
+ Epidata ._request_with_retry ("test_endpoint2" , params = {"key2" : "value2" })
246
+
247
+ output = logs .output
248
+ self .assertEqual (len (output ), 4 ) # [request, response, request, response]
249
+ self .assertIn ("Sending GET request" , output [0 ])
250
+ self .assertIn ("\" url\" : \" http://delphi_web_epidata/epidata/test_endpoint1/\" " , output [0 ])
251
+ self .assertIn ("\" params\" : {\" key1\" : \" value1\" }" , output [0 ])
252
+ self .assertIn ("Received response" , output [1 ])
253
+ self .assertIn ("\" status_code\" : 200" , output [1 ])
254
+ self .assertIn ("\" len\" : 16" , output [1 ])
255
+ self .assertIn ("Sending GET request" , output [2 ])
256
+ self .assertIn ("\" url\" : \" http://delphi_web_epidata/epidata/test_endpoint2/\" " , output [2 ])
257
+ self .assertIn ("\" params\" : {\" key2\" : \" value2\" }" , output [2 ])
258
+ self .assertIn ("Received response" , output [3 ])
259
+ self .assertIn ("\" status_code\" : 200" , output [3 ])
260
+ self .assertIn ("\" len\" : 16" , output [3 ])
261
+
262
+ with self .subTest (name = 'test GET and POST' ):
263
+ with self .assertLogs ('delphi_epidata_client' , level = 'INFO' ) as logs :
264
+ get .reset_mock ()
265
+ get .return_value = MockResponse (b'{"key": "value"}' , 414 )
266
+ post .reset_mock ()
267
+ post .return_value = MockResponse (b'{"key": "value"}' , 200 )
268
+ Epidata ._request_with_retry ("test_endpoint3" , params = {"key3" : "value3" })
269
+
270
+ output = logs .output
271
+ self .assertEqual (len (output ), 3 ) # [request, response, request, response]
272
+ self .assertIn ("Sending GET request" , output [0 ])
273
+ self .assertIn ("\" url\" : \" http://delphi_web_epidata/epidata/test_endpoint3/\" " , output [0 ])
274
+ self .assertIn ("\" params\" : {\" key3\" : \" value3\" }" , output [0 ])
275
+ self .assertIn ("Received 414 response, retrying as POST request" , output [1 ])
276
+ self .assertIn ("\" url\" : \" http://delphi_web_epidata/epidata/test_endpoint3/\" " , output [1 ])
277
+ self .assertIn ("\" params\" : {\" key3\" : \" value3\" }" , output [1 ])
278
+ self .assertIn ("Received response" , output [2 ])
279
+ self .assertIn ("\" status_code\" : 200" , output [2 ])
280
+ self .assertIn ("\" len\" : 16" , output [2 ])
281
+ finally : # make sure this global is always reset
282
+ Epidata .debug = False
273
283
274
284
@patch ('requests.post' )
275
285
@patch ('requests.get' )
276
286
def test_sandbox (self , get , post ):
277
287
"""Test that in debug + sandbox mode request params are correctly logged, but no queries are sent."""
278
288
Epidata .debug = True
279
289
Epidata .sandbox = True
280
- with self .assertLogs ('delphi_epidata_client' , level = 'INFO' ) as logs :
281
- Epidata .covidcast ('src' , 'sig' , 'day' , 'county' , 20200414 , '01234' )
282
- output = logs .output
283
- self .assertEqual (len (output ), 1 )
284
- self .assertIn ("Sending GET request to URL: http://delphi_web_epidata/epidata/covidcast/" , output [0 ])
285
- get .assert_not_called ()
286
- post .assert_not_called ()
287
- Epidata .debug = False
288
- Epidata .sandbox = False
290
+ try :
291
+ with self .assertLogs ('delphi_epidata_client' , level = 'INFO' ) as logs :
292
+ Epidata .covidcast ('src' , 'sig' , 'day' , 'county' , 20200414 , '01234' )
293
+ output = logs .output
294
+ self .assertEqual (len (output ), 1 )
295
+ self .assertIn ("Sending GET request" , output [0 ])
296
+ self .assertIn ("\" url\" : \" http://delphi_web_epidata/epidata/covidcast/\" " , output [0 ])
297
+ get .assert_not_called ()
298
+ post .assert_not_called ()
299
+ finally : # make sure these globals are always reset
300
+ Epidata .debug = False
301
+ Epidata .sandbox = False
289
302
290
303
def test_geo_value (self ):
291
304
"""test different variants of geo types: single, *, multi."""
0 commit comments