From 36b3496f9f402bc7c761292e1c88cb8a0deb29e2 Mon Sep 17 00:00:00 2001 From: Rodrigo Brandao Date: Thu, 2 Jul 2026 08:15:31 -0700 Subject: [PATCH 1/2] Handling invoke responses with empty body --- .../core/transport/transcript/exchange.py | 2 +- .../transport/transcript/test_exchange.py | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/dev/testing/microsoft-agents-testing/microsoft_agents/testing/core/transport/transcript/exchange.py b/dev/testing/microsoft-agents-testing/microsoft_agents/testing/core/transport/transcript/exchange.py index 804daf566..01d3a8e5a 100644 --- a/dev/testing/microsoft-agents-testing/microsoft_agents/testing/core/transport/transcript/exchange.py +++ b/dev/testing/microsoft-agents-testing/microsoft_agents/testing/core/transport/transcript/exchange.py @@ -156,7 +156,7 @@ async def from_request( elif request_activity.type == ActivityTypes.invoke: body = await response.text() - body_json = json.loads(body) + body_json = json.loads(body) if body.strip() else {} invoke_response = InvokeResponse.model_validate({"status": response.status, "body": body_json}) elif request_activity.delivery_mode == DeliveryModes.stream: diff --git a/dev/testing/microsoft-agents-testing/tests/core/transport/transcript/test_exchange.py b/dev/testing/microsoft-agents-testing/tests/core/transport/transcript/test_exchange.py index 5937cdb35..3811fda8e 100644 --- a/dev/testing/microsoft-agents-testing/tests/core/transport/transcript/test_exchange.py +++ b/dev/testing/microsoft-agents-testing/tests/core/transport/transcript/test_exchange.py @@ -320,6 +320,32 @@ async def test_from_request_with_invoke_response(self): assert exchange.invoke_response.status == 200 assert exchange.invoke_response.body == {"result": "success"} + @pytest.mark.asyncio + @pytest.mark.parametrize("response_body", ["", " \n\t"]) + async def test_from_request_with_empty_invoke_response_body(self, response_body): + """from_request should parse empty invoke response bodies.""" + activity = Activity( + type=ActivityTypes.invoke, + name="testInvoke" + ) + + mock_response = self._create_mock_response( + status=200, + text=response_body + ) + + exchange = await Exchange.from_request( + request_activity=activity, + response_or_exception=mock_response + ) + + assert exchange.request == activity + assert exchange.status_code == 200 + assert exchange.body == response_body + assert exchange.invoke_response is not None + assert exchange.invoke_response.status == 200 + assert exchange.invoke_response.body == {} + @pytest.mark.asyncio async def test_from_request_with_regular_message_response(self): """from_request should handle regular message response.""" From f426f5e418b776e33ce32153fca1efcb34ea6f2e Mon Sep 17 00:00:00 2001 From: Rodrigo Brandao Date: Thu, 2 Jul 2026 08:19:46 -0700 Subject: [PATCH 2/2] Defaulting to none --- .../testing/core/transport/transcript/exchange.py | 2 +- .../tests/core/transport/transcript/test_exchange.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/testing/microsoft-agents-testing/microsoft_agents/testing/core/transport/transcript/exchange.py b/dev/testing/microsoft-agents-testing/microsoft_agents/testing/core/transport/transcript/exchange.py index 01d3a8e5a..a5e015255 100644 --- a/dev/testing/microsoft-agents-testing/microsoft_agents/testing/core/transport/transcript/exchange.py +++ b/dev/testing/microsoft-agents-testing/microsoft_agents/testing/core/transport/transcript/exchange.py @@ -156,7 +156,7 @@ async def from_request( elif request_activity.type == ActivityTypes.invoke: body = await response.text() - body_json = json.loads(body) if body.strip() else {} + body_json = json.loads(body) if body.strip() else None invoke_response = InvokeResponse.model_validate({"status": response.status, "body": body_json}) elif request_activity.delivery_mode == DeliveryModes.stream: diff --git a/dev/testing/microsoft-agents-testing/tests/core/transport/transcript/test_exchange.py b/dev/testing/microsoft-agents-testing/tests/core/transport/transcript/test_exchange.py index 3811fda8e..f689f9620 100644 --- a/dev/testing/microsoft-agents-testing/tests/core/transport/transcript/test_exchange.py +++ b/dev/testing/microsoft-agents-testing/tests/core/transport/transcript/test_exchange.py @@ -344,7 +344,7 @@ async def test_from_request_with_empty_invoke_response_body(self, response_body) assert exchange.body == response_body assert exchange.invoke_response is not None assert exchange.invoke_response.status == 200 - assert exchange.invoke_response.body == {} + assert exchange.invoke_response.body is None @pytest.mark.asyncio async def test_from_request_with_regular_message_response(self):