polyguard-openenv / tests /test_openenv_contract.py
TheJackBright's picture
Deploy PolyGuard OpenEnv Space
877add7 verified
import json
from fastapi.testclient import TestClient
from app.env.fastapi_app import app
def test_health_endpoint_healthy() -> None:
client = TestClient(app)
response = client.get("/health")
assert response.status_code == 200
assert response.json()["status"] == "healthy"
def test_metadata_endpoint_available() -> None:
client = TestClient(app)
response = client.get("/metadata")
assert response.status_code == 200
payload = response.json()
assert payload["name"] == "polyguard-openenv"
assert isinstance(payload["description"], str)
assert payload["reward_range"] == [0.001, 0.999]
def test_schema_and_mcp_endpoints_available() -> None:
client = TestClient(app)
schema = client.get("/schema")
assert schema.status_code == 200
schema_payload = schema.json()
assert "action" in schema_payload
assert "observation" in schema_payload
assert "state" in schema_payload
mcp = client.post("/mcp", json={})
assert mcp.status_code == 200
mcp_payload = mcp.json()
assert mcp_payload["jsonrpc"] == "2.0"
def test_websocket_reset_and_step_roundtrip() -> None:
client = TestClient(app)
with client.websocket_connect("/ws") as ws:
ws.send_text(json.dumps({"type": "reset", "data": {"seed": 7, "difficulty": "easy"}}))
reset_message = ws.receive_json()
assert reset_message["type"] == "result"
assert "observation" in reset_message["data"]
legal = client.get("/env/legal_actions").json()
ws.send_text(json.dumps({"type": "step", "data": legal[0]}))
step_message = ws.receive_json()
assert step_message["type"] == "result"
assert 0.001 <= step_message["data"]["reward"] <= 0.999
assert "done" in step_message["data"]