import pytest pytestmark = [pytest.mark.integration, pytest.mark.api] VALID_PROXY_CODE = """def request(flow): return None """ def test_proxy_crud_round_trip_uses_real_app_and_mongo(real_client, auth_headers): create_response = real_client.post( "/proxy", headers=auth_headers, json={ "proxy_port": 49081, "name": "integration-echo", "code": VALID_PROXY_CODE, "protocol": "http", "service": { "host": "127.0.0.1", "port": 49082, }, "healthcheck": { "enabled": True, "path": "/healthz", "benchmark_enabled": True, }, }, ) assert create_response.status_code == 201 created = create_response.json() assert created["proxy_port"] == 49081 assert created["name"] == "integration-echo" assert created["healthcheck"]["benchmark_enabled"] is True list_response = real_client.get("/proxy", headers=auth_headers) assert list_response.status_code == 200 assert [item["proxy_port"] for item in list_response.json()] == [49081] get_response = real_client.get("/proxy/49081", headers=auth_headers) assert get_response.status_code == 200 assert get_response.json()["service"]["port"] == 49082 update_response = real_client.put( "/proxy/49081", headers=auth_headers, json={ "name": "integration-echo-updated", "code": VALID_PROXY_CODE.replace("None", '"updated"'), "healthcheck": { "enabled": True, "path": "/ready", "benchmark_enabled": False, }, }, ) assert update_response.status_code == 200 updated = update_response.json() assert updated["name"] == "integration-echo-updated" assert updated["code"].endswith('return "updated"\n') assert updated["healthcheck"]["path"] == "/ready" assert updated["healthcheck"]["benchmark_enabled"] is False history_response = real_client.get( "/proxy/49081/health/history", headers=auth_headers, ) assert history_response.status_code == 200 history_payload = history_response.json() assert history_payload["proxy_port"] == 49081 assert history_payload["latest"] is None assert history_payload["history"] == [] delete_response = real_client.delete("/proxy/49081", headers=auth_headers) assert delete_response.status_code == 204 missing_response = real_client.get("/proxy/49081", headers=auth_headers) assert missing_response.status_code == 404