mirror of
https://github.com/calibrain/shelfmark.git
synced 2026-10-01 07:24:56 +01:00
- 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
144 lines
4.5 KiB
Python
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
|