from pathlib import Path from fastapi.testclient import TestClient from app.config import Settings from app.main import create_app def test_health_reports_degraded_when_realesrgan_binary_is_missing(tmp_path: Path) -> None: settings = Settings( engine="realesrgan-ncnn", device="vulkan", token="secret-token", tmp_dir=str(tmp_path / "tmp"), output_dir=str(tmp_path / "output"), realesrgan_bin=str(tmp_path / "bin" / "realesrgan-ncnn-vulkan"), realesrgan_model_dir=str(tmp_path / "models"), ) (tmp_path / "models").mkdir(parents=True) client = TestClient(create_app(settings)) response = client.get("/health") assert response.status_code == 200 payload = response.json() assert payload["status"] == "degraded" assert payload["engine"] == "realesrgan-ncnn" assert payload["realesrgan"]["binary_exists"] is False assert payload["realesrgan"]["available_models"] == [] def test_health_reports_available_models_for_realesrgan(tmp_path: Path) -> None: binary = tmp_path / "bin" / "realesrgan-ncnn-vulkan" binary.parent.mkdir(parents=True) binary.write_text("#!/bin/sh\nexit 0\n", encoding="utf-8") binary.chmod(0o755) model_dir = tmp_path / "models" model_dir.mkdir(parents=True) for name in ("realesrgan-x4plus", "realesrgan-x4plus-anime"): (model_dir / f"{name}.param").write_text("param", encoding="utf-8") (model_dir / f"{name}.bin").write_text("bin", encoding="utf-8") settings = Settings( engine="realesrgan-ncnn", device="vulkan", token="secret-token", tmp_dir=str(tmp_path / "tmp"), output_dir=str(tmp_path / "output"), realesrgan_bin=str(binary), realesrgan_model_dir=str(model_dir), ) client = TestClient(create_app(settings)) response = client.get("/health") assert response.status_code == 200 payload = response.json() assert payload["status"] == "ok" assert payload["models_loaded"] is True assert payload["realesrgan"]["available_models"] == ["realesrgan-x4plus", "realesrgan-x4plus-anime"]