diff --git a/src/aws_durable_execution_sdk_python_testing/web/handlers.py b/src/aws_durable_execution_sdk_python_testing/web/handlers.py index 85417e8..a3b2f0e 100644 --- a/src/aws_durable_execution_sdk_python_testing/web/handlers.py +++ b/src/aws_durable_execution_sdk_python_testing/web/handlers.py @@ -187,13 +187,11 @@ def _no_content_response( def _parse_callback_result_payload(self, request: HTTPRequest) -> bytes: """Parse callback result payload from request body. - Expects JSON payload with base64-encoded Result field. - Args: - request: The HTTP request containing the JSON payload + request: The HTTP request containing the binary payload Returns: - bytes: The decoded result payload + bytes: The result payload Raises: InvalidParameterValueException: If payload parsing fails @@ -201,19 +199,7 @@ def _parse_callback_result_payload(self, request: HTTPRequest) -> bytes: if not request.body or not isinstance(request.body, bytes): return b"" - try: - payload = json.loads(request.body.decode("utf-8")) - if isinstance(payload, dict) and "Result" in payload: - result_value = payload["Result"] - if isinstance(result_value, str): - return base64.b64decode(result_value) - return b"" - except (json.JSONDecodeError, UnicodeDecodeError) as e: - msg = f"Failed to parse JSON payload: {e}" - raise InvalidParameterValueException(msg) from e - except ValueError as e: - msg = f"Failed to decode base64 result: {e}" - raise InvalidParameterValueException(msg) from e + return request.body def _parse_query_param(self, request: HTTPRequest, param_name: str) -> str | None: """Parse a single query parameter from the request. diff --git a/tests/web/handlers_test.py b/tests/web/handlers_test.py index 52c2dea..167b0f5 100644 --- a/tests/web/handlers_test.py +++ b/tests/web/handlers_test.py @@ -2039,13 +2039,13 @@ def test_send_durable_execution_callback_success_handler(): assert isinstance(route, CallbackSuccessRoute) assert route.callback_id == "test-callback-id" - result_data = base64.b64encode(b"success-result").decode("utf-8") - request_body = json.dumps({"Result": result_data}).encode("utf-8") + # Result is sent as raw binary body + request_body = b"success-result" request = HTTPRequest( method="POST", path=route, - headers={"Content-Type": "application/json"}, + headers={}, query_params={}, body=request_body, ) @@ -2062,57 +2062,6 @@ def test_send_durable_execution_callback_success_handler(): ) -def test_send_durable_execution_callback_success_handler_invalid_json(): - """Test SendDurableExecutionCallbackSuccessHandler with invalid JSON.""" - executor = Mock() - handler = SendDurableExecutionCallbackSuccessHandler(executor) - - router = Router() - route = router.find_route( - "/2025-12-01/durable-execution-callbacks/test-callback-id/succeed", "POST" - ) - - request = HTTPRequest( - method="POST", - path=route, - headers={"Content-Type": "application/json"}, - query_params={}, - body=b"invalid-json", - ) - - response = handler.handle(route, request) - - assert response.status_code == 400 - assert response.body["Type"] == "InvalidParameterValueException" - assert "Failed to parse JSON payload" in response.body["message"] - - -def test_send_durable_execution_callback_success_handler_invalid_base64(): - """Test SendDurableExecutionCallbackSuccessHandler with invalid base64.""" - executor = Mock() - handler = SendDurableExecutionCallbackSuccessHandler(executor) - - router = Router() - route = router.find_route( - "/2025-12-01/durable-execution-callbacks/test-callback-id/succeed", "POST" - ) - - request_body = json.dumps({"Result": "invalid-base64!"}).encode("utf-8") - request = HTTPRequest( - method="POST", - path=route, - headers={"Content-Type": "application/json"}, - query_params={}, - body=request_body, - ) - - response = handler.handle(route, request) - - assert response.status_code == 400 - assert response.body["Type"] == "InvalidParameterValueException" - assert "Failed to decode base64 result" in response.body["message"] - - def test_send_durable_execution_callback_success_handler_empty_body(): """Test SendDurableExecutionCallbackSuccessHandler with empty body.""" executor = Mock()