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..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) + 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 5937cdb35..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 @@ -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 is None + @pytest.mark.asyncio async def test_from_request_with_regular_message_response(self): """from_request should handle regular message response."""