diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a650969..5094692 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -42,9 +42,3 @@ jobs: - name: Run Pytest run: make tests - - - name: Upload coverage to CodeCov - uses: codecov/codecov-action@v3 - with: - fail_ci_if_error: true - verbose: true diff --git a/fintoc/client.py b/fintoc/client.py index 3e0e43d..186ed27 100644 --- a/fintoc/client.py +++ b/fintoc/client.py @@ -10,15 +10,15 @@ class Client: - """Encapsulates the client behaviour and methods.""" - def __init__(self, base_url, api_key, user_agent, params={}): + def __init__(self, base_url, api_key, api_version, user_agent, params={}): self.base_url = base_url self.api_key = api_key self.user_agent = user_agent self.params = params self.__client = None + self.api_version = api_version @property def _client(self): @@ -33,7 +33,15 @@ def _client(self): @property def headers(self): """Return the appropriate headers for every request.""" - return {"Authorization": self.api_key, "User-Agent": self.user_agent} + headers = { + "Authorization": self.api_key, + "User-Agent": self.user_agent, + } + + if self.api_version is not None: + headers["Fintoc-Version"] = self.api_version + + return headers def request(self, path, paginated=False, method="get", params=None, json=None): """ @@ -62,6 +70,7 @@ def extend( return Client( base_url=base_url or self.base_url, api_key=api_key or self.api_key, + api_version=self.api_version, user_agent=user_agent or self.user_agent, params={**self.params, **params} if params else self.params, ) diff --git a/fintoc/core.py b/fintoc/core.py index db9e705..9146bc2 100644 --- a/fintoc/core.py +++ b/fintoc/core.py @@ -16,13 +16,13 @@ class Fintoc: - """Encapsulates the core object's behaviour and methods.""" - def __init__(self, api_key): + def __init__(self, api_key, api_version=None): self._client = Client( base_url=f"{API_BASE_URL}/{API_VERSION}", api_key=api_key, + api_version=api_version, user_agent=f"fintoc-python/{__version__}", ) self.charges = ChargesManager("/charges", self._client) diff --git a/fintoc/version.py b/fintoc/version.py index e098f95..d704f7f 100644 --- a/fintoc/version.py +++ b/fintoc/version.py @@ -1,4 +1,4 @@ """Module to hold the version utilities.""" -version_info = (2, 3, 0) +version_info = (2, 4, 0) __version__ = ".".join([str(x) for x in version_info]) diff --git a/pyproject.toml b/pyproject.toml index d658bf5..5e3dacf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "fintoc" -version = "2.3.0" +version = "2.4.0" description = "The official Python client for the Fintoc API." authors = ["Daniel Leal ", "Nebil Kawas "] maintainers = ["Daniel Leal "] diff --git a/tests/managers/test_links_manager.py b/tests/managers/test_links_manager.py index 1dfe26d..83bf8c1 100644 --- a/tests/managers/test_links_manager.py +++ b/tests/managers/test_links_manager.py @@ -12,11 +12,13 @@ def patch_http_client(self, patch_http_client): def setup_method(self): self.base_url = "https://test.com" self.api_key = "super_secret_api_key" + self.api_version = None self.user_agent = "fintoc-python/test" self.params = {"first_param": "first_value", "second_param": "second_value"} self.client = Client( self.base_url, self.api_key, + self.api_version, self.user_agent, params=self.params, ) diff --git a/tests/mixins/test_manager_mixin.py b/tests/mixins/test_manager_mixin.py index 59342e9..346ac2b 100644 --- a/tests/mixins/test_manager_mixin.py +++ b/tests/mixins/test_manager_mixin.py @@ -57,11 +57,13 @@ def patch_http_client(self, patch_http_client): def setup_method(self): self.base_url = "https://test.com" self.api_key = "super_secret_api_key" + self.api_version = None self.user_agent = "fintoc-python/test" self.params = {"first_param": "first_value", "second_param": "second_value"} self.client = Client( self.base_url, self.api_key, + self.api_version, self.user_agent, params=self.params, ) @@ -95,11 +97,13 @@ def patch_http_client(self, patch_http_client): def setup_method(self): self.base_url = "https://test.com" self.api_key = "super_secret_api_key" + self.api_version = None self.user_agent = "fintoc-python/test" self.params = {"first_param": "first_value", "second_param": "second_value"} self.client = Client( self.base_url, self.api_key, + self.api_version, self.user_agent, params=self.params, ) @@ -148,11 +152,13 @@ def patch_http_client(self, patch_http_client): def setup_method(self): self.base_url = "https://test.com" self.api_key = "super_secret_api_key" + self.api_version = None self.user_agent = "fintoc-python/test" self.params = {"first_param": "first_value", "second_param": "second_value"} self.client = Client( self.base_url, self.api_key, + self.api_version, self.user_agent, params=self.params, ) diff --git a/tests/mixins/test_resource_mixin.py b/tests/mixins/test_resource_mixin.py index 2086608..d0bd99d 100644 --- a/tests/mixins/test_resource_mixin.py +++ b/tests/mixins/test_resource_mixin.py @@ -22,11 +22,13 @@ def patch_http_client(self, patch_http_client): def setup_method(self): self.base_url = "https://test.com" self.api_key = "super_secret_api_key" + self.api_version = None self.user_agent = "fintoc-python/test" self.params = {"first_param": "first_value", "second_param": "second_value"} self.client = Client( self.base_url, self.api_key, + self.api_version, self.user_agent, params=self.params, ) @@ -108,11 +110,13 @@ def patch_http_client(self, patch_http_client): def setup_method(self): self.base_url = "https://test.com" self.api_key = "super_secret_api_key" + self.api_version = None self.user_agent = "fintoc-python/test" self.params = {"first_param": "first_value", "second_param": "second_value"} self.client = Client( self.base_url, self.api_key, + self.api_version, self.user_agent, params=self.params, ) @@ -159,11 +163,13 @@ def patch_http_client(self, patch_http_client): def setup_method(self): self.base_url = "https://test.com" self.api_key = "super_secret_api_key" + self.api_version = None self.user_agent = "fintoc-python/test" self.params = {"first_param": "first_value", "second_param": "second_value"} self.client = Client( self.base_url, self.api_key, + self.api_version, self.user_agent, params=self.params, ) diff --git a/tests/resources/test_account.py b/tests/resources/test_account.py index cfa4496..e04fb92 100644 --- a/tests/resources/test_account.py +++ b/tests/resources/test_account.py @@ -9,11 +9,13 @@ class TestAccountResource: def setup_method(self): self.base_url = "https://test.com" self.api_key = "super_secret_api_key" + self.api_version = None self.user_agent = "fintoc-python/test" self.params = {"first_param": "first_value", "second_param": "second_value"} self.client = Client( self.base_url, self.api_key, + self.api_version, self.user_agent, params=self.params, ) diff --git a/tests/resources/test_link.py b/tests/resources/test_link.py index b8ff611..bde1486 100644 --- a/tests/resources/test_link.py +++ b/tests/resources/test_link.py @@ -9,11 +9,13 @@ class TestLinkResource: def setup_method(self): self.base_url = "https://test.com" self.api_key = "super_secret_api_key" + self.api_version = None self.user_agent = "fintoc-python/test" self.params = {"first_param": "first_value", "second_param": "second_value"} self.client = Client( self.base_url, self.api_key, + self.api_version, self.user_agent, params=self.params, ) diff --git a/tests/test_client.py b/tests/test_client.py index 149c661..3b1b9be 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -12,11 +12,19 @@ def setup_method(self): self.api_key = "super_secret_api_key" self.user_agent = "fintoc-python/test" self.params = {"first_param": "first_value", "second_param": "second_value"} + self.api_version = None - def create_client(self, params=False): + def create_client(self, params=False, api_version=None): if not params: - return Client(self.base_url, self.api_key, self.user_agent) - return Client(self.base_url, self.api_key, self.user_agent, params=self.params) + return Client(self.base_url, self.api_key, api_version, self.user_agent) + + return Client( + self.base_url, + self.api_key, + self.api_version, + self.user_agent, + params=self.params, + ) def test_client_creation_without_params(self): client = self.create_client() @@ -34,7 +42,17 @@ def test_client_creation_with_params(self): assert client.user_agent == self.user_agent assert client.params == self.params - def test_client_headers(self): + def test_client_headers_with_api_version(self): + client = self.create_client(api_version="2023-01-01") + assert isinstance(client.headers, dict) + assert len(client.headers.keys()) == 3 + assert "Authorization" in client.headers + assert "User-Agent" in client.headers + assert client.headers["Authorization"] == self.api_key + assert client.headers["User-Agent"] == self.user_agent + assert client.headers["Fintoc-Version"] == "2023-01-01" + + def test_client_headers_without_api_version(self): client = self.create_client() assert isinstance(client.headers, dict) assert len(client.headers.keys()) == 2 @@ -87,11 +105,13 @@ def patch_http_client(self, patch_http_client): def setup_method(self): self.base_url = "https://test.com" self.api_key = "super_secret_api_key" + self.api_version = None self.user_agent = "fintoc-python/test" self.params = {"first_param": "first_value", "second_param": "second_value"} self.client = Client( self.base_url, self.api_key, + self.api_version, self.user_agent, params=self.params, ) diff --git a/tests/test_core.py b/tests/test_core.py index b72baba..0a742ac 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -11,3 +11,16 @@ def test_object_creations(self): assert isinstance(fintoc._client, Client) assert isinstance(fintoc.links, ManagerMixin) assert isinstance(fintoc.webhook_endpoints, ManagerMixin) + + def test_fintoc_creation_with_api_version(self): + # pylint: disable=protected-access + api_key = "super_secret_api_key" + api_version = "2023-01-01" + fintoc = Fintoc(api_key, api_version) + assert fintoc._client.headers["Fintoc-Version"] == api_version + + def test_fintoc_creation_without_api_version(self): + # pylint: disable=protected-access + api_key = "super_secret_api_key" + fintoc = Fintoc(api_key) + assert "Fintoc-Version" not in fintoc._client.headers