81 lines
2.6 KiB
Python
81 lines
2.6 KiB
Python
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
|