Skip to content

Commit b7a1ad0

Browse files
committed
fix: get_agent_card tailing slash when A2ACardResolver agent_card_path="" (#799)
1 parent 697ab8e commit b7a1ad0

2 files changed

Lines changed: 23 additions & 2 deletions

File tree

src/a2a/client/card_resolver.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,9 @@ async def get_agent_card(
7474
else:
7575
path_segment = relative_card_path.lstrip('/')
7676

77-
target_url = f'{self.base_url}/{path_segment}'
77+
target_url = self.base_url
78+
if path_segment:
79+
target_url = f'{target_url}/{path_segment}'
7880

7981
try:
8082
response = await self.httpx_client.get(

tests/client/test_card_resolver.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,26 @@ async def test_get_agent_card_root_path(
213213
AgentCard, 'model_validate', return_value=Mock(spec=AgentCard)
214214
):
215215
await resolver.get_agent_card(relative_card_path='/')
216-
mock_httpx_client.get.assert_called_once_with(f'{base_url}/')
216+
mock_httpx_client.get.assert_called_once_with(f'{base_url}')
217+
218+
@pytest.mark.asyncio
219+
async def test_get_agent_card_with_empty_resolver_agent_card_path(
220+
self,
221+
base_url,
222+
resolver,
223+
mock_httpx_client,
224+
mock_response,
225+
valid_agent_card_data,
226+
):
227+
"""Test fetching agent card with an empty relative_card_path."""
228+
resolver.agent_card_path = ''
229+
mock_response.json.return_value = valid_agent_card_data
230+
mock_httpx_client.get.return_value = mock_response
231+
with patch.object(
232+
AgentCard, 'model_validate', return_value=Mock(spec=AgentCard)
233+
):
234+
await resolver.get_agent_card()
235+
mock_httpx_client.get.assert_called_once_with(f'{base_url}')
217236

218237
@pytest.mark.asyncio
219238
async def test_get_agent_card_http_status_error(

0 commit comments

Comments
 (0)