From 8369d55eb92c14c789910ea41c5bc1657775c601 Mon Sep 17 00:00:00 2001 From: jo Date: Fri, 22 Jul 2022 12:49:21 +0200 Subject: [PATCH] chore(api-client): restructure modules --- api-client/libretime_api_client/__init__.py | 1 - .../{utils.py => _utils.py} | 0 .../{version1.py => v1.py} | 2 +- .../{version2.py => v2.py} | 2 +- api-client/setup.py | 4 +- api-client/tests/apcurl_test.py | 33 ------- api-client/tests/apirequest_test.py | 34 ------- api-client/tests/requestprovider_test.py | 26 ----- api-client/tests/utils_test.py | 97 +++++++++++++++++++ .../tests/{version2_test.py => v2_test.py} | 2 +- 10 files changed, 102 insertions(+), 99 deletions(-) rename api-client/libretime_api_client/{utils.py => _utils.py} (100%) rename api-client/libretime_api_client/{version1.py => v1.py} (99%) rename api-client/libretime_api_client/{version2.py => v2.py} (97%) delete mode 100644 api-client/tests/apcurl_test.py delete mode 100644 api-client/tests/apirequest_test.py delete mode 100644 api-client/tests/requestprovider_test.py create mode 100644 api-client/tests/utils_test.py rename api-client/tests/{version2_test.py => v2_test.py} (92%) diff --git a/api-client/libretime_api_client/__init__.py b/api-client/libretime_api_client/__init__.py index 31e182693..e69de29bb 100644 --- a/api-client/libretime_api_client/__init__.py +++ b/api-client/libretime_api_client/__init__.py @@ -1 +0,0 @@ -__all__ = ["version1"] diff --git a/api-client/libretime_api_client/utils.py b/api-client/libretime_api_client/_utils.py similarity index 100% rename from api-client/libretime_api_client/utils.py rename to api-client/libretime_api_client/_utils.py diff --git a/api-client/libretime_api_client/version1.py b/api-client/libretime_api_client/v1.py similarity index 99% rename from api-client/libretime_api_client/version1.py rename to api-client/libretime_api_client/v1.py index 88b261c0f..b45ae2b96 100644 --- a/api-client/libretime_api_client/version1.py +++ b/api-client/libretime_api_client/v1.py @@ -16,7 +16,7 @@ import urllib.parse import requests from ._config import Config -from .utils import ApiRequest, RequestProvider +from ._utils import ApiRequest, RequestProvider AIRTIME_API_VERSION = "1.1" diff --git a/api-client/libretime_api_client/version2.py b/api-client/libretime_api_client/v2.py similarity index 97% rename from api-client/libretime_api_client/version2.py rename to api-client/libretime_api_client/v2.py index c7dd715cb..b70a1ca68 100644 --- a/api-client/libretime_api_client/version2.py +++ b/api-client/libretime_api_client/v2.py @@ -9,7 +9,7 @@ import logging from ._config import Config -from .utils import RequestProvider +from ._utils import RequestProvider LIBRETIME_API_VERSION = "2.0" diff --git a/api-client/setup.py b/api-client/setup.py index 50fd0978f..f2fcf8da5 100644 --- a/api-client/setup.py +++ b/api-client/setup.py @@ -1,7 +1,7 @@ from os import chdir from pathlib import Path -from setuptools import setup +from setuptools import find_packages, setup # Change directory since setuptools uses relative paths here = Path(__file__).parent.resolve() @@ -19,7 +19,7 @@ setup( "Source Code": "https://github.com/libretime/libretime", }, license="AGPLv3", - packages=["libretime_api_client"], + packages=find_packages(), python_requires=">=3.6", install_requires=[ "python-dateutil>=2.8.1,<2.9", diff --git a/api-client/tests/apcurl_test.py b/api-client/tests/apcurl_test.py deleted file mode 100644 index 1c9a81984..000000000 --- a/api-client/tests/apcurl_test.py +++ /dev/null @@ -1,33 +0,0 @@ -import pytest - -from libretime_api_client.utils import ApcUrl, IncompleteUrl, UrlBadParam - - -@pytest.mark.parametrize( - "url, params, expected", - [ - ("one/two/three", {}, "one/two/three"), - ("/testing/{key}", {"key": "aaa"}, "/testing/aaa"), - ( - "/more/{key_a}/{key_b}/testing", - {"key_a": "aaa", "key_b": "bbb"}, - "/more/aaa/bbb/testing", - ), - ], -) -def test_apc_url(url: str, params: dict, expected: str): - found = ApcUrl(url) - assert found.base_url == url - assert found.params(**params).url() == expected - - -def test_apc_url_bad_param(): - url = ApcUrl("/testing/{key}") - with pytest.raises(UrlBadParam): - url.params(bad_key="testing") - - -def test_apc_url_incomplete(): - url = ApcUrl("/{one}/{two}/three").params(two="testing") - with pytest.raises(IncompleteUrl): - url.url() diff --git a/api-client/tests/apirequest_test.py b/api-client/tests/apirequest_test.py deleted file mode 100644 index a6497cc09..000000000 --- a/api-client/tests/apirequest_test.py +++ /dev/null @@ -1,34 +0,0 @@ -from unittest.mock import MagicMock, patch - -from libretime_api_client.utils import ApcUrl, ApiRequest - - -def test_api_request_init(): - u = ApiRequest("request_name", ApcUrl("/test/ing")) - assert u.name == "request_name" - - -def test_api_request_call_json(): - return_value = {"ok": "ok"} - - read = MagicMock() - read.headers = {"content-type": "application/json"} - read.json = MagicMock(return_value=return_value) - - with patch("requests.get") as mock_method: - mock_method.return_value = read - request = ApiRequest("mm", ApcUrl("http://localhost/testing"))() - assert request == return_value - - -def test_api_request_call_html(): - return_value = "" - - read = MagicMock() - read.headers = {"content-type": "application/html"} - read.text = MagicMock(return_value=return_value) - - with patch("requests.get") as mock_method: - mock_method.return_value = read - request = ApiRequest("mm", ApcUrl("http://localhost/testing"))() - assert request.text() == return_value diff --git a/api-client/tests/requestprovider_test.py b/api-client/tests/requestprovider_test.py deleted file mode 100644 index 0bcd2fae5..000000000 --- a/api-client/tests/requestprovider_test.py +++ /dev/null @@ -1,26 +0,0 @@ -from libretime_api_client.utils import RequestProvider - - -def test_request_provider_init(): - request_provider = RequestProvider( - base_url="http://localhost/test", - api_key="test_key", - endpoints={}, - ) - assert len(request_provider.available_requests()) == 0 - - -def test_request_provider_contains(): - endpoints = { - "upload_recorded": "/1/", - "update_media_url": "/2/", - "list_all_db_files": "/3/", - } - request_provider = RequestProvider( - base_url="http://localhost/test", - api_key="test_key", - endpoints=endpoints, - ) - - for endpoint in endpoints: - assert endpoint in request_provider.requests diff --git a/api-client/tests/utils_test.py b/api-client/tests/utils_test.py new file mode 100644 index 000000000..bd1c5cc25 --- /dev/null +++ b/api-client/tests/utils_test.py @@ -0,0 +1,97 @@ +from unittest.mock import MagicMock, patch + +import pytest + +from libretime_api_client._utils import ( + ApcUrl, + ApiRequest, + IncompleteUrl, + RequestProvider, + UrlBadParam, +) + + +@pytest.mark.parametrize( + "url, params, expected", + [ + ("one/two/three", {}, "one/two/three"), + ("/testing/{key}", {"key": "aaa"}, "/testing/aaa"), + ( + "/more/{key_a}/{key_b}/testing", + {"key_a": "aaa", "key_b": "bbb"}, + "/more/aaa/bbb/testing", + ), + ], +) +def test_apc_url(url: str, params: dict, expected: str): + found = ApcUrl(url) + assert found.base_url == url + assert found.params(**params).url() == expected + + +def test_apc_url_bad_param(): + url = ApcUrl("/testing/{key}") + with pytest.raises(UrlBadParam): + url.params(bad_key="testing") + + +def test_apc_url_incomplete(): + url = ApcUrl("/{one}/{two}/three").params(two="testing") + with pytest.raises(IncompleteUrl): + url.url() + + +def test_api_request_init(): + u = ApiRequest("request_name", ApcUrl("/test/ing")) + assert u.name == "request_name" + + +def test_api_request_call_json(): + return_value = {"ok": "ok"} + + read = MagicMock() + read.headers = {"content-type": "application/json"} + read.json = MagicMock(return_value=return_value) + + with patch("requests.get") as mock_method: + mock_method.return_value = read + request = ApiRequest("mm", ApcUrl("http://localhost/testing"))() + assert request == return_value + + +def test_api_request_call_html(): + return_value = "" + + read = MagicMock() + read.headers = {"content-type": "application/html"} + read.text = MagicMock(return_value=return_value) + + with patch("requests.get") as mock_method: + mock_method.return_value = read + request = ApiRequest("mm", ApcUrl("http://localhost/testing"))() + assert request.text() == return_value + + +def test_request_provider_init(): + request_provider = RequestProvider( + base_url="http://localhost/test", + api_key="test_key", + endpoints={}, + ) + assert len(request_provider.available_requests()) == 0 + + +def test_request_provider_contains(): + endpoints = { + "upload_recorded": "/1/", + "update_media_url": "/2/", + "list_all_db_files": "/3/", + } + request_provider = RequestProvider( + base_url="http://localhost/test", + api_key="test_key", + endpoints=endpoints, + ) + + for endpoint in endpoints: + assert endpoint in request_provider.requests diff --git a/api-client/tests/version2_test.py b/api-client/tests/v2_test.py similarity index 92% rename from api-client/tests/version2_test.py rename to api-client/tests/v2_test.py index 00d7010ca..d2e109a3d 100644 --- a/api-client/tests/version2_test.py +++ b/api-client/tests/v2_test.py @@ -2,7 +2,7 @@ from pathlib import Path import pytest -from libretime_api_client.version2 import AirtimeApiClient +from libretime_api_client.v2 import AirtimeApiClient @pytest.fixture()