Skip to content

Commit a284881

Browse files
committed
Fix broken tests
Change-Id: Ic80b6b09865bdac98e44d3de7bae1d65505b4cc4
1 parent 11e6afa commit a284881

File tree

1 file changed

+30
-26
lines changed

1 file changed

+30
-26
lines changed

tests/server/request_handlers/test_jsonrpc_handler.py

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import unittest
2-
from unittest.mock import AsyncMock, patch
2+
import unittest.async_case
3+
from unittest.mock import AsyncMock, patch, MagicMock
34
import pytest
45
from a2a.server.events.event_queue import EventQueue
56
from a2a.server.agent_execution import AgentExecutor
@@ -13,6 +14,8 @@
1314
)
1415
from a2a.server.tasks import TaskStore
1516
from a2a.types import (
17+
AgentCard,
18+
AgentCapabilities,
1619
GetTaskRequest,
1720
GetTaskResponse,
1821
GetTaskSuccessResponse,
@@ -23,7 +26,6 @@
2326
TaskIdParams,
2427
CancelTaskRequest,
2528
CancelTaskSuccessResponse,
26-
A2AError,
2729
UnsupportedOperationError,
2830
SendMessageRequest,
2931
Message,
@@ -42,7 +44,6 @@
4244
)
4345
from collections.abc import AsyncGenerator
4446
from typing import Any
45-
import asyncio
4647

4748
MINIMAL_TASK: dict[str, Any] = {
4849
'id': 'task_123',
@@ -57,19 +58,20 @@
5758
}
5859

5960

60-
@pytest.fixture
61-
def mock_event_queue():
62-
return AsyncMock(spec=EventQueue)
63-
61+
class TestJSONRPCtHandler(unittest.async_case.IsolatedAsyncioTestCase):
62+
@pytest.fixture(autouse=True)
63+
def init_fixtures(self) -> None:
64+
self.mock_agent_card = MagicMock(
65+
spec=AgentCard, url='http://agent.example.com/api'
66+
)
6467

