Skip to content

Commit d187e8c

Browse files
author
Bilal Al
committed
added proxy exception test
1 parent c1aa51f commit d187e8c

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

tests/api/test_httpclient.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)