Send localization info on websocket_api script errors (#104638)
* Send localization info on script errors * Use connection exception hander * Keep HomeAssistantError is unknown_error * Move specific exception handling
This commit is contained in:
parent
7dbaf40f48
commit
efd330f182
6 changed files with 106 additions and 3 deletions
|
@ -2317,6 +2317,65 @@ async def test_execute_script(
|
|||
assert call.context.as_dict() == msg_var["result"]["context"]
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("raise_exception", "err_code"),
|
||||
[
|
||||
(
|
||||
HomeAssistantError(
|
||||
"Some error",
|
||||
translation_domain="test",
|
||||
translation_key="test_error",
|
||||
translation_placeholders={"option": "bla"},
|
||||
),
|
||||
"unknown_error",
|
||||
),
|
||||
(
|
||||
ServiceValidationError(
|
||||
"Some error",
|
||||
translation_domain="test",
|
||||
translation_key="test_error",
|
||||
translation_placeholders={"option": "bla"},
|
||||
),
|
||||
"service_validation_error",
|
||||
),
|
||||
],
|
||||
)
|
||||
async def test_execute_script_err_localization(
|
||||
hass: HomeAssistant,
|
||||
websocket_client: MockHAClientWebSocket,
|
||||
raise_exception: HomeAssistantError,
|
||||
err_code: str,
|
||||
) -> None:
|
||||
"""Test testing a condition."""
|
||||
async_mock_service(
|
||||
hass, "domain_test", "test_service", raise_exception=raise_exception
|
||||
)
|
||||
|
||||
await websocket_client.send_json(
|
||||
{
|
||||
"id": 5,
|
||||
"type": "execute_script",
|
||||
"sequence": [
|
||||
{
|
||||
"service": "domain_test.test_service",
|
||||
"data": {"hello": "world"},
|
||||
},
|
||||
{"stop": "done", "response_variable": "service_result"},
|
||||
],
|
||||
}
|
||||
)
|
||||
|
||||
msg = await websocket_client.receive_json()
|
||||
assert msg["id"] == 5
|
||||
assert msg["type"] == const.TYPE_RESULT
|
||||
assert msg["success"] is False
|
||||
assert msg["error"]["code"] == err_code
|
||||
assert msg["error"]["message"] == "Some error"
|
||||
assert msg["error"]["translation_key"] == "test_error"
|
||||
assert msg["error"]["translation_domain"] == "test"
|
||||
assert msg["error"]["translation_placeholders"] == {"option": "bla"}
|
||||
|
||||
|
||||
async def test_execute_script_complex_response(
|
||||
hass: HomeAssistant, hass_ws_client: WebSocketGenerator
|
||||
) -> None:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue