|
47 | 47 | TaskState, |
48 | 48 | TaskStatus, |
49 | 49 | TaskStatusUpdateEvent, |
| 50 | + ListTasksRequest, |
| 51 | + ListTasksResponse, |
50 | 52 | ) |
51 | 53 | from cryptography.hazmat.primitives import asymmetric |
52 | 54 | from cryptography.hazmat.primitives.asymmetric import ec |
|
91 | 93 | status=TaskStatus(state=TaskState.TASK_STATE_WORKING), |
92 | 94 | ) |
93 | 95 |
|
| 96 | +LIST_TASKS_RESPONSE = ListTasksResponse( |
| 97 | + tasks=[TASK_FROM_BLOCKING, GET_TASK_RESPONSE], |
| 98 | + next_page_token='page-2', |
| 99 | +) |
| 100 | + |
94 | 101 |
|
95 | 102 | def create_key_provider(verification_key: Any): |
96 | 103 | """Creates a key provider function for testing.""" |
@@ -121,6 +128,7 @@ async def stream_side_effect(*args, **kwargs): |
121 | 128 | # Configure other methods |
122 | 129 | handler.on_get_task.return_value = GET_TASK_RESPONSE |
123 | 130 | handler.on_cancel_task.return_value = CANCEL_TASK_RESPONSE |
| 131 | + handler.on_list_tasks.return_value = LIST_TASKS_RESPONSE |
124 | 132 | handler.on_create_task_push_notification_config.return_value = ( |
125 | 133 | CALLBACK_CONFIG |
126 | 134 | ) |
@@ -450,6 +458,57 @@ def channel_factory(address: str) -> Channel: |
450 | 458 | await transport.close() |
451 | 459 |
|
452 | 460 |
|
| 461 | +@pytest.mark.asyncio |
| 462 | +@pytest.mark.parametrize( |
| 463 | + 'transport_setup_fixture', |
| 464 | + [ |
| 465 | + pytest.param('jsonrpc_setup', id='JSON-RPC'), |
| 466 | + pytest.param('rest_setup', id='REST'), |
| 467 | + ], |
| 468 | +) |
| 469 | +async def test_http_transport_list_tasks( |
| 470 | + transport_setup_fixture: str, request |
| 471 | +) -> None: |
| 472 | + transport_setup: TransportSetup = request.getfixturevalue( |
| 473 | + transport_setup_fixture |
| 474 | + ) |
| 475 | + transport = transport_setup.transport |
| 476 | + handler = transport_setup.handler |
| 477 | + |
| 478 | + params = ListTasksRequest(page_size=10, page_token='page-1') |
| 479 | + result = await transport.list_tasks(request=params) |
| 480 | + |
| 481 | + assert len(result.tasks) == 2 |
| 482 | + assert result.next_page_token == 'page-2' |
| 483 | + handler.on_list_tasks.assert_awaited_once() |
| 484 | + |
| 485 | + if hasattr(transport, 'close'): |
| 486 | + await transport.close() |
| 487 | + |
| 488 | + |
| 489 | +@pytest.mark.asyncio |
| 490 | +async def test_grpc_transport_list_tasks( |
| 491 | + grpc_server_and_handler: tuple[str, AsyncMock], |
| 492 | + agent_card: AgentCard, |
| 493 | +) -> None: |
| 494 | + server_address, handler = grpc_server_and_handler |
| 495 | + |
| 496 | + def channel_factory(address: str) -> Channel: |
| 497 | + return grpc.aio.insecure_channel(address) |
| 498 | + |
| 499 | + channel = channel_factory(server_address) |
| 500 | + transport = GrpcTransport(channel=channel, agent_card=agent_card) |
| 501 | + |
| 502 | + params = ListTasksRequest(page_size=10, page_token='page-1') |
| 503 | + result = await transport.list_tasks(request=params) |
| 504 | + |
| 505 | + assert len(result.tasks) == 2 |
| 506 | + assert result.next_page_token == 'page-2' |
| 507 | + handler.on_list_tasks.assert_awaited_once() |
| 508 | + |
| 509 | + await transport.close() |
| 510 | + |
| 511 | + |
453 | 512 | @pytest.mark.asyncio |
454 | 513 | @pytest.mark.parametrize( |
455 | 514 | 'transport_setup_fixture', |
|
0 commit comments