diff --git a/api-client/libretime_api_client/_client.py b/api-client/libretime_api_client/_client.py index 82c32ad7a..e6f5eaf59 100644 --- a/api-client/libretime_api_client/_client.py +++ b/api-client/libretime_api_client/_client.py @@ -1,5 +1,4 @@ from typing import Optional -from urllib.parse import urljoin from loguru import logger from requests import Response @@ -51,7 +50,9 @@ class Session(BaseSession): def create_url(self, url): """Create the URL based off this partial path.""" - return urljoin(self.base_url, url) + if self.base_url is None: + return url + return f"{self.base_url.rstrip('/')}/{url.lstrip('/')}" # pylint: disable=too-few-public-methods diff --git a/api-client/tests/client_test.py b/api-client/tests/client_test.py new file mode 100644 index 000000000..a7810da12 --- /dev/null +++ b/api-client/tests/client_test.py @@ -0,0 +1,19 @@ +import pytest + +from libretime_api_client._client import Session + + +@pytest.mark.parametrize( + "base_url, url, expected", + [ + (None, "/path", "/path"), + (None, "http://host/path", "http://host/path"), + ("http://host", "path", "http://host/path"), + ("http://host", "/path", "http://host/path"), + ("http://host/", "path", "http://host/path"), + ("http://host/", "/path", "http://host/path"), + ], +) +def test_session_create_url(base_url, url, expected): + session = Session(base_url=base_url) + assert session.create_url(url) == expected diff --git a/api-client/tests/v2_test.py b/api-client/tests/v2_test.py index 4d88f24b2..8d2f4aa68 100644 --- a/api-client/tests/v2_test.py +++ b/api-client/tests/v2_test.py @@ -1,11 +1,20 @@ +import pytest + from libretime_api_client.v2 import ApiClient -def test_api_client(requests_mock): - api_client = ApiClient(base_url="http://localhost:8080", api_key="test-key") +@pytest.mark.parametrize( + "base_url", + [ + ("http://localhost:8080"), + ("http://localhost:8080/base"), + ], +) +def test_api_client(requests_mock, base_url): + api_client = ApiClient(base_url=base_url, api_key="test-key") requests_mock.get( - "http://localhost:8080/api/v2/version", + f"{base_url}/api/v2/version", json={"api_version": "2.0.0"}, )