22
33from __future__ import annotations
44
5+ import base64
6+ import json
57from typing import TYPE_CHECKING , Any
68from unittest .mock import Mock
79
@@ -2037,13 +2039,15 @@ def test_send_durable_execution_callback_success_handler():
20372039 assert isinstance (route , CallbackSuccessRoute )
20382040 assert route .callback_id == "test-callback-id"
20392041
2040- # Test with valid request body (bytes for callback operations)
2042+ result_data = base64 .b64encode (b"success-result" ).decode ("utf-8" )
2043+ request_body = json .dumps ({"Result" : result_data }).encode ("utf-8" )
2044+
20412045 request = HTTPRequest (
20422046 method = "POST" ,
20432047 path = route ,
20442048 headers = {"Content-Type" : "application/json" },
20452049 query_params = {},
2046- body = b"success-result" ,
2050+ body = request_body ,
20472051 )
20482052
20492053 response = handler .handle (route , request )
@@ -2058,6 +2062,57 @@ def test_send_durable_execution_callback_success_handler():
20582062 )
20592063
20602064
2065+ def test_send_durable_execution_callback_success_handler_invalid_json ():
2066+ """Test SendDurableExecutionCallbackSuccessHandler with invalid JSON."""
2067+ executor = Mock ()
2068+ handler = SendDurableExecutionCallbackSuccessHandler (executor )
2069+
2070+ router = Router ()
2071+ route = router .find_route (
2072+ "/2025-12-01/durable-execution-callbacks/test-callback-id/succeed" , "POST"
2073+ )
2074+
2075+ request = HTTPRequest (
2076+ method = "POST" ,
2077+ path = route ,
2078+ headers = {"Content-Type" : "application/json" },
2079+ query_params = {},
2080+ body = b"invalid-json" ,
2081+ )
2082+
2083+ response = handler .handle (route , request )
2084+
2085+ assert response .status_code == 400
2086+ assert response .body ["Type" ] == "InvalidParameterValueException"
2087+ assert "Failed to parse JSON payload" in response .body ["message" ]
2088+
2089+
2090+ def test_send_durable_execution_callback_success_handler_invalid_base64 ():
2091+ """Test SendDurableExecutionCallbackSuccessHandler with invalid base64."""
2092+ executor = Mock ()
2093+ handler = SendDurableExecutionCallbackSuccessHandler (executor )
2094+
2095+ router = Router ()
2096+ route = router .find_route (
2097+ "/2025-12-01/durable-execution-callbacks/test-callback-id/succeed" , "POST"
2098+ )
2099+
2100+ request_body = json .dumps ({"Result" : "invalid-base64!" }).encode ("utf-8" )
2101+ request = HTTPRequest (
2102+ method = "POST" ,
2103+ path = route ,
2104+ headers = {"Content-Type" : "application/json" },
2105+ query_params = {},
2106+ body = request_body ,
2107+ )
2108+
2109+ response = handler .handle (route , request )
2110+
2111+ assert response .status_code == 400
2112+ assert response .body ["Type" ] == "InvalidParameterValueException"
2113+ assert "Failed to decode base64 result" in response .body ["message" ]
2114+
2115+
20612116def test_send_durable_execution_callback_success_handler_empty_body ():
20622117 """Test SendDurableExecutionCallbackSuccessHandler with empty body."""
20632118 executor = Mock ()
0 commit comments