From: Shane Jaroch Date: Fri, 12 Apr 2024 20:39:12 +0000 (-0400) Subject: improve mocks X-Git-Tag: v0.2.8.dev2~51 X-Git-Url: https://git.nutra.tk/v2?a=commitdiff_plain;h=e6f2c4f310c168e3acc446881d546ef6df8a7d57;p=nutratech%2Fcli.git improve mocks --- diff --git a/ntclient/services/api/__init__.py b/ntclient/services/api/__init__.py index 6a67d99..552bffc 100644 --- a/ntclient/services/api/__init__.py +++ b/ntclient/services/api/__init__.py @@ -14,7 +14,7 @@ REQUEST_CONNECT_TIMEOUT = 5 # TODO: try all of these; cache (save in prefs.json) the one which works first URLS_API = ( - # "https://api.nutra.tk", + "https://api.nutra.tk", "https://api.dev.nutra.tk", "http://216.218.228.93", # dev "http://216.218.216.163", # prod @@ -35,7 +35,7 @@ def cache_mirrors() -> str: # TODO: save in persistence config.ini print(f"INFO: mirror SUCCESS '{mirror}'") return mirror - except requests.exceptions.ConnectionError: # pragma: no cover + except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError): print(f"WARN: mirror FAILURE '{mirror}'") return str() diff --git a/requirements-test.txt b/requirements-test.txt index 86c8192..2758f0a 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -1,2 +1,3 @@ coverage>=6.2 pytest>=7.0.1 +requests-mock>=1.12.1 diff --git a/tests/services/test_api.py b/tests/services/test_api.py index d673cc3..1102094 100644 --- a/tests/services/test_api.py +++ b/tests/services/test_api.py @@ -5,20 +5,26 @@ Created on Fri Apr 12 16:14:03 2024 @author: shane """ -from unittest.mock import MagicMock, patch +import pytest +import requests_mock as r_mock -from ntclient.services.api import cache_mirrors +from ntclient.services.api import URLS_API, cache_mirrors +if __name__ == "__main__": + pytest.main() -@patch("requests.get",return_value=MagicMock(status_code=200)) -# pylint: disable=unused-argument -def test_cache_mirrors(*args: MagicMock) -> None: + +def test_cache_mirrors(requests_mock: r_mock.Mocker) -> None: """Test cache_mirrors""" - assert cache_mirrors() == "https://api.dev.nutra.tk" + for url in URLS_API: + requests_mock.get(url, status_code=200) + assert cache_mirrors() == "https://api.nutra.tk" -@patch("requests.get",return_value=MagicMock(status_code=503)) -# pylint: disable=unused-argument -def test_cache_mirrors_empty_string_on_failed_mirrors(*args: MagicMock) -> None: - """Test cache_mirrors""" +def test_cache_mirrors_failing_mirrors_return_empty_string( + requests_mock: r_mock.Mocker, +) -> None: + """Test when cache_mirrors are all down, return empty string.""" + for url in URLS_API: + requests_mock.get(url, status_code=503) assert cache_mirrors() == str()