diff --git a/mcpgateway/main.py b/mcpgateway/main.py index ef1f5e1b7..d0a7c84ed 100644 --- a/mcpgateway/main.py +++ b/mcpgateway/main.py @@ -1966,6 +1966,7 @@ async def delete_server(server_id: str, db: Session = Depends(get_db), user=Depe try: logger.debug(f"User {user} is deleting server with ID {server_id}") user_email = user.get("email") if isinstance(user, dict) else str(user) + await server_service.get_server(db, server_id) await server_service.delete_server(db, server_id, user_email=user_email) return { "status": "success", diff --git a/tests/unit/mcpgateway/test_main.py b/tests/unit/mcpgateway/test_main.py index 675d1e122..78bd65de4 100644 --- a/tests/unit/mcpgateway/test_main.py +++ b/tests/unit/mcpgateway/test_main.py @@ -520,13 +520,25 @@ def test_toggle_server_status(self, mock_toggle, test_client, auth_headers): mock_toggle.assert_called_once() @patch("mcpgateway.main.server_service.delete_server") - def test_delete_server_endpoint(self, mock_delete, test_client, auth_headers): + @patch("mcpgateway.main.server_service.get_server") + def test_delete_server_endpoint(self, mock_get, mock_delete, test_client, auth_headers): """Test permanently deleting a server.""" + mock_get.return_value = ServerRead(**MOCK_SERVER_READ) mock_delete.return_value = None response = test_client.delete("/servers/1", headers=auth_headers) assert response.status_code == 200 assert response.json()["status"] == "success" + @patch("mcpgateway.main.server_service.get_server") + def test_delete_server_not_found(self, mock_get, test_client, auth_headers): + """Test deleting a non-existent server returns 404.""" + from mcpgateway.services.server_service import ServerNotFoundError + + mock_get.side_effect = ServerNotFoundError("Server not found: nonexistent-id") + response = test_client.delete("/servers/nonexistent-id", headers=auth_headers) + assert response.status_code == 404 + assert "Server not found" in response.json()["detail"] + @patch("mcpgateway.main.tool_service.list_server_tools") def test_server_get_tools(self, mock_list_tools, test_client, auth_headers): """Test listing tools associated with a server."""