def test_init_from_env_file(tmpdir): env_file = tmpdir / "env_file" with open(str(env_file), "w") as f: f.write("THREEDI_API_HOST=localhost:8000\n") f.write("THREEDI_API_USERNAME=username\n") f.write("THREEDI_API_PASSWORD=password\n") ThreediApi(env_file=str(env_file))
def test_init_from_config(config): api = ThreediApi(config=config) assert isinstance(api._api, V3Api) assert isinstance(api._client, ApiClient) assert api._client is api._api.api_client assert api.version == "v3" assert not api.asynchronous
def get_api_client(api_username: str, api_password: str, api_host: str, version: str = "v3-beta") -> ThreediApi: """Setup 3Di API Client using username and password.""" config = { "THREEDI_API_HOST": api_host, "THREEDI_API_USERNAME": api_username, "THREEDI_API_PASSWORD": api_password, } api_client = ThreediApi(config=config, version=version) return api_client
def get_api_client_with_tokens(api_host: str, api_access_token: str, api_refresh_token: str, version: str = "v3-beta") -> ThreediApi: """Setup 3Di API Client using access and refresh tokens.""" config = { "THREEDI_API_HOST": api_host, "THREEDI_API_ACCESS_TOKEN": api_access_token, "THREEDI_API_REFRESH_TOKEN": api_refresh_token, } api_client = ThreediApi(config=config, version=version) return api_client
def get_api_client_with_personal_api_token( personal_api_token: str, api_host: str, version: str = "v3-beta") -> ThreediApi: """Setup 3Di API Client using Personal API Token.""" config = { "THREEDI_API_HOST": api_host, "THREEDI_API_USERNAME": "******", "THREEDI_API_PERSONAL_API_TOKEN": personal_api_token, } api_client = ThreediApi(config=config, version=version) return api_client
def test_context_mgr(config): with ThreediApi(config=config) as api: client = mock.patch.object(api, "_client").start() assert client.close.called
def test_init_async(config): api = ThreediApi(config=config, asynchronous=True) assert isinstance(api._client, AsyncApiClient) assert api.asynchronous
def test_init_nonexisting_version(config): with pytest.raises(ValueError): ThreediApi(config=config, version="v1")
def test_init_different_version(config): api = ThreediApi(config=config, version="v3-alpha") assert isinstance(api._api, V3AlphaApi) assert api.version == "v3-alpha"
def test_init_with_other_suffix_in_host(config, suffix): config["THREEDI_API_HOST"] += suffix ThreediApi(config=config)
async def test_async_context_mgr(config): async with ThreediApi(config=config, asynchronous=True) as api: client = mock.patch.object(api, "_client", new_callable=AsyncMock).start() assert client.close.called
def test_init_missing_config(key, config): del config[key] with pytest.raises(ValueError): ThreediApi(config=config)
def test_init_from_env_vars(monkeypatch): monkeypatch.setenv("THREEDI_API_HOST", "localhost:8000") monkeypatch.setenv("THREEDI_API_USERNAME", "username") monkeypatch.setenv("THREEDI_API_PASSWORD", "password") ThreediApi()
def v3_api(config): return ThreediApi(config=config)
async def test_async_context_mgr_with_sync(config): with pytest.raises(RuntimeError): async with ThreediApi(config=config, asynchronous=False): pass
def test_init_with_version_in_host(config, suffix): config["THREEDI_API_HOST"] += suffix with pytest.raises(ValueError): ThreediApi(config=config)
def test_context_mgr_with_async(config): with pytest.raises(RuntimeError): with ThreediApi(config=config, asynchronous=True): pass