# 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
# 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()
@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()