Spaces:
Sleeping
Sleeping
| import httpx | |
| import pytest | |
| from server.main import build_app | |
| pytestmark = pytest.mark.asyncio | |
| async def test_generate_returns_wav_bytes(monkeypatch, fake_classes): | |
| monkeypatch.setattr("server.main._discover_adapter_classes", lambda: fake_classes) | |
| monkeypatch.setattr("server.main.select_device", lambda: "cpu") | |
| app = build_app() | |
| from tests.conftest import lifespan_ctx | |
| transport = httpx.ASGITransport(app=app) | |
| async with lifespan_ctx(app), httpx.AsyncClient(transport=transport, base_url="http://t") as c: | |
| r = await c.post( | |
| "/api/generate", | |
| data={ | |
| "text": "hello world", | |
| "model_id": "fake", | |
| "params": "{}", | |
| }, | |
| ) | |
| assert r.status_code == 200 | |
| assert r.headers["content-type"].startswith("audio/wav") | |
| assert r.content == b"FAKEWAV" | |
| assert r.headers["x-seed-used"] == "0" | |
| async def test_generate_unknown_model_404(monkeypatch, fake_classes): | |
| monkeypatch.setattr("server.main._discover_adapter_classes", lambda: fake_classes) | |
| monkeypatch.setattr("server.main.select_device", lambda: "cpu") | |
| app = build_app() | |
| from tests.conftest import lifespan_ctx | |
| transport = httpx.ASGITransport(app=app) | |
| async with lifespan_ctx(app), httpx.AsyncClient(transport=transport, base_url="http://t") as c: | |
| r = await c.post( | |
| "/api/generate", | |
| data={"text": "x", "model_id": "nope", "params": "{}"}, | |
| ) | |
| assert r.status_code == 404 | |
| assert r.json()["error"]["code"] == "model_not_found" | |
| async def test_generate_invalid_reference_returns_400(monkeypatch, fake_classes): | |
| monkeypatch.setattr("server.main._discover_adapter_classes", lambda: fake_classes) | |
| monkeypatch.setattr("server.main.select_device", lambda: "cpu") | |
| app = build_app() | |
| from tests.conftest import lifespan_ctx | |
| transport = httpx.ASGITransport(app=app) | |
| bad = b"not a wav" | |
| async with lifespan_ctx(app), httpx.AsyncClient(transport=transport, base_url="http://t") as c: | |
| r = await c.post( | |
| "/api/generate", | |
| data={"text": "x", "model_id": "fake", "params": "{}"}, | |
| files={"reference_wav": ("ref.wav", bad, "audio/wav")}, | |
| ) | |
| assert r.status_code == 400 | |
| assert r.json()["error"]["code"] == "reference_invalid" | |