@@ -318,12 +318,12 @@ def test_validation_requires_auth_credentials(self):
318318 LLMGatewaySettings ()
319319
320320 def test_get_available_models (self , llmgw_env_vars ):
321- """Test get_available_models returns a list of models."""
321+ """Test get_available_models returns a list of models on success ."""
322322 with patch .dict (os .environ , llmgw_env_vars , clear = True ):
323323 settings = LLMGatewaySettings ()
324324
325- # Mock the HTTP request since this is a unit test
326325 mock_response = MagicMock ()
326+ mock_response .is_error = False
327327 mock_response .json .return_value = [
328328 {"modelName" : "gpt-4o" , "vendor" : "openai" },
329329 {"modelName" : "claude-3-opus" , "vendor" : "anthropic" },
@@ -334,6 +334,42 @@ def test_get_available_models(self, llmgw_env_vars):
334334 assert isinstance (models , list )
335335 assert len (models ) == 2
336336
337+ def test_get_available_models_raises_on_http_error (self , llmgw_env_vars ):
338+ """Test get_available_models raises UiPathAPIError on bad request / server error."""
339+ with patch .dict (os .environ , llmgw_env_vars , clear = True ):
340+ settings = LLMGatewaySettings ()
341+
342+ mock_response = MagicMock ()
343+ mock_response .is_error = True
344+ mock_response .status_code = 500
345+ mock_response .reason_phrase = "Internal Server Error"
346+ mock_response .json .return_value = {"error" : "Something went wrong" }
347+ mock_response .request = MagicMock ()
348+ mock_response .text = ""
349+
350+ with patch .object (Client , "get" , return_value = mock_response ):
351+ with pytest .raises (UiPathAPIError ) as exc_info :
352+ settings .get_available_models ()
353+ assert exc_info .value .status_code == 500
354+
355+ def test_get_available_models_raises_on_unauthorized (self , llmgw_env_vars ):
356+ """Test get_available_models raises UiPathAuthenticationError on 401."""
357+ with patch .dict (os .environ , llmgw_env_vars , clear = True ):
358+ settings = LLMGatewaySettings ()
359+
360+ mock_response = MagicMock ()
361+ mock_response .is_error = True
362+ mock_response .status_code = 401
363+ mock_response .reason_phrase = "Unauthorized"
364+ mock_response .json .return_value = {}
365+ mock_response .request = MagicMock ()
366+ mock_response .text = ""
367+
368+ with patch .object (Client , "get" , return_value = mock_response ):
369+ with pytest .raises (UiPathAuthenticationError ) as exc_info :
370+ settings .get_available_models ()
371+ assert exc_info .value .status_code == 401
372+
337373
338374# ============================================================================
339375# Test LLMGateway Auth Refresh Logic
0 commit comments