1+ import pytest
12from fastapi .testclient import TestClient
23from cockroachdb_mcp_server .main import app
34
45client = TestClient (app )
56
7+ @pytest .fixture (autouse = True )
8+ def mock_db_engine (mocker ):
9+ mock_engine = mocker .MagicMock ()
10+ mock_conn = mocker .MagicMock ()
11+ mock_engine .connect .return_value .__enter__ .return_value = mock_conn
12+
13+ # Patch get_sqlalchemy_engine to return mock
14+ mocker .patch ("cockroachdb_mcp_server.routes.debug.get_sqlalchemy_engine" , return_value = mock_engine )
15+
16+ # Setup mock responses
17+ mock_conn .execute .side_effect = lambda query : {
18+ "SELECT version();" : [("CockroachDB 25.2.0" ,)],
19+ "SELECT current_database();" : [("defaultdb" ,)],
20+ "SELECT table_name FROM information_schema.tables ..." : [("mcp_contexts" ,)],
21+ "SELECT 1" : [(1 ,)],
22+ }.get (str (query ).strip (), [])
23+
624def test_debug_info ():
7- response = client .get ("/debug/info" )
8- assert response .status_code == 200
9- assert "database" in response .json ()
25+ res = client .get ("/debug/info" )
26+ assert res .status_code == 200
27+ assert "database" in res .json ()
28+ assert "version" in res .json ()
1029
1130def test_debug_tables ():
12- response = client .get ("/debug/tables" )
13- assert response .status_code == 200
14- assert "tables" in response .json ()
31+ res = client .get ("/debug/tables" )
32+ assert res .status_code == 200
33+ assert "tables" in res .json ()
1534
1635def test_debug_sql_valid ():
17- response = client .post ("/debug/sql" , json = {"query" : "SELECT 1" })
18- assert response .status_code == 200
19- assert isinstance (response .json (), list )
36+ res = client .post ("/debug/sql" , json = {"query" : "SELECT 1" })
37+ assert res .status_code == 200
38+ assert isinstance (res .json (), list )
2039
2140def test_debug_sql_invalid ():
22- response = client .post ("/debug/sql" , json = {"query" : "DROP TABLE mcp_contexts" })
23- assert "error" in response .json ()
41+ res = client .post ("/debug/sql" , json = {"query" : "DROP TABLE mcp_contexts" })
42+ assert res .status_code == 200
43+ assert "error" in res .json ()
0 commit comments