Files
shelfmark/tests/core/test_mirrors_config.py
T
Alex e35b4c47a7 Direct source refactor (#895)
- Updated mirror selection
- Removed built-in mirror options, users must provide their own
configurations
- Set Universal search to default, added ability to disable direct
source
- Updated documentation
- Updated makefile
2026-04-15 18:50:13 +01:00

144 lines
4.5 KiB
Python

from shelfmark.core import mirrors
class _DummyConfig:
def __init__(self, values: dict):
self._values = values
def get(self, key: str, default=None):
return self._values.get(key, default)
def test_get_aa_mirrors_prefers_full_configured_list(monkeypatch):
dummy = _DummyConfig(
{
"AA_MIRROR_URLS": ["annas-archive.gl/", "https://annas-archive.li"],
"AA_ADDITIONAL_URLS": "https://should-not-be-appended.example",
}
)
monkeypatch.setattr(mirrors, "_get_config", lambda: dummy)
assert mirrors.get_aa_mirrors() == [
"https://annas-archive.gl",
"https://annas-archive.li",
]
def test_get_aa_mirrors_uses_legacy_additional_when_no_explicit_list(monkeypatch):
dummy = _DummyConfig(
{
"AA_MIRROR_URLS": [],
"AA_ADDITIONAL_URLS": "extra.example, https://extra2.example/",
}
)
monkeypatch.setattr(mirrors, "_get_config", lambda: dummy)
assert mirrors.get_aa_mirrors() == [
"https://extra.example",
"https://extra2.example",
]
def test_get_aa_mirrors_returns_empty_when_unconfigured(monkeypatch):
monkeypatch.setattr(mirrors, "_get_config", lambda: _DummyConfig({}))
assert mirrors.get_aa_mirrors() == []
def test_has_aa_mirror_configuration_accepts_custom_base_url_without_list(monkeypatch):
dummy = _DummyConfig(
{
"AA_BASE_URL": "https://custom-aa.example",
"AA_MIRROR_URLS": [],
}
)
monkeypatch.setattr(mirrors, "_get_config", lambda: dummy)
assert mirrors.has_aa_mirror_configuration() is True
def test_get_libgen_mirrors_returns_user_supplied_urls_only(monkeypatch):
dummy = _DummyConfig({"LIBGEN_MIRROR_URLS": ["libgen.one", "https://libgen.two/"]})
monkeypatch.setattr(mirrors, "_get_config", lambda: dummy)
assert mirrors.get_libgen_mirrors() == [
"https://libgen.one",
"https://libgen.two",
]
def test_get_libgen_mirrors_falls_back_to_legacy_config(monkeypatch):
dummy = _DummyConfig({"LIBGEN_ADDITIONAL_URLS": "libgen.legacy, https://libgen.backup/"})
monkeypatch.setattr(mirrors, "_get_config", lambda: dummy)
assert mirrors.get_libgen_mirrors() == [
"https://libgen.legacy",
"https://libgen.backup",
]
def test_get_zlib_mirrors_prefers_canonical_list(monkeypatch):
dummy = _DummyConfig({"ZLIB_MIRROR_URLS": ["zlib.primary", "https://zlib.backup"]})
monkeypatch.setattr(mirrors, "_get_config", lambda: dummy)
assert mirrors.get_zlib_mirrors() == [
"https://zlib.primary",
"https://zlib.backup",
]
assert mirrors.get_zlib_url_template() == "https://zlib.primary/md5/{md5}"
def test_get_zlib_mirrors_falls_back_to_primary_then_additional(monkeypatch):
dummy = _DummyConfig(
{
"ZLIB_PRIMARY_URL": "zlib.primary",
"ZLIB_ADDITIONAL_URLS": "https://zlib.primary, zlib.backup",
}
)
monkeypatch.setattr(mirrors, "_get_config", lambda: dummy)
assert mirrors.get_zlib_mirrors() == [
"https://zlib.primary",
"https://zlib.backup",
]
assert mirrors.get_zlib_url_template() == "https://zlib.primary/md5/{md5}"
def test_get_zlib_url_template_returns_none_without_config(monkeypatch):
monkeypatch.setattr(mirrors, "_get_config", lambda: _DummyConfig({}))
assert mirrors.get_zlib_url_template() is None
def test_get_welib_mirrors_prefers_primary_then_additional(monkeypatch):
dummy = _DummyConfig({"WELIB_MIRROR_URLS": ["welib.primary", "https://welib.backup"]})
monkeypatch.setattr(mirrors, "_get_config", lambda: dummy)
assert mirrors.get_welib_mirrors() == [
"https://welib.primary",
"https://welib.backup",
]
assert mirrors.get_welib_url_template() == "https://welib.primary/md5/{md5}"
def test_get_welib_mirrors_falls_back_to_primary_then_additional(monkeypatch):
dummy = _DummyConfig(
{
"WELIB_PRIMARY_URL": "welib.primary",
"WELIB_ADDITIONAL_URLS": "https://welib.backup",
}
)
monkeypatch.setattr(mirrors, "_get_config", lambda: dummy)
assert mirrors.get_welib_mirrors() == [
"https://welib.primary",
"https://welib.backup",
]
assert mirrors.get_welib_url_template() == "https://welib.primary/md5/{md5}"
def test_get_welib_url_template_returns_none_without_config(monkeypatch):
monkeypatch.setattr(mirrors, "_get_config", lambda: _DummyConfig({}))
assert mirrors.get_welib_url_template() is None