def __init__(self, api_address, api_token): self.api_address = api_address self.api_token = api_token self._http_client = RequestsClient() self.backend_swagger_client = SwaggerClient.from_url( '{}/api/backend/swagger.json'.format(self.api_address), config=dict(validate_swagger_spec=False, validate_requests=False, validate_responses=False, formats=[uuid_format]), http_client=self._http_client) self.leaderboard_swagger_client = SwaggerClient.from_url( '{}/api/leaderboard/swagger.json'.format(self.api_address), config=dict(validate_swagger_spec=False, validate_requests=False, validate_responses=False, formats=[uuid_format]), http_client=self._http_client) self.authenticator = NeptuneAuthenticator( self.backend_swagger_client.api.exchangeApiToken( X_Neptune_Api_Token=api_token).response().result) self._http_client.authenticator = self.authenticator
def create_http_client_with_auth( credentials: Credentials, ssl_verify: bool, proxies: Dict[str, str]) -> Tuple[RequestsClient, ClientConfig]: client_config = get_client_config(credentials=credentials, ssl_verify=ssl_verify, proxies=proxies) config_api_url = credentials.api_url_opt or credentials.token_origin_address verify_client_version(client_config, neptune_client_version) endpoint_url = None if config_api_url != client_config.api_url: endpoint_url = build_operation_url(client_config.api_url, BACKEND_SWAGGER_PATH) http_client = create_http_client(ssl_verify=ssl_verify, proxies=proxies) http_client.authenticator = NeptuneAuthenticator( credentials.api_token, _get_token_client( credentials=credentials, ssl_verify=ssl_verify, proxies=proxies, endpoint_url=endpoint_url, ), ssl_verify, proxies, ) return http_client, client_config
def test_apply_oauth2_session_to_request(self, time_mock, session_mock): # given api_token = MagicMock() backend_client = MagicMock() auth_tokens = MagicMock() auth_tokens.accessToken = an_access_token() auth_tokens.refreshToken = a_refresh_token() decoded_access_token = jwt.decode(auth_tokens.accessToken, SECRET, options=_decoding_options) backend_client.api.exchangeApiToken( X_Neptune_Api_Token=api_token).response().result = auth_tokens # and now = time.time() time_mock.time.return_value = now # and session = MagicMock() session_mock.return_value = session session.token = dict() # and neptune_authenticator = NeptuneAuthenticator(api_token, backend_client, False, None) request = a_request() # when updated_request = neptune_authenticator.apply(request) # then expected_token = { "access_token": auth_tokens.accessToken, "refresh_token": auth_tokens.refreshToken, "expires_in": decoded_access_token["exp"] - now, } expected_auto_refresh_url = "{realm_url}/protocol/openid-connect/token".format( realm_url=decoded_access_token["iss"]) session_mock.assert_called_once_with( client_id=decoded_access_token["azp"], token=expected_token, auto_refresh_url=expected_auto_refresh_url, auto_refresh_kwargs={"client_id": decoded_access_token["azp"]}, token_updater=_no_token_updater, ) # and self.assertEqual(session, updated_request.auth.session)
def test_apply_oauth2_session_to_request(self, time_mock, session_mock): # given auth_tokens = MagicMock() auth_tokens.accessToken = an_access_token() auth_tokens.refreshToken = a_refresh_token() decoded_access_token = jwt.decode(auth_tokens.accessToken, SECRET) # and now = time.time() time_mock.time.return_value = now # and session = MagicMock() session_mock.return_value = session session.token = dict() # and neptune_authenticator = NeptuneAuthenticator(auth_tokens, False, None) request = a_request() # when updated_request = neptune_authenticator.apply(request) # then expected_token = { 'access_token': auth_tokens.accessToken, 'refresh_token': auth_tokens.refreshToken, 'expires_in': decoded_access_token['exp'] - now } expected_auto_refresh_url = '{realm_url}/protocol/openid-connect/token'.format( realm_url=decoded_access_token['iss']) session_mock.assert_called_once_with( client_id=decoded_access_token['azp'], token=expected_token, auto_refresh_url=expected_auto_refresh_url, auto_refresh_kwargs={'client_id': decoded_access_token['azp']}, token_updater=_no_token_updater) # and self.assertEqual(session, updated_request.auth.session)
def _create_authenticator(self, api_token, ssl_verify, proxies, backend_client): return NeptuneAuthenticator(api_token, backend_client, ssl_verify, proxies)
def _create_authenticator(self, api_token, ssl_verify, proxies): return NeptuneAuthenticator( self.backend_swagger_client.api.exchangeApiToken(X_Neptune_Api_Token=api_token).response().result, ssl_verify, proxies )