test_api.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. from fastapi.testclient import TestClient
  2. from content_agent import api
  3. from content_agent.integrations.mock_platform import MockPlatformClient
  4. from content_agent.run_service import RunService
  5. def test_api_runs_and_queries_mock_chain(tmp_path, monkeypatch):
  6. monkeypatch.setattr(api, "service", RunService(runtime_root=tmp_path / "runtime" / "v1"))
  7. client = TestClient(api.app)
  8. response = client.post("/runs", json={"trace_id": "test_trace_api", "platform": "douyin"})
  9. assert response.status_code == 200
  10. assert response.json()["platform_mode"] == "mock"
  11. for path in [
  12. "/runs/test_trace_api",
  13. "/runs/test_trace_api/candidates",
  14. "/runs/test_trace_api/rule-decisions",
  15. "/runs/test_trace_api/source-edges",
  16. "/runs/test_trace_api/final-output",
  17. "/runs/test_trace_api/strategy-review",
  18. "/runs/test_trace_api/validation",
  19. ]:
  20. get_response = client.get(path)
  21. assert get_response.status_code == 200, path
  22. review = client.get("/runs/test_trace_api/strategy-review").json()["data"]
  23. assert review["summary"]["pool_count"] == 1
  24. assert review["suggestions"]
  25. validation = client.get("/runs/test_trace_api/validation").json()
  26. assert validation["status"] == "pass"
  27. summary = client.get("/runs/test_trace_api").json()
  28. assert summary["validation_status"] == "pass"
  29. def test_api_accepts_real_platform_mode_without_changing_default(tmp_path, monkeypatch):
  30. selected_modes = []
  31. def fake_platform_client(self, platform_mode):
  32. selected_modes.append(platform_mode)
  33. return MockPlatformClient()
  34. monkeypatch.setattr(RunService, "_platform_client", fake_platform_client)
  35. monkeypatch.setattr(api, "service", RunService(runtime_root=tmp_path / "runtime" / "v1"))
  36. client = TestClient(api.app)
  37. default_response = client.post("/runs", json={"trace_id": "test_trace_default_mode"})
  38. real_response = client.post(
  39. "/runs",
  40. json={"trace_id": "test_trace_real_mode", "platform_mode": "real"},
  41. )
  42. assert default_response.status_code == 200
  43. assert default_response.json()["platform_mode"] == "mock"
  44. assert real_response.status_code == 200
  45. assert real_response.json()["platform_mode"] == "real"
  46. assert selected_modes == ["mock", "real"]