]> Nutra Git (v2) - nutratech/cli.git/commitdiff
improve mocks
authorShane Jaroch <chown_tee@proton.me>
Fri, 12 Apr 2024 20:39:12 +0000 (16:39 -0400)
committerShane Jaroch <chown_tee@proton.me>
Fri, 12 Apr 2024 20:39:12 +0000 (16:39 -0400)
ntclient/services/api/__init__.py
requirements-test.txt
tests/services/test_api.py

index 6a67d99c599287d678fc2c6e41709b329c27e46d..552bffc41faebe43804818c1d60a7fbef1ac97dc 100644 (file)
@@ -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()
index 86c8192b7062251dd427653007b0a30ef01b2f7f..2758f0a98c2a847412a7f13c172048d90f6ad266 100644 (file)
@@ -1,2 +1,3 @@
 coverage>=6.2
 pytest>=7.0.1
+requests-mock>=1.12.1
index d673cc3bd50e11c37b5e206dbc885555a888352b..1102094c4ff01978824b9ecf9c1fefeaa3548ed2 100644 (file)
@@ -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()