From 03d67d7801c63cea41c46095ab4016b1d7c2396f Mon Sep 17 00:00:00 2001 From: Julio Quinteros Pro Date: Sun, 15 Feb 2026 19:44:23 -0300 Subject: [PATCH] fix(test): mock vertexai module in GPT-OSS tests to prevent authentication The test_vertex_ai_gpt_oss_simple_request and test_vertex_ai_gpt_oss_reasoning_effort tests were failing in CI with 401 authentication errors. This was because the vertexai module import was triggering authentication attempts even though the _ensure_access_token method was mocked. Added patch.dict('sys.modules', ...) to mock the vertexai module entirely, preventing it from trying to authenticate when imported. This ensures tests are fully isolated and don't attempt real API calls regardless of environment variables or test execution order. This follows the same pattern used in other Vertex AI tests and works in combination with the autouse fixture that clears environment variables. Co-Authored-By: Claude Sonnet 4.5 --- .../test_vertex_ai_gpt_oss_transformation.py | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/tests/test_litellm/llms/vertex_ai/vertex_ai_partner_models/gpt_oss/test_vertex_ai_gpt_oss_transformation.py b/tests/test_litellm/llms/vertex_ai/vertex_ai_partner_models/gpt_oss/test_vertex_ai_gpt_oss_transformation.py index df1fe26df8b..ed1944b562e 100644 --- a/tests/test_litellm/llms/vertex_ai/vertex_ai_partner_models/gpt_oss/test_vertex_ai_gpt_oss_transformation.py +++ b/tests/test_litellm/llms/vertex_ai/vertex_ai_partner_models/gpt_oss/test_vertex_ai_gpt_oss_transformation.py @@ -73,7 +73,7 @@ class TestVertexAIGPTOSSTransformation: @pytest.mark.asyncio async def test_vertex_ai_gpt_oss_simple_request(): """ - Test that a simple request to vertex_ai/openai/gpt-oss-20b-maas lands at the correct URL + Test that a simple request to vertex_ai/openai/gpt-oss-20b-maas lands at the correct URL with the correct request body. """ from litellm.llms.custom_httpx.http_handler import AsyncHTTPHandler @@ -106,14 +106,20 @@ async def test_vertex_ai_gpt_oss_simple_request(): "total_tokens": 70 } } - + client = AsyncHTTPHandler() - + async def mock_post_func(*args, **kwargs): return mock_response - + + # Mock vertexai module to prevent import from triggering authentication + mock_vertexai = MagicMock() + mock_vertexai.preview = MagicMock() + mock_vertexai.preview.language_models = MagicMock() + with patch.object(client, "post", side_effect=mock_post_func) as mock_post, \ - patch.object(VertexLLM, "_ensure_access_token", return_value=("fake-token", "pathrise-convert-1606954137718")): + patch.object(VertexLLM, "_ensure_access_token", return_value=("fake-token", "pathrise-convert-1606954137718")), \ + patch.dict('sys.modules', {'vertexai': mock_vertexai, 'vertexai.preview': mock_vertexai.preview}): response = await litellm.acompletion( model="vertex_ai/openai/gpt-oss-20b-maas", messages=[ @@ -122,7 +128,7 @@ async def test_vertex_ai_gpt_oss_simple_request(): "content": "Your name is Litellm Bot, you are a helpful assistant" }, { - "role": "user", + "role": "user", "content": "Hello, what is your name and can you tell me the weather?" } ], @@ -170,7 +176,7 @@ async def test_vertex_ai_gpt_oss_simple_request(): @pytest.mark.asyncio async def test_vertex_ai_gpt_oss_reasoning_effort(): """ - Test that reasoning_effort parameter is correctly passed in the request body + Test that reasoning_effort parameter is correctly passed in the request body for GPT-OSS models. """ from litellm.llms.custom_httpx.http_handler import AsyncHTTPHandler @@ -184,7 +190,7 @@ async def test_vertex_ai_gpt_oss_reasoning_effort(): mock_response.headers = {} mock_response.json.return_value = { "id": "chatcmpl-test456", - "object": "chat.completion", + "object": "chat.completion", "created": 1234567890, "model": "openai/gpt-oss-20b-maas", "choices": [ @@ -203,14 +209,20 @@ async def test_vertex_ai_gpt_oss_reasoning_effort(): "total_tokens": 67 } } - + client = AsyncHTTPHandler() - + async def mock_post_func(*args, **kwargs): return mock_response - + + # Mock vertexai module to prevent import from triggering authentication + mock_vertexai = MagicMock() + mock_vertexai.preview = MagicMock() + mock_vertexai.preview.language_models = MagicMock() + with patch.object(client, "post", side_effect=mock_post_func) as mock_post, \ - patch.object(VertexLLM, "_ensure_access_token", return_value=("fake-token", "pathrise-convert-1606954137718")): + patch.object(VertexLLM, "_ensure_access_token", return_value=("fake-token", "pathrise-convert-1606954137718")), \ + patch.dict('sys.modules', {'vertexai': mock_vertexai, 'vertexai.preview': mock_vertexai.preview}): response = await litellm.acompletion( model="vertex_ai/openai/gpt-oss-20b-maas", messages=[