import unittest from fastapi.testclient import TestClient from server.app import app import server.app as server_app class ServerApiTests(unittest.TestCase): def setUp(self): server_app.runtime_session = None self.client = TestClient(app) def test_health(self): response = self.client.get("/health") self.assertEqual(response.status_code, 200) self.assertEqual(response.json().get("status"), "ok") def test_reset_state_step_flow(self): reset_response = self.client.post("/reset", json={}) self.assertEqual(reset_response.status_code, 200) reset_payload = reset_response.json() self.assertIn("observation", reset_payload) self.assertIn("step_count", reset_payload) self.assertEqual(reset_payload["step_count"], 0) state_response = self.client.get("/state") self.assertEqual(state_response.status_code, 200) state_payload = state_response.json() self.assertTrue(state_payload.get("initialized")) step_response = self.client.post( "/step", json={"action": "edit_config: replace npm tset with npm test"}, ) self.assertEqual(step_response.status_code, 200) step_payload = step_response.json() self.assertIn("reward", step_payload) self.assertIn("done", step_payload) def test_step_requires_reset(self): server_app.runtime_session = None client = TestClient(app) response = client.post("/step", json={"action": "read_logs: inspect logs"}) self.assertEqual(response.status_code, 400) if __name__ == "__main__": unittest.main()