def test_authenticate_refresh_credentials(self, requests_mock, mock_home_dir): client_credentials_provider = ClientCredentialsProvider(config) auth = Authenticate(config=config, token_provider=client_credentials_provider) auth.file_cache.credentials_cache_enabled = True cached_credentials = { "provider": "ClientCredentialsProvider", "access_token": from_cache_not_expired_token, "refresh_token": from_cache_not_expired_token, } auth.file_cache.write_credentials(json.dumps(cached_credentials)) response = json.dumps(client_credentials_response) matcher = re.compile(token_endpoint) requests_mock.register_uri("POST", matcher, text=response, status_code=204) auth.login() assert auth.access_token == cached_credentials["access_token"] assert auth.refresh_token == cached_credentials["refresh_token"]
def __init__(self, config=None, auth=None, env=None): self.config = config if self.config is None: log.info("Initializing configuration object") self.config = Config(env=env) self.auth = auth if self.auth is None: log.info("Initializing auth object") self.auth = Authenticate(self.config)
def test_authenticate_cached_credentials(self, mock_home_dir): client_credentials_provider = ClientCredentialsProvider(config) auth = Authenticate(config=config, token_provider=client_credentials_provider) auth.file_cache.credentials_cache_enabled = True cached_credentials = { "provider": "ClientCredentialsProvider", "access_token": from_cache_not_expired_token, "refresh_token": from_cache_not_expired_token, } auth.file_cache.write_credentials(json.dumps(cached_credentials)) auth.login() assert auth.access_token == cached_credentials["access_token"] assert auth.refresh_token == cached_credentials["refresh_token"]
def test_authenticate_cache_disabled(self, requests_mock, mock_home_dir): client_credentials_provider = ClientCredentialsProvider(config) auth = Authenticate(config=config, token_provider=client_credentials_provider) auth.file_cache.credentials_cache_enabled = False response = json.dumps(client_credentials_response) matcher = re.compile(token_endpoint) requests_mock.register_uri("POST", matcher, text=response, status_code=204) auth.login() assert auth.access_token == client_credentials_response["access_token"] assert auth.refresh_token == client_credentials_response[ "refresh_token"]
def test_authenticate_fail(self, requests_mock, mock_home_dir): client_credentials_provider = ClientCredentialsProvider( config, client_id="wrong_id") auth = Authenticate(config=config, token_provider=client_credentials_provider) response = json.dumps({ "error": "authenitcation error", "error_description": "No such client" }) matcher = re.compile(token_endpoint) requests_mock.register_uri("POST", matcher, text=response, status_code=204) try: auth.login() except ApiAuthenticateError: assert True
class SDK(object): def __init__(self, config=None, auth=None, env=None): self.config = config if self.config is None: log.info("Initializing configuration object") self.config = Config(env=env) self.auth = auth if self.auth is None: log.info("Initializing auth object") self.auth = Authenticate(self.config) def login(self): self.auth.login() def headers(self): headers = {} if self.auth.token_provider: headers["Authorization"] = f"Bearer {self.auth.access_token}" return headers def post(self, url, data, **kwargs): log.info(f"SDK:Posting resource to url: {url}") result = requests.post(url, data=json.dumps(data), headers=self.headers(), **kwargs) result.raise_for_status() return result def get(self, url, **kwargs): log.info(f"SDK:Getting resource from url: {url}") result = requests.get(url, headers=self.headers(), **kwargs) result.raise_for_status() return result def delete(self, url, **kwargs): log.info(f"SDK:Deleting resource from url: {url}") result = requests.delete(url, headers=self.headers(), **kwargs) result.raise_for_status() return result
import json import pytest from requests.exceptions import HTTPError from origo.event.post_event import PostEvent from origo.auth.auth import Authenticate from origo.config import Config from origo.file_cache import FileCache from tests.origio.auth.client_credentials_test_utils import ( default_test_client_credentials, ) config = Config() file_cache = FileCache(config) file_cache.credentials_cache_enabled = False auth_default = Authenticate(config, file_cache=file_cache) auth_default.client_credentials = default_test_client_credentials event_collector_ok_response = {"message": "Ok"} event_collector_error_response = {"message": "Bad Request"} class TestPostEvent: def test_post_event_object(self, requests_mock): post_event = PostEvent(config=config, auth=auth_default) dataset_id, version_id = "test", "1" event = {"yo": "bro"} expected_url = ( f"{post_event.event_collector_url}/event/{dataset_id}/{version_id}" ) requests_mock.register_uri( "POST", expected_url,
import json import re from requests.exceptions import HTTPError from origo.data.dataset import Dataset from origo.auth.auth import Authenticate from origo.config import Config from origo.file_cache import FileCache config = Config() file_cache = FileCache(config) file_cache.credentials_cache_enabled = False auth_default = Authenticate(config, file_cache=file_cache) class TestDataset: def test_createDataset(self, requests_mock): ds = Dataset(config=config, auth=auth_default) response = json.dumps({"Id": "test-dataset-createDataset"}) matcher = re.compile("datasets") requests_mock.register_uri("POST", matcher, text=response, status_code=200) body = ds.create_dataset({"Id": "test-dataset-createDataset"}) assert body["Id"] == "test-dataset-createDataset" def test_sdk_no_auth_headers(self): del config.config["client_id"] del config.config["client_secret"] ds = Dataset(config=config)