66from a2a .client import ClientConfig , ClientFactory
77from a2a .client .transports import JsonRpcTransport , RestTransport
88from a2a .types import (
9- AgentCard ,
109 AgentCapabilities ,
10+ AgentCard ,
1111 AgentInterface ,
1212 TransportProtocol ,
1313)
1717def base_agent_card () -> AgentCard :
1818 """Provides a base AgentCard for tests."""
1919 return AgentCard (
20- name = " Test Agent" ,
21- description = " An agent for testing." ,
22- url = " http://primary-url.com" ,
23- version = " 1.0.0" ,
20+ name = ' Test Agent' ,
21+ description = ' An agent for testing.' ,
22+ url = ' http://primary-url.com' ,
23+ version = ' 1.0.0' ,
2424 capabilities = AgentCapabilities (),
2525 skills = [],
2626 default_input_modes = [],
@@ -33,53 +33,65 @@ def test_client_factory_selects_preferred_transport(base_agent_card: AgentCard):
3333 """Verify that the factory selects the preferred transport by default."""
3434 config = ClientConfig (
3535 httpx_client = httpx .AsyncClient (),
36- supported_transports = [TransportProtocol .jsonrpc , TransportProtocol .http_json ],
36+ supported_transports = [
37+ TransportProtocol .jsonrpc ,
38+ TransportProtocol .http_json ,
39+ ],
3740 )
3841 factory = ClientFactory (config )
3942 client = factory .create (base_agent_card )
4043
4144 assert isinstance (client ._transport , JsonRpcTransport )
42- assert client ._transport .url == " http://primary-url.com"
45+ assert client ._transport .url == ' http://primary-url.com'
4346
4447
45- def test_client_factory_selects_secondary_transport_url (base_agent_card : AgentCard ):
48+ def test_client_factory_selects_secondary_transport_url (
49+ base_agent_card : AgentCard ,
50+ ):
4651 """Verify that the factory selects the correct URL for a secondary transport."""
4752 base_agent_card .additional_interfaces = [
4853 AgentInterface (
49- transport = TransportProtocol .http_json , url = "http://secondary-url.com"
54+ transport = TransportProtocol .http_json ,
55+ url = 'http://secondary-url.com' ,
5056 )
5157 ]
5258 # Client prefers REST, which is available as a secondary transport
5359 config = ClientConfig (
5460 httpx_client = httpx .AsyncClient (),
55- supported_transports = [TransportProtocol .http_json , TransportProtocol .jsonrpc ],
61+ supported_transports = [
62+ TransportProtocol .http_json ,
63+ TransportProtocol .jsonrpc ,
64+ ],
5665 use_client_preference = True ,
5766 )
5867 factory = ClientFactory (config )
5968 client = factory .create (base_agent_card )
6069
6170 assert isinstance (client ._transport , RestTransport )
62- assert client ._transport .url == " http://secondary-url.com"
71+ assert client ._transport .url == ' http://secondary-url.com'
6372
6473
6574def test_client_factory_server_preference (base_agent_card : AgentCard ):
6675 """Verify that the factory respects server transport preference."""
6776 base_agent_card .preferred_transport = TransportProtocol .http_json
6877 base_agent_card .additional_interfaces = [
6978 AgentInterface (
70- transport = TransportProtocol .jsonrpc , url = " http://secondary-url.com"
79+ transport = TransportProtocol .jsonrpc , url = ' http://secondary-url.com'
7180 )
7281 ]
7382 # Client supports both, but server prefers REST
7483 config = ClientConfig (
7584 httpx_client = httpx .AsyncClient (),
76- supported_transports = [TransportProtocol .jsonrpc , TransportProtocol .http_json ],
85+ supported_transports = [
86+ TransportProtocol .jsonrpc ,
87+ TransportProtocol .http_json ,
88+ ],
7789 )
7890 factory = ClientFactory (config )
7991 client = factory .create (base_agent_card )
8092
8193 assert isinstance (client ._transport , RestTransport )
82- assert client ._transport .url == " http://primary-url.com"
94+ assert client ._transport .url == ' http://primary-url.com'
8395
8496
8597def test_client_factory_no_compatible_transport (base_agent_card : AgentCard ):
@@ -89,5 +101,5 @@ def test_client_factory_no_compatible_transport(base_agent_card: AgentCard):
89101 supported_transports = [TransportProtocol .grpc ],
90102 )
91103 factory = ClientFactory (config )
92- with pytest .raises (ValueError , match = " no compatible transports found" ):
104+ with pytest .raises (ValueError , match = ' no compatible transports found' ):
93105 factory .create (base_agent_card )
0 commit comments