@@ -1212,6 +1212,7 @@ async def test_get_authenticated_extended_card_success(self) -> None:
12121212 self .mock_agent_card ,
12131213 mock_request_handler ,
12141214 extended_agent_card = mock_extended_card ,
1215+ extended_card_modifier = None ,
12151216 )
12161217 request = GetAuthenticatedExtendedCardRequest (id = 'ext-card-req-1' )
12171218 call_context = ServerCallContext (state = {'foo' : 'bar' })
@@ -1233,7 +1234,10 @@ async def test_get_authenticated_extended_card_not_configured(self) -> None:
12331234 # Arrange
12341235 mock_request_handler = AsyncMock (spec = DefaultRequestHandler )
12351236 handler = JSONRPCHandler (
1236- self .mock_agent_card , mock_request_handler , extended_agent_card = None
1237+ self .mock_agent_card ,
1238+ mock_request_handler ,
1239+ extended_agent_card = None ,
1240+ extended_card_modifier = None ,
12371241 )
12381242 request = GetAuthenticatedExtendedCardRequest (id = 'ext-card-req-2' )
12391243 call_context = ServerCallContext (state = {'foo' : 'bar' })
@@ -1249,3 +1253,50 @@ async def test_get_authenticated_extended_card_not_configured(self) -> None:
12491253 self .assertIsInstance (
12501254 response .root .error , AuthenticatedExtendedCardNotConfiguredError
12511255 )
1256+
1257+ async def test_get_authenticated_extended_card_with_modifier (self ) -> None :
1258+ """Test successful retrieval of a dynamically modified extended agent card."""
1259+ # Arrange
1260+ mock_request_handler = AsyncMock (spec = DefaultRequestHandler )
1261+ mock_base_card = AgentCard (
1262+ name = 'Base Card' ,
1263+ description = 'Base details' ,
1264+ url = 'http://agent.example.com/api' ,
1265+ version = '1.0' ,
1266+ capabilities = AgentCapabilities (),
1267+ default_input_modes = ['text/plain' ],
1268+ default_output_modes = ['application/json' ],
1269+ skills = [],
1270+ )
1271+
1272+ def modifier (card : AgentCard , context : ServerCallContext ) -> AgentCard :
1273+ modified_card = card .model_copy (deep = True )
1274+ modified_card .name = 'Modified Card'
1275+ modified_card .description = (
1276+ f'Modified for context: { context .state .get ("foo" )} '
1277+ )
1278+ return modified_card
1279+
1280+ handler = JSONRPCHandler (
1281+ self .mock_agent_card ,
1282+ mock_request_handler ,
1283+ extended_agent_card = mock_base_card ,
1284+ extended_card_modifier = modifier ,
1285+ )
1286+ request = GetAuthenticatedExtendedCardRequest (id = 'ext-card-req-mod' )
1287+ call_context = ServerCallContext (state = {'foo' : 'bar' })
1288+
1289+ # Act
1290+ response : GetAuthenticatedExtendedCardResponse = (
1291+ await handler .get_authenticated_extended_card (request , call_context )
1292+ )
1293+
1294+ # Assert
1295+ self .assertIsInstance (
1296+ response .root , GetAuthenticatedExtendedCardSuccessResponse
1297+ )
1298+ self .assertEqual (response .root .id , 'ext-card-req-mod' )
1299+ modified_card = response .root .result
1300+ self .assertEqual (modified_card .name , 'Modified Card' )
1301+ self .assertEqual (modified_card .description , 'Modified for context: bar' )
1302+ self .assertEqual (modified_card .version , '1.0' )
0 commit comments