@@ -38,7 +38,7 @@ def no_project_id_settings(mock_settings_instance):
3838@pytest .mark .asyncio
3939async def test_list_tools_returns_tools (mock_settings_instance ):
4040 with HttpMockFramework () as mock :
41- mock .load_mock_data (r"/v0 /projects/[^/]+/ai/tools$" , "ai_tools/list_tools.json" )
41+ mock .load_mock_data (r"/v1 /projects/[^/]+/ai/tools$" , "ai_tools/list_tools.json" )
4242 result = await list_tools ()
4343 assert bool (result )
4444 assert len (result .tools ) == 3
@@ -51,7 +51,7 @@ async def test_list_tools_returns_tools(mock_settings_instance):
5151@pytest .mark .asyncio
5252async def test_list_tools_returns_input_schema (mock_settings_instance ):
5353 with HttpMockFramework () as mock :
54- mock .load_mock_data (r"/v0 /projects/[^/]+/ai/tools$" , "ai_tools/list_tools.json" )
54+ mock .load_mock_data (r"/v1 /projects/[^/]+/ai/tools$" , "ai_tools/list_tools.json" )
5555 result = await list_tools ()
5656 run_sql = next (t for t in result .tools if t .name == "runSql" )
5757 assert run_sql .input_schema ["type" ] == "object"
@@ -61,7 +61,7 @@ async def test_list_tools_returns_input_schema(mock_settings_instance):
6161@pytest .mark .asyncio
6262async def test_list_tools_empty_registry (mock_settings_instance ):
6363 with HttpMockFramework () as mock :
64- mock .add_mock_response (r"/v0 /projects/[^/]+/ai/tools$" , {"tools" : []})
64+ mock .add_mock_response (r"/v1 /projects/[^/]+/ai/tools$" , {"tools" : []})
6565 result = await list_tools ()
6666 assert result .tools == []
6767 assert bool (result )
@@ -73,7 +73,7 @@ async def test_list_tools_empty_registry(mock_settings_instance):
7373async def test_invoke_tool_success (mock_settings_instance ):
7474 with HttpMockFramework () as mock :
7575 mock .load_mock_data (
76- r"/v0 /projects/[^/]+/ai/tools/runSql:invoke$" ,
76+ r"/v1 /projects/[^/]+/ai/tools/runSql:invoke$" ,
7777 "ai_tools/invoke_result.json" ,
7878 )
7979 result = await invoke_tool ("runSql" , {"sqlText" : "SELECT 1" })
@@ -86,7 +86,7 @@ async def test_invoke_tool_success(mock_settings_instance):
8686async def test_invoke_tool_error_response (mock_settings_instance ):
8787 with HttpMockFramework () as mock :
8888 mock .load_mock_data (
89- r"/v0 /projects/[^/]+/ai/tools/unknownTool:invoke$" ,
89+ r"/v1 /projects/[^/]+/ai/tools/unknownTool:invoke$" ,
9090 "ai_tools/invoke_error.json" ,
9191 )
9292 result = await invoke_tool ("unknownTool" , {})
@@ -162,7 +162,7 @@ async def test_list_tools_http_error(mock_settings_instance):
162162 """list_tools should return a response with error set on HTTP 4xx/5xx."""
163163 with HttpMockFramework () as mock :
164164 mock .add_mock_response (
165- r"/v0 /projects/[^/]+/ai/tools$" ,
165+ r"/v1 /projects/[^/]+/ai/tools$" ,
166166 {"error" : "Unauthorized" },
167167 status = 401 ,
168168 )
@@ -177,7 +177,7 @@ async def test_invoke_tool_http_error(mock_settings_instance):
177177 """invoke_tool should return a response with error set on HTTP 500."""
178178 with HttpMockFramework () as mock :
179179 mock .add_mock_response (
180- r"/v0 /projects/[^/]+/ai/tools/runSql:invoke$" ,
180+ r"/v1 /projects/[^/]+/ai/tools/runSql:invoke$" ,
181181 {"error" : "Internal Server Error" },
182182 status = 500 ,
183183 )
@@ -193,27 +193,27 @@ async def test_invoke_tool_url_encodes_name(mock_settings_instance):
193193 with HttpMockFramework () as mock :
194194 # The encoded name "my%2Ftool" should appear in the URL
195195 mock .add_mock_response (
196- r"/v0 /projects/[^/]+/ai/tools/my%2Ftool:invoke$" ,
196+ r"/v1 /projects/[^/]+/ai/tools/my%2Ftool:invoke$" ,
197197 {"result" : "ok" , "error" : None },
198198 )
199199 result = await invoke_tool ("my/tool" , {})
200200 assert result .result == "ok"
201201
202202
203203@pytest .mark .asyncio
204- async def test_list_tools_uses_api_v3_without_project_id (no_project_id_settings ):
204+ async def test_list_tools_uses_api_v4_without_project_id (no_project_id_settings ):
205205 with HttpMockFramework () as mock :
206- mock .load_mock_data (r"/api/v3 /ai/tools$" , "ai_tools/list_tools.json" )
206+ mock .load_mock_data (r"/api/v4 /ai/tools$" , "ai_tools/list_tools.json" )
207207 result = await list_tools ()
208208 assert bool (result )
209209 assert len (result .tools ) == 3
210210
211211
212212@pytest .mark .asyncio
213- async def test_invoke_tool_uses_api_v3_without_project_id (no_project_id_settings ):
213+ async def test_invoke_tool_uses_api_v4_without_project_id (no_project_id_settings ):
214214 with HttpMockFramework () as mock :
215215 mock .load_mock_data (
216- r"/api/v3 /ai/tools/runSql:invoke$" ,
216+ r"/api/v4 /ai/tools/runSql:invoke$" ,
217217 "ai_tools/invoke_result.json" ,
218218 )
219219 result = await invoke_tool ("runSql" , {"sqlText" : "SELECT 1" })
0 commit comments