@@ -381,6 +381,62 @@ def __exit__(self, exc_type, exc_val, exc_tb):
381381 assert (httpclient4 ._sessions [server ].adapters ['https://' ]._password == None )
382382 assert (isinstance (httpclient4 ._sessions [server ].adapters ['https://' ], client .HTTPAdapterWithProxyKerberosAuth ))
383383
384+ def test_proxy_exception (self , mocker ):
385+ global count
386+ count = 0
387+ class get_mock (object ):
388+ def __init__ (self , url , params , headers , timeout ):
389+ pass
390+
391+ def __enter__ (self ):
392+ global count
393+ count += 1
394+ if count == 1 :
395+ raise requests .exceptions .ProxyError ()
396+
397+ response_mock = mocker .Mock ()
398+ response_mock .status_code = 200
399+ response_mock .text = 'ok'
400+ return response_mock
401+
402+ def __exit__ (self , exc_type , exc_val , exc_tb ):
403+ pass
404+
405+ mocker .patch ('splitio.api.client.requests.Session.get' , new = get_mock )
406+ httpclient = client .HttpClientKerberos (sdk_url = 'https://sdk.com' , authentication_scheme = AuthenticateScheme .KERBEROS_SPNEGO , authentication_params = [None , None ])
407+ httpclient .set_telemetry_data ("metric" , mocker .Mock ())
408+ response = httpclient .get ('sdk' , '/test1' , 'some_api_key' , {'param1' : 123 }, {'h1' : 'abc' })
409+ assert response .status_code == 200
410+ assert response .body == 'ok'
411+
412+ count = 0
413+ class post_mock (object ):
414+ def __init__ (self , url , params , headers , json , timeout ):
415+ pass
416+
417+ def __enter__ (self ):
418+ global count
419+ count += 1
420+ if count == 1 :
421+ raise requests .exceptions .ProxyError ()
422+
423+ response_mock = mocker .Mock ()
424+ response_mock .status_code = 200
425+ response_mock .text = 'ok'
426+ return response_mock
427+
428+ def __exit__ (self , exc_type , exc_val , exc_tb ):
429+ pass
430+ mocker .patch ('splitio.api.client.requests.Session.post' , new = post_mock )
431+
432+ httpclient = client .HttpClientKerberos (timeout = 1500 , sdk_url = 'https://sdk.com' , events_url = 'https://events.com' , authentication_scheme = AuthenticateScheme .KERBEROS_PROXY , authentication_params = [None , None ])
433+ httpclient .set_telemetry_data ("metric" , mocker .Mock ())
434+ response = httpclient .post ('events' , 'test1' , 'some_api_key' , {'p1' : 'a' }, {'param1' : 123 }, {'h1' : 'abc' })
435+ assert response .status_code == 200
436+ assert response .body == 'ok'
437+
438+
439+
384440 def test_telemetry (self , mocker ):
385441 telemetry_storage = InMemoryTelemetryStorage ()
386442 telemetry_producer = TelemetryStorageProducer (telemetry_storage )
0 commit comments