| 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" |
|
|