@@ -2898,3 +2898,125 @@ def fake_unregister(task_id):
28982898 assert any ("memory_search" in s and "<MEM_FAILED>" in s for s in out )
28992899 assert "data: fb1\n \n " in out
29002900 assert called ["unregistered" ]
2901+
2902+
2903+ @pytest .mark .asyncio
2904+ async def test_list_all_agent_info_impl_with_disabled_agents ():
2905+ """
2906+ Test list_all_agent_info_impl with disabled agents.
2907+
2908+ This test verifies that:
2909+ 1. Agents with enabled=False are skipped and not included in the result
2910+ 2. Only enabled agents are processed and returned
2911+ """
2912+ # Setup mock agents with mixed enabled/disabled states
2913+ mock_agents = [
2914+ {
2915+ "agent_id" : 1 ,
2916+ "name" : "Enabled Agent 1" ,
2917+ "display_name" : "Display Enabled Agent 1" ,
2918+ "description" : "First enabled agent" ,
2919+ "enabled" : True
2920+ },
2921+ {
2922+ "agent_id" : 2 ,
2923+ "name" : "Disabled Agent" ,
2924+ "display_name" : "Display Disabled Agent" ,
2925+ "description" : "Disabled agent that should be skipped" ,
2926+ "enabled" : False
2927+ },
2928+ {
2929+ "agent_id" : 3 ,
2930+ "name" : "Enabled Agent 2" ,
2931+ "display_name" : "Display Enabled Agent 2" ,
2932+ "description" : "Second enabled agent" ,
2933+ "enabled" : True
2934+ }
2935+ ]
2936+
2937+ # Setup mock tools
2938+ mock_tools = [
2939+ {"tool_id" : 101 , "name" : "Tool 1" },
2940+ {"tool_id" : 102 , "name" : "Tool 2" }
2941+ ]
2942+
2943+ with patch ('backend.services.agent_service.query_all_agent_info_by_tenant_id' ) as mock_query_agents , \
2944+ patch ('backend.services.agent_service.search_tools_for_sub_agent' ) as mock_search_tools , \
2945+ patch ('backend.services.agent_service.check_tool_is_available' ) as mock_check_tools :
2946+ # Configure mocks
2947+ mock_query_agents .return_value = mock_agents
2948+ mock_search_tools .return_value = mock_tools
2949+ mock_check_tools .return_value = [True , True ] # All tools are available
2950+
2951+ # Execute
2952+ result = await list_all_agent_info_impl (tenant_id = "test_tenant" )
2953+
2954+ # Assert - only enabled agents should be in the result
2955+ assert len (result ) == 2
2956+ assert result [0 ]["agent_id" ] == 1
2957+ assert result [0 ]["name" ] == "Enabled Agent 1"
2958+ assert result [0 ]["display_name" ] == "Display Enabled Agent 1"
2959+ assert result [0 ]["is_available" ] == True
2960+
2961+ assert result [1 ]["agent_id" ] == 3
2962+ assert result [1 ]["name" ] == "Enabled Agent 2"
2963+ assert result [1 ]["display_name" ] == "Display Enabled Agent 2"
2964+ assert result [1 ]["is_available" ] == True
2965+
2966+ # Verify mock calls
2967+ mock_query_agents .assert_called_once_with (tenant_id = "test_tenant" )
2968+ # search_tools_for_sub_agent should only be called for enabled agents (2 calls, not 3)
2969+ assert mock_search_tools .call_count == 2
2970+ mock_search_tools .assert_has_calls ([
2971+ call (agent_id = 1 , tenant_id = "test_tenant" ),
2972+ call (agent_id = 3 , tenant_id = "test_tenant" )
2973+ ])
2974+ # check_tool_is_available should only be called for enabled agents (2 calls, not 3)
2975+ assert mock_check_tools .call_count == 2
2976+
2977+
2978+ @pytest .mark .asyncio
2979+ async def test_list_all_agent_info_impl_all_disabled_agents ():
2980+ """
2981+ Test list_all_agent_info_impl with all agents disabled.
2982+
2983+ This test verifies that:
2984+ 1. When all agents are disabled, an empty list is returned
2985+ 2. No tool queries are made since no agents are processed
2986+ """
2987+ # Setup mock agents - all disabled
2988+ mock_agents = [
2989+ {
2990+ "agent_id" : 1 ,
2991+ "name" : "Disabled Agent 1" ,
2992+ "display_name" : "Display Disabled Agent 1" ,
2993+ "description" : "First disabled agent" ,
2994+ "enabled" : False
2995+ },
2996+ {
2997+ "agent_id" : 2 ,
2998+ "name" : "Disabled Agent 2" ,
2999+ "display_name" : "Display Disabled Agent 2" ,
3000+ "description" : "Second disabled agent" ,
3001+ "enabled" : False
3002+ }
3003+ ]
3004+
3005+ with patch ('backend.services.agent_service.query_all_agent_info_by_tenant_id' ) as mock_query_agents , \
3006+ patch ('backend.services.agent_service.search_tools_for_sub_agent' ) as mock_search_tools , \
3007+ patch ('backend.services.agent_service.check_tool_is_available' ) as mock_check_tools :
3008+ # Configure mocks
3009+ mock_query_agents .return_value = mock_agents
3010+
3011+ # Execute
3012+ result = await list_all_agent_info_impl (tenant_id = "test_tenant" )
3013+
3014+ # Assert - no agents should be in the result
3015+ assert len (result ) == 0
3016+ assert result == []
3017+
3018+ # Verify mock calls
3019+ mock_query_agents .assert_called_once_with (tenant_id = "test_tenant" )
3020+ # No tool queries should be made since no agents are enabled
3021+ mock_search_tools .assert_not_called ()
3022+ mock_check_tools .assert_not_called ()
0 commit comments