65-
class TestJSONRPCtHandler(unittest.IsolatedAsyncioTestCase):
6668
async def test_on_get_task_success(self) -> None:
6769
mock_agent_executor = AsyncMock(spec=AgentExecutor)
6870
mock_task_store = AsyncMock(spec=TaskStore)
6971
request_handler = DefaultRequestHandler(
7072
mock_agent_executor, mock_task_store
7173
)
72-
handler = JSONRPCHandler(None, request_handler)
74+
handler = JSONRPCHandler(self.mock_agent_card, request_handler)
7375
task_id = 'test_task_id'
7476
mock_task = Task(**MINIMAL_TASK)
7577
mock_task_store.get.return_value = mock_task
@@ -85,7 +87,7 @@ async def test_on_get_task_not_found(self) -> None:
8587
request_handler = DefaultRequestHandler(
8688
mock_agent_executor, mock_task_store
8789
)
88-
handler = JSONRPCHandler(None, request_handler)
90+
handler = JSONRPCHandler(self.mock_agent_card, request_handler)
8991
mock_task_store.get.return_value = None
9092
request = GetTaskRequest(
9193
id='1',
@@ -102,7 +104,7 @@ async def test_on_cancel_task_success(self) -> None:
102104
request_handler = DefaultRequestHandler(
103105
mock_agent_executor, mock_task_store
104106
)
105-
handler = JSONRPCHandler(None, request_handler)
107+
handler = JSONRPCHandler(self.mock_agent_card, request_handler)
106108
task_id = 'test_task_id'
107109
mock_task = Task(**MINIMAL_TASK)
108110
mock_task_store.get.return_value = mock_task
@@ -128,7 +130,7 @@ async def test_on_cancel_task_not_supported(self) -> None:
128130
request_handler = DefaultRequestHandler(
129131
mock_agent_executor, mock_task_store
130132
)
131-
handler = JSONRPCHandler(None, request_handler)
133+
handler = JSONRPCHandler(self.mock_agent_card, request_handler)
132134
task_id = 'test_task_id'
133135
mock_task = Task(**MINIMAL_TASK)
134136
mock_task_store.get.return_value = mock_task
@@ -155,7 +157,7 @@ async def test_on_cancel_task_not_found(self) -> None:
155157
request_handler = DefaultRequestHandler(
156158
mock_agent_executor, mock_task_store
157159
)
158-
handler = JSONRPCHandler(None, request_handler)
160+
handler = JSONRPCHandler(self.mock_agent_card, request_handler)
159161
mock_task_store.get.return_value = None
160162
request = CancelTaskRequest(
161163
id='1',
@@ -174,7 +176,7 @@ async def test_on_message_new_message_success(self) -> None:
174176
request_handler = DefaultRequestHandler(
175177
mock_agent_executor, mock_task_store
176178
)
177-
handler = JSONRPCHandler(None, request_handler)
179+
handler = JSONRPCHandler(self.mock_agent_card, request_handler)
178180
mock_task = Task(**MINIMAL_TASK)
179181
mock_task_store.get.return_value = mock_task
180182
mock_agent_executor.execute.return_value = None
@@ -204,7 +206,7 @@ async def test_on_message_new_message_with_existing_task_success(
204206
request_handler = DefaultRequestHandler(
205207
mock_agent_executor, mock_task_store
206208
)
207-
handler = JSONRPCHandler(None, request_handler)
209+
handler = JSONRPCHandler(self.mock_agent_card, request_handler)
208210
mock_task = Task(**MINIMAL_TASK)
209211
mock_task_store.get.return_value = mock_task
210212
mock_agent_executor.execute.return_value = None
@@ -232,15 +234,13 @@ async def streaming_coro():
232234
assert response.root.result == mock_task # type: ignore
233235
mock_agent_executor.execute.assert_called_once()
234236

235-
async def test_on_message_error(
236-
self,
237-
) -> None:
237+
async def test_on_message_error(self) -> None:
238238
mock_agent_executor = AsyncMock(spec=AgentExecutor)
239239
mock_task_store = AsyncMock(spec=TaskStore)
240240
request_handler = DefaultRequestHandler(
241241
mock_agent_executor, mock_task_store
242242
)
243-
handler = JSONRPCHandler(None, request_handler)
243+
handler = JSONRPCHandler(self.mock_agent_card, request_handler)
244244
mock_task_store.get.return_value = None
245245
mock_agent_executor.execute.return_value = None
246246

@@ -272,7 +272,9 @@ async def test_on_message_stream_new_message_success(self) -> None:
272272
request_handler = DefaultRequestHandler(
273273
mock_agent_executor, mock_task_store
274274
)
275-
handler = JSONRPCHandler(None, request_handler)
275+
self.mock_agent_card.capabilities = AgentCapabilities(streaming=True)
276+
277+
handler = JSONRPCHandler(self.mock_agent_card, request_handler)
276278
events: list[Any] = [
277279
Task(**MINIMAL_TASK),
278280
TaskArtifactUpdateEvent(
@@ -325,7 +327,10 @@ async def test_on_message_stream_new_message_existing_task_success(
325327
request_handler = DefaultRequestHandler(
326328
mock_agent_executor, mock_task_store
327329
)
328-
handler = JSONRPCHandler(None, request_handler)
330+
331+
self.mock_agent_card.capabilities = AgentCapabilities(streaming=True)
332+
333+
handler = JSONRPCHandler(self.mock_agent_card, request_handler)
329334
mock_task = Task(**MINIMAL_TASK, history=[])
330335
events: list[Any] = [
331336
mock_task,
@@ -382,7 +387,8 @@ async def test_on_resubscribe_existing_task_success(
382387
request_handler = DefaultRequestHandler(
383388
mock_agent_executor, mock_task_store, mock_queue_manager
384389
)
385-
handler = JSONRPCHandler(None, request_handler)
390+
mock_agent_card = MagicMock(spec=AgentCard)
391+
handler = JSONRPCHandler(self.mock_agent_card, request_handler)
386392
mock_task = Task(**MINIMAL_TASK, history=[])
387393
events: list[Any] = [
388394
TaskArtifactUpdateEvent(
@@ -421,15 +427,13 @@ async def streaming_coro():
421427
assert len(collected_events) == len(events)
422428
assert mock_task.history is not None and len(mock_task.history) == 0
423429

424-
async def test_on_resubscribe_no_existing_task_error(
425-
self,
426-
) -> None:
430+
async def test_on_resubscribe_no_existing_task_error(self) -> None:
427431
mock_agent_executor = AsyncMock(spec=AgentExecutor)
428432
mock_task_store = AsyncMock(spec=TaskStore)
429433
request_handler = DefaultRequestHandler(
430434
mock_agent_executor, mock_task_store
431435
)
432-
handler = JSONRPCHandler(None, request_handler)
436+
handler = JSONRPCHandler(self.mock_agent_card, request_handler)
433437
mock_task_store.get.return_value = None
434438
request = TaskResubscriptionRequest(
435439
id='1', params=TaskIdParams(id='nonexistent_id')

0 commit comments

Comments
 (0)