| from __future__ import annotations |
|
|
| import unittest |
|
|
| from app import app as deployed_app |
| from server.app import ( |
| StepRequest, |
| app, |
| health, |
| metadata, |
| reset, |
| schema, |
| state, |
| step, |
| ) |
|
|
|
|
| class ServerApiTest(unittest.TestCase): |
| def test_deployment_entrypoint_exposes_openenv_routes(self) -> None: |
| route_paths = {route.path for route in deployed_app.routes} |
| self.assertIn("/reset", route_paths) |
| self.assertIn("/step", route_paths) |
| self.assertIn("/state", route_paths) |
| self.assertIn("/health", route_paths) |
| self.assertIn("/metadata", route_paths) |
| self.assertIn("/schema", route_paths) |
|
|
| def test_required_routes_are_registered(self) -> None: |
| route_paths = {route.path for route in app.routes} |
| self.assertIn("/health", route_paths) |
| self.assertIn("/metadata", route_paths) |
| self.assertIn("/schema", route_paths) |
| self.assertIn("/reset", route_paths) |
| self.assertIn("/step", route_paths) |
| self.assertIn("/state", route_paths) |
| self.assertIn("/ws", route_paths) |
|
|
| def test_handlers_return_openenv_shaped_payloads(self) -> None: |
| self.assertEqual(health().status, "healthy") |
| self.assertEqual(metadata().name, "support-ops-env") |
| self.assertIn("action_type", schema().action["properties"]) |
|
|
| reset_response = reset() |
| self.assertEqual(reset_response.observation["task_id"], "easy_account_takeover") |
| self.assertFalse(reset_response.done) |
|
|
| state_response = state() |
| self.assertEqual(state_response["task_id"], "easy_account_takeover") |
| self.assertIn("episode_id", state_response) |
|
|
| step_response = step(StepRequest(action={"action_type": "inspect_ticket", "target": "T1"})) |
| self.assertIn("observation", step_response.model_dump()) |
| self.assertIsInstance(step_response.reward, float) |
|
|
|
|
| if __name__ == "__main__": |
| unittest.main() |
|
|