feat(api,models): FastAPI app with /api/health, /api/models, activate, /api/generate + chatterbox-en adapter
829be0a unverified | from fastapi.testclient import TestClient | |
| from server.main import build_app | |
| def test_models_list_returns_registered(monkeypatch, fake_classes): | |
| monkeypatch.setattr("server.main._discover_adapter_classes", lambda: fake_classes) | |
| monkeypatch.setattr("server.main.select_device", lambda: "cpu") | |
| app = build_app() | |
| with TestClient(app) as client: | |
| r = client.get("/api/models") | |
| assert r.status_code == 200 | |
| items = r.json() | |
| ids = sorted(m["id"] for m in items) | |
| assert ids == ["fake", "fake-b"] | |
| fake = next(m for m in items if m["id"] == "fake") | |
| assert fake["paralinguistic_tags"] == ["[laugh]"] | |
| assert fake["params"][0]["name"] == "t" | |
| def test_active_model_initially_idle(monkeypatch, fake_classes): | |
| monkeypatch.setattr("server.main._discover_adapter_classes", lambda: fake_classes) | |
| monkeypatch.setattr("server.main.select_device", lambda: "cpu") | |
| app = build_app() | |
| with TestClient(app) as client: | |
| r = client.get("/api/models/active") | |
| assert r.status_code == 200 | |
| body = r.json() | |
| assert body["id"] is None | |
| assert body["status"] == "idle" | |