Skip to content

Commit

Permalink
polish
Browse files Browse the repository at this point in the history
  • Loading branch information
Bilal Al committed Jul 24, 2024
1 parent 5900f26 commit 08d38a8
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 14 deletions.
16 changes: 8 additions & 8 deletions splitio/api/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
TELEMETRY_URL = 'https://telemetry.split.io/api'

_LOGGER = logging.getLogger(__name__)

_EXC_MSG = '{source} library is throwing exceptions'

HttpResponse = namedtuple('HttpResponse', ['status_code', 'body', 'headers'])

Expand Down Expand Up @@ -173,7 +173,7 @@ def get(self, server, path, sdk_key, query=None, extra_headers=None): # pylint:
return HttpResponse(response.status_code, response.text, response.headers)

except Exception as exc: # pylint: disable=broad-except
raise HttpClientException('requests library is throwing exceptions') from exc
raise HttpClientException(_EXC_MSG.format(source='request')) from exc

def post(self, server, path, sdk_key, body, query=None, extra_headers=None): # pylint: disable=too-many-arguments
"""
Expand Down Expand Up @@ -208,7 +208,7 @@ def post(self, server, path, sdk_key, body, query=None, extra_headers=None): #
self._record_telemetry(response.status_code, get_current_epoch_time_ms() - start)
return HttpResponse(response.status_code, response.text, response.headers)
except Exception as exc: # pylint: disable=broad-except
raise HttpClientException('requests library is throwing exceptions') from exc
raise HttpClientException(_EXC_MSG.format(source='request')) from exc

def _record_telemetry(self, status_code, elapsed):
"""
Expand Down Expand Up @@ -285,7 +285,7 @@ async def get(self, server, path, apikey, query=None, extra_headers=None): # py
return HttpResponse(response.status, body, response.headers)

except aiohttp.ClientError as exc: # pylint: disable=broad-except
raise HttpClientException('aiohttp library is throwing exceptions') from exc
raise HttpClientException(_EXC_MSG.format(source='aiohttp')) from exc

async def post(self, server, path, apikey, body, query=None, extra_headers=None): # pylint: disable=too-many-arguments
"""
Expand Down Expand Up @@ -329,7 +329,7 @@ async def post(self, server, path, apikey, body, query=None, extra_headers=None)
return HttpResponse(response.status, body, response.headers)

except aiohttp.ClientError as exc: # pylint: disable=broad-except
raise HttpClientException('aiohttp library is throwing exceptions') from exc
raise HttpClientException(_EXC_MSG.format(source='aiohttp')) from exc

async def _record_telemetry(self, status_code, elapsed):
"""
Expand Down Expand Up @@ -371,7 +371,7 @@ def __init__(self, timeout=None, sdk_url=None, events_url=None, auth_url=None, t
:type telemetry_url: str
"""
_LOGGER.debug("Initializing httpclient for Kerberos auth")
HttpClient.__init__(self, timeout, sdk_url, events_url, auth_url, telemetry_url)
HttpClient.__init__(self, timeout=timeout, sdk_url=sdk_url, events_url=events_url, auth_url=auth_url, telemetry_url=telemetry_url)
self._authentication_scheme = authentication_scheme
self._authentication_params = authentication_params

Expand Down Expand Up @@ -408,7 +408,7 @@ def get(self, server, path, sdk_key, query=None, extra_headers=None): # pylint:
return HttpResponse(response.status_code, response.text, response.headers)

except Exception as exc: # pylint: disable=broad-except
raise HttpClientException('requests library is throwing exceptions') from exc
raise HttpClientException(_EXC_MSG.format(source='request')) from exc

def post(self, server, path, sdk_key, body, query=None, extra_headers=None): # pylint: disable=too-many-arguments
"""
Expand Down Expand Up @@ -445,7 +445,7 @@ def post(self, server, path, sdk_key, body, query=None, extra_headers=None): #
self._record_telemetry(response.status_code, get_current_epoch_time_ms() - start)
return HttpResponse(response.status_code, response.text, response.headers)
except Exception as exc: # pylint: disable=broad-except
raise HttpClientException('requests library is throwing exceptions') from exc
raise HttpClientException(_EXC_MSG.format(source='request')) from exc

def _set_authentication(self, session):
if self._authentication_scheme == AuthenticateScheme.KERBEROS_SPNEGO:
Expand Down
20 changes: 14 additions & 6 deletions tests/api/test_httpclient.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,6 @@ def test_authentication_scheme(self, mocker):
headers={'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Content-Type': 'application/json'},
params={'param1': 123},
timeout=None
# auth=HTTPKerberosAuth(mutual_authentication=OPTIONAL)
)
assert response.status_code == 200
assert response.body == 'ok'
Expand All @@ -183,28 +182,37 @@ def test_authentication_scheme(self, mocker):
headers={'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Content-Type': 'application/json'},
params={'param1': 123},
timeout=None
# auth=HTTPKerberosAuth(principal='bilal', password='split', mutual_authentication=OPTIONAL)
)
assert response.status_code == 200
assert response.body == 'ok'
assert get_mock.mock_calls == [call]
get_mock.reset_mock()

httpclient = client.HttpClientKerberos(sdk_url='https://sdk.com', authentication_scheme=AuthenticateScheme.KERBEROS_PROXY, authentication_params=[None, None])
response_mock = mocker.Mock()
response_mock.status_code = 200
response_mock.headers = {}
response_mock.text = 'ok'
get_mock = mocker.Mock()
get_mock.return_value = response_mock
mocker.patch('splitio.api.client.requests.Session.post', new=get_mock)

httpclient = client.HttpClientKerberos(sdk_url='https://sdk.com', events_url='https://events.com', authentication_scheme=AuthenticateScheme.KERBEROS_PROXY, authentication_params=[None, None])
httpclient.set_telemetry_data("metric", mocker.Mock())
response = httpclient.get('sdk', '/test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})

response = httpclient.post('events', 'test1', 'some_api_key', {'p1': 'a'}, {'param1': 123}, {'h1': 'abc'})
call = mocker.call(
'https://sdk.com/test1',
'https://events.com/test1',
json={'p1': 'a'},
headers={'Authorization': 'Bearer some_api_key', 'h1': 'abc', 'Content-Type': 'application/json'},
params={'param1': 123},
timeout=None
# auth=HTTPKerberosAuth(mutual_authentication=OPTIONAL)
)
assert response.status_code == 200
assert response.body == 'ok'
assert get_mock.mock_calls == [call]
get_mock.reset_mock()

mocker.patch('splitio.api.client.requests.Session.get', new=get_mock)
httpclient = client.HttpClientKerberos(sdk_url='https://sdk.com', authentication_scheme=AuthenticateScheme.KERBEROS_PROXY, authentication_params=['bilal', 'split'])
httpclient.set_telemetry_data("metric", mocker.Mock())
response = httpclient.get('sdk', '/test1', 'some_api_key', {'param1': 123}, {'h1': 'abc'})
Expand Down

0 comments on commit 08d38a8

Please sign in to comment.