async def test_client_user_agent(monkeypatch): req_exec = RequestExecutor( { "client": { "orgUrl": "https://test.okta.com", "authorizationMode": 'SSWS', "token": 'token', "userAgent": '', "rateLimit": { "maxRetries": 2 } } }, NoOpCache(), None) assert 'User-Agent' in req_exec._http_client._default_headers assert req_exec._http_client._default_headers["User-Agent"] == UserAgent( ).get_user_agent_string() # mock and shoot request monkeypatch.setattr(HTTPClient, 'send_request', mocks.mock_GET_HTTP_Client_response_valid) req, res_details, resp_body, error = await req_exec._http_client.\ send_request({ 'method': 'GET', 'url': ORG_URL + GET_USERS_CALL, 'headers': {'Authorization': f"SSWS {API_TOKEN}"}, 'data': {} }) assert error is None assert 'User-Agent' in req["headers"] assert req_exec._http_client._default_headers["User-Agent"] == \ req["headers"]["User-Agent"] # with extra user agent string extra = "testing" req_exec = RequestExecutor( { "client": { "orgUrl": "https://test.okta.com", "authorizationMode": 'SSWS', "token": 'token', "userAgent": extra, "rateLimit": { "maxRetries": 2 } } }, NoOpCache(), None) assert 'User-Agent' in req_exec._http_client._default_headers assert req_exec._http_client._default_headers["User-Agent"] == \ UserAgent(extra).get_user_agent_string()
def __init__(self, config, cache, http_client=None): """ Constructor for Request Executor object for Okta Client Arguments: config {dict} -- This dictionary contains the configuration of the Request Executor """ # Raise Value Error if numerical inputs are invalid (< 0) self._request_timeout = config["client"].get('requestTimeout', 0) if self._request_timeout < 0: raise ValueError( ("okta.client.requestTimeout provided as " f"{self._request_timeout} but must be 0 (disabled) or " "greater than zero")) self._max_retries = config["client"]["rateLimit"].get('maxRetries', 2) if self._max_retries < 0: raise ValueError( ("okta.client.rateLimit.maxRetries provided as " f"{self._max_retries} but must be 0 (disabled) or " "greater than zero")) # Setup other fields self._authorization_mode = config["client"]["authorizationMode"] self._base_url = config["client"]["orgUrl"] self._config = config self._cache = cache self._default_headers = { 'User-Agent': UserAgent(config["client"].get("userAgent", None)).get_user_agent_string(), 'Accept': "application/json" } # SSWS header if config["client"]["authorizationMode"] == "SSWS": self._default_headers['Authorization'] = ( "SSWS " f"{self._config['client']['token']}") else: # OAuth self._oauth = OAuth(self, self._config) http_client_impl = http_client or HTTPClient self._http_client = http_client_impl({ 'requestTimeout': self._request_timeout, 'headers': self._default_headers, 'proxy': self._config["client"]["proxy"] if "proxy" in self._config["client"] else None }) HTTPClient.raise_exception = \ self._config['client'].get("raiseException", False) self._custom_headers = {}
async def mock_GET_HTTP_request(*args, **kwargs): return { "headers": { "User-Agent": UserAgent().get_user_agent_string(), "Authorization": f"SSWS {API_TOKEN}", # etc }, "url": ORG_URL + GET_USERS_CALL, "data": {}, "method": "GET" }