@@ -483,6 +483,107 @@ async def test_get_list_permission_admin_can_edit_all(self, mock_get, mock_get_u
483483 self .assertEqual (result [0 ]["permission" ], "EDIT" )
484484 self .assertEqual (result [1 ]["permission" ], "EDIT" )
485485
486+ @patch ('backend.services.remote_mcp_service.get_mcp_records_by_tenant' )
487+ async def test_get_list_with_is_need_auth_true (self , mock_get ):
488+ """Test getting server list with is_need_auth=True (default) includes authorization_token"""
489+ mock_get .return_value = [
490+ {
491+ "mcp_name" : "n1" ,
492+ "mcp_server" : "u1" ,
493+ "status" : True ,
494+ "authorization_token" : "token123" ,
495+ "mcp_id" : 1
496+ },
497+ {
498+ "mcp_name" : "n2" ,
499+ "mcp_server" : "u2" ,
500+ "status" : False ,
501+ "authorization_token" : None ,
502+ "mcp_id" : 2
503+ }
504+ ]
505+
506+ result = await get_remote_mcp_server_list ('tid' , is_need_auth = True )
507+
508+ self .assertEqual (len (result ), 2 )
509+ self .assertIn ("authorization_token" , result [0 ])
510+ self .assertEqual (result [0 ]["authorization_token" ], "token123" )
511+ self .assertIn ("authorization_token" , result [1 ])
512+ self .assertIsNone (result [1 ]["authorization_token" ])
513+
514+ @patch ('backend.services.remote_mcp_service.get_mcp_records_by_tenant' )
515+ async def test_get_list_with_is_need_auth_false (self , mock_get ):
516+ """Test getting server list with is_need_auth=False excludes authorization_token"""
517+ mock_get .return_value = [
518+ {
519+ "mcp_name" : "n1" ,
520+ "mcp_server" : "u1" ,
521+ "status" : True ,
522+ "authorization_token" : "token123" ,
523+ "mcp_id" : 1
524+ },
525+ {
526+ "mcp_name" : "n2" ,
527+ "mcp_server" : "u2" ,
528+ "status" : False ,
529+ "authorization_token" : "token456" ,
530+ "mcp_id" : 2
531+ }
532+ ]
533+
534+ result = await get_remote_mcp_server_list ('tid' , is_need_auth = False )
535+
536+ self .assertEqual (len (result ), 2 )
537+ self .assertNotIn ("authorization_token" , result [0 ])
538+ self .assertNotIn ("authorization_token" , result [1 ])
539+ # Verify other fields are still present
540+ self .assertEqual (result [0 ]["remote_mcp_server_name" ], "n1" )
541+ self .assertEqual (result [0 ]["mcp_id" ], 1 )
542+ self .assertEqual (result [1 ]["remote_mcp_server_name" ], "n2" )
543+ self .assertEqual (result [1 ]["mcp_id" ], 2 )
544+
545+ @patch ('backend.services.remote_mcp_service.get_mcp_records_by_tenant' )
546+ async def test_get_list_default_is_need_auth_true (self , mock_get ):
547+ """Test that default behavior (is_need_auth not specified) includes authorization_token"""
548+ mock_get .return_value = [
549+ {
550+ "mcp_name" : "n1" ,
551+ "mcp_server" : "u1" ,
552+ "status" : True ,
553+ "authorization_token" : "token123" ,
554+ "mcp_id" : 1
555+ }
556+ ]
557+
558+ result = await get_remote_mcp_server_list ('tid' )
559+
560+ self .assertEqual (len (result ), 1 )
561+ self .assertIn ("authorization_token" , result [0 ])
562+ self .assertEqual (result [0 ]["authorization_token" ], "token123" )
563+
564+ @patch ('backend.services.remote_mcp_service.get_user_tenant_by_user_id' )
565+ @patch ('backend.services.remote_mcp_service.get_mcp_records_by_tenant' )
566+ async def test_get_list_with_user_id_and_is_need_auth_false (self , mock_get , mock_get_user_tenant ):
567+ """Test getting server list with user_id and is_need_auth=False"""
568+ mock_get_user_tenant .return_value = {"user_role" : "USER" }
569+ mock_get .return_value = [
570+ {
571+ "mcp_name" : "n1" ,
572+ "mcp_server" : "u1" ,
573+ "status" : True ,
574+ "created_by" : "user123" ,
575+ "authorization_token" : "token123" ,
576+ "mcp_id" : 1
577+ }
578+ ]
579+
580+ result = await get_remote_mcp_server_list ('tid' , user_id = "user123" , is_need_auth = False )
581+
582+ self .assertEqual (len (result ), 1 )
583+ self .assertNotIn ("authorization_token" , result [0 ])
584+ self .assertEqual (result [0 ]["permission" ], "EDIT" )
585+ self .assertEqual (result [0 ]["mcp_id" ], 1 )
586+
486587
487588class TestCheckMcpHealthAndUpdateDb (unittest .IsolatedAsyncioTestCase ):
488589 """Test check_mcp_health_and_update_db"""
0 commit comments