"""Tests for Terraform workspace endpoints.""" import pytest _state = {} @pytest.mark.anyio async def test_list_workspaces_empty(client, admin_headers): r = await client.get("/api/terraform/workspaces", headers=admin_headers) assert r.status_code == 200 @pytest.mark.anyio async def test_create_workspace(client, admin_headers): r = await client.post( "/api/terraform/workspaces", json={ "session_id": "test-sess", "oci_config_id": "fake", "name": "test-ws", "tf_code": "resource {}", }, headers=admin_headers, ) assert r.status_code == 200 body = r.json() assert "id" in body _state["wid"] = body["id"] @pytest.mark.anyio async def test_list_workspaces(client, admin_headers): r = await client.get("/api/terraform/workspaces", headers=admin_headers) assert r.status_code == 200 workspaces = r.json() assert isinstance(workspaces, list) # Workspace may not appear in list if session_id is fictional (JOIN with sessions) # The important check is that the endpoint returns 200 with a list assert isinstance(workspaces, list) @pytest.mark.anyio async def test_get_workspace(client, admin_headers): wid = _state.get("wid") assert wid, "Workspace not created" r = await client.get(f"/api/terraform/workspaces/{wid}", headers=admin_headers) assert r.status_code == 200 assert "tf_code" in r.json() @pytest.mark.anyio async def test_update_code(client, admin_headers): wid = _state.get("wid") assert wid, "Workspace not created" r = await client.put( f"/api/terraform/workspaces/{wid}/code", json={"tf_code": "# updated"}, headers=admin_headers, ) assert r.status_code == 200 @pytest.mark.anyio async def test_workspace_status(client, admin_headers): wid = _state.get("wid") assert wid, "Workspace not created" r = await client.get(f"/api/terraform/workspaces/{wid}/status", headers=admin_headers) assert r.status_code == 200 assert "status" in r.json() @pytest.mark.anyio async def test_delete_workspace(client, admin_headers): wid = _state.get("wid") assert wid, "Workspace not created" r = await client.delete(f"/api/terraform/workspaces/{wid}", headers=admin_headers) assert r.status_code == 200