Spaces:
Sleeping
Sleeping
| """Regression tests for catalog image URL selection and image probe (golden JSON).""" | |
| from __future__ import annotations | |
| import json | |
| from pathlib import Path | |
| from urllib.request import Request | |
| import pytest | |
| from backend.catalog_image_probe import ( | |
| assert_catalog_image_url_works, | |
| first_catalog_image_probe_url, | |
| first_catalog_image_probe_url_from_list, | |
| probe_image_url, | |
| resolve_catalog_media_asset_url, | |
| ) | |
| _FIXTURES = Path(__file__).resolve().parent / "fixtures" | |
| def _load(name: str) -> dict: | |
| return json.loads((_FIXTURES / name).read_text(encoding="utf-8")) | |
| def test_resolve_catalog_media_asset_url_absolute_unchanged() -> None: | |
| u = "https://cdn.example.test/catalog/fixture.jpg" | |
| assert resolve_catalog_media_asset_url("https://space.hf.space", u) == u | |
| def test_resolve_catalog_media_asset_url_relative_matches_golden() -> None: | |
| detail = _load("catalog_image_probe_detail_relative.json") | |
| raw = detail["assets"][0]["asset_url"] | |
| assert resolve_catalog_media_asset_url("https://space.hf.space", raw) == "https://space.hf.space/media/fetlife_fetishes/71/sample.jpg" | |
| def test_first_catalog_image_probe_url_https_fixture() -> None: | |
| detail = _load("catalog_image_probe_detail_with_asset.json") | |
| assert first_catalog_image_probe_url("https://ignored/", detail) == "https://cdn.example.test/catalog/fixture.jpg" | |
| def test_first_catalog_image_probe_url_relative_fixture() -> None: | |
| detail = _load("catalog_image_probe_detail_relative.json") | |
| assert ( | |
| first_catalog_image_probe_url("https://space.hf.space", detail) | |
| == "https://space.hf.space/media/fetlife_fetishes/71/sample.jpg" | |
| ) | |
| def test_first_catalog_image_probe_url_from_list_tuple() -> None: | |
| a = _load("catalog_image_probe_detail_with_asset.json") | |
| b = _load("catalog_image_probe_detail_no_asset.json") | |
| kid, url = first_catalog_image_probe_url_from_list("https://api.example", [b, a]) | |
| assert kid == "fixture_kink_image" | |
| assert url == "https://cdn.example.test/catalog/fixture.jpg" | |
| class _MemResp: | |
| __slots__ = ("status", "headers", "_body") | |
| def __init__(self, status: int, headers: dict[str, str], body: bytes) -> None: | |
| self.status = status | |
| self.headers = headers | |
| self._body = body | |
| def read(self, n: int = -1) -> bytes: | |
| if n == -1: | |
| return self._body | |
| return self._body[:n] | |
| def __enter__(self) -> "_MemResp": | |
| return self | |
| def __exit__(self, *args: object) -> None: | |
| return None | |
| class _FixedOpener: | |
| __slots__ = ("resp", "called") | |
| def __init__(self, resp: _MemResp) -> None: | |
| self.resp = resp | |
| self.called = False | |
| def __call__(self, req: Request, timeout: float = 30.0) -> _MemResp: | |
| self.called = True | |
| assert isinstance(req, Request) | |
| return self.resp | |
| def test_probe_image_url_uses_opener_and_validates_body() -> None: | |
| body = b"\xff\xd8\xff\xe0" + b"\x00" * 64 | |
| resp = _MemResp(200, {"Content-Type": "image/jpeg; charset=binary"}, body) | |
| opener = _FixedOpener(resp) | |
| status, ctype = probe_image_url("https://example.test/x.jpg", opener=opener) | |
| assert status == 200 | |
| assert ctype == "image/jpeg" | |
| assert opener.called is True | |
| def test_assert_catalog_image_url_works_rejects_html_type() -> None: | |
| resp = _MemResp(200, {"Content-Type": "text/html"}, b"<html></html>") | |
| opener = _FixedOpener(resp) | |
| with pytest.raises(RuntimeError, match="image/\\*"): | |
| assert_catalog_image_url_works("https://example.test/page", opener=opener) | |
| def test_hf_docker_seed_media_files_exist_for_picture_probe() -> None: | |
| """Regression: deploy bundle must ship JPEGs probed by ``verify_hf_stack`` on Spaces.""" | |
| root = Path(__file__).resolve().parents[1] | |
| demo = root / "deploy" / "hf" / "seed" / "cached_assets" / "hf_seed" / "demo_kink_1.jpg" | |
| placeholder = root / "deploy" / "hf" / "seed" / "cached_assets" / "fetlife_fetishes" / "1" / "146853406.jpg" | |
| assert demo.is_file() and demo.stat().st_size > 1000 | |
| assert placeholder.is_file() and placeholder.stat().st_size > 1000 | |