kink-discovery / tests /test_catalog_image_probe.py
Perplexed7675's picture
Sync from kink_cli (Docker Space)
6ff91d6 verified
Raw
History Blame Contribute Delete
4.11 kB
"""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