@@ -2072,6 +2072,43 @@ async def test_poll_workflow_task_retries_once_with_same_poll_request_id_after_t
20722072 assert first_body ["task_queue" ] == "queue-1"
20732073 assert first_body ["poll_request_id" ] == second_body ["poll_request_id" ]
20742074
2075+ @pytest .mark .asyncio
2076+ async def test_poll_activity_task_sends_poll_request_id (self , client : Client ) -> None :
2077+ response_task = {"task" : {"task_id" : "activity-task-123" }}
2078+
2079+ with patch .object (client , "_request" , new_callable = AsyncMock , return_value = response_task ) as mock :
2080+ task = await client .poll_activity_task (worker_id = "worker-1" , task_queue = "queue-1" )
2081+
2082+ assert task == response_task ["task" ]
2083+ request_body = mock .await_args .kwargs ["json" ]
2084+ assert request_body ["worker_id" ] == "worker-1"
2085+ assert request_body ["task_queue" ] == "queue-1"
2086+ assert isinstance (request_body ["poll_request_id" ], str )
2087+ assert request_body ["poll_request_id" ] != ""
2088+
2089+ @pytest .mark .asyncio
2090+ async def test_poll_activity_task_retries_once_with_same_poll_request_id_after_timeout (
2091+ self , client : Client
2092+ ) -> None :
2093+ response_task = {"task" : {"task_id" : "activity-task-123" }}
2094+
2095+ with patch .object (
2096+ client ,
2097+ "_request" ,
2098+ new_callable = AsyncMock ,
2099+ side_effect = [httpx .TimeoutException ("timeout" ), response_task ],
2100+ ) as mock :
2101+ task = await client .poll_activity_task (worker_id = "worker-1" , task_queue = "queue-1" )
2102+
2103+ assert task == response_task ["task" ]
2104+ assert mock .await_count == 2
2105+
2106+ first_body = mock .await_args_list [0 ].kwargs ["json" ]
2107+ second_body = mock .await_args_list [1 ].kwargs ["json" ]
2108+ assert first_body ["worker_id" ] == "worker-1"
2109+ assert first_body ["task_queue" ] == "queue-1"
2110+ assert first_body ["poll_request_id" ] == second_body ["poll_request_id" ]
2111+
20752112 @pytest .mark .asyncio
20762113 async def test_complete_workflow_task_matches_polyglot_fixture (self , client : Client ) -> None :
20772114 fixture_path = Path (__file__ ).parent / "fixtures" / "control-plane" / "workflow-task-complete-parity.json"
0 commit comments