@@ -1426,3 +1426,72 @@ def test_default_instrumentor_builder_mtls_no_cert_source(
14261426 mock_exporter .call_args .kwargs ["endpoint" ]
14271427 == adk_template ._DEFAULT_TELEMETRY_ENDPOINT
14281428 )
1429+
1430+
1431+ class DummyPydanticCard :
1432+ def model_dump_json (self ):
1433+ return '{"name": "pydantic_card"}'
1434+
1435+
1436+
1437+ class DummyAgentEngine :
1438+ def __init__ (self , card = None , has_card = True ):
1439+ if has_card :
1440+ self .agent_card = card
1441+
1442+ def set_up (self ):
1443+ pass
1444+
1445+ def query (self , query : str ) -> str :
1446+ return query
1447+
1448+
1449+ class TestAgentEngineGenerateClassMethodsSpec :
1450+ """Tests Pydantic, Protobuf, and No Card AgentCard serialization in _generate_class_methods_spec_or_raise."""
1451+
1452+ def test_pydantic_card_serialization (self ):
1453+ agent_engine = DummyAgentEngine (DummyPydanticCard ())
1454+ specs = _agent_engines ._generate_class_methods_spec_or_raise (
1455+ agent_engine = agent_engine ,
1456+ operations = {"standard" : ["query" ]},
1457+ )
1458+ assert len (specs ) == 1
1459+ assert specs [0 ][_agent_engines ._A2A_AGENT_CARD ] == '{"name": "pydantic_card"}'
1460+
1461+ def test_protobuf_card_serialization (self ):
1462+ from google .protobuf import struct_pb2
1463+ card = struct_pb2 .Struct ()
1464+ agent_engine = DummyAgentEngine (card )
1465+ specs = _agent_engines ._generate_class_methods_spec_or_raise (
1466+ agent_engine = agent_engine ,
1467+ operations = {"standard" : ["query" ]},
1468+ )
1469+ assert len (specs ) == 1
1470+ assert specs [0 ][_agent_engines ._A2A_AGENT_CARD ] == "{}"
1471+
1472+ def test_no_card_serialization (self ):
1473+ agent_engine = DummyAgentEngine (has_card = False )
1474+ specs = _agent_engines ._generate_class_methods_spec_or_raise (
1475+ agent_engine = agent_engine ,
1476+ operations = {"standard" : ["query" ]},
1477+ )
1478+ assert len (specs ) == 1
1479+ assert _agent_engines ._A2A_AGENT_CARD not in specs [0 ]
1480+
1481+ def test_none_card_serialization (self ):
1482+ agent_engine = DummyAgentEngine (None )
1483+ specs = _agent_engines ._generate_class_methods_spec_or_raise (
1484+ agent_engine = agent_engine ,
1485+ operations = {"standard" : ["query" ]},
1486+ )
1487+ assert len (specs ) == 1
1488+ assert _agent_engines ._A2A_AGENT_CARD not in specs [0 ]
1489+
1490+ def test_unsupported_card_serialization_raises_type_error (self ):
1491+ agent_engine = DummyAgentEngine ({"unsupported" : "type" })
1492+ with pytest .raises (TypeError ) as excinfo :
1493+ _agent_engines ._generate_class_methods_spec_or_raise (
1494+ agent_engine = agent_engine ,
1495+ operations = {"standard" : ["query" ]},
1496+ )
1497+ assert "Unsupported AgentCard type" in str (excinfo .value )
0 commit comments