mirror of
https://github.com/home-assistant/core.git
synced 2025-04-25 09:47:52 +00:00
Unify error reporting in onboarding backup API (#138200)
This commit is contained in:
parent
35416189f2
commit
ec0cef0611
@ -357,7 +357,7 @@ def with_backup_manager[_ViewT: BackupOnboardingView, **_P](
|
|||||||
manager = async_get_backup_manager(request.app[KEY_HASS])
|
manager = async_get_backup_manager(request.app[KEY_HASS])
|
||||||
except HomeAssistantError:
|
except HomeAssistantError:
|
||||||
return self.json(
|
return self.json(
|
||||||
{"error": "backup_disabled"},
|
{"code": "backup_disabled"},
|
||||||
status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
|
status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -420,7 +420,7 @@ class RestoreBackupView(BackupOnboardingView):
|
|||||||
)
|
)
|
||||||
except IncorrectPasswordError:
|
except IncorrectPasswordError:
|
||||||
return self.json(
|
return self.json(
|
||||||
{"message": "incorrect_password"}, status_code=HTTPStatus.BAD_REQUEST
|
{"code": "incorrect_password"}, status_code=HTTPStatus.BAD_REQUEST
|
||||||
)
|
)
|
||||||
return web.Response(status=HTTPStatus.OK)
|
return web.Response(status=HTTPStatus.OK)
|
||||||
|
|
||||||
|
@ -777,7 +777,7 @@ async def test_onboarding_backup_view_without_backup(
|
|||||||
resp = await client.request(method, f"/api/onboarding/{view}", **kwargs)
|
resp = await client.request(method, f"/api/onboarding/{view}", **kwargs)
|
||||||
|
|
||||||
assert resp.status == 500
|
assert resp.status == 500
|
||||||
assert await resp.json() == {"error": "backup_disabled"}
|
assert await resp.json() == {"code": "backup_disabled"}
|
||||||
|
|
||||||
|
|
||||||
async def test_onboarding_backup_info(
|
async def test_onboarding_backup_info(
|
||||||
@ -920,14 +920,16 @@ async def test_onboarding_backup_restore(
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
("params", "restore_error", "expected_status", "expected_message", "restore_calls"),
|
("params", "restore_error", "expected_status", "expected_json", "restore_calls"),
|
||||||
[
|
[
|
||||||
# Missing agent_id
|
# Missing agent_id
|
||||||
(
|
(
|
||||||
{"backup_id": "abc123"},
|
{"backup_id": "abc123"},
|
||||||
None,
|
None,
|
||||||
400,
|
400,
|
||||||
"Message format incorrect: required key not provided @ data['agent_id']",
|
{
|
||||||
|
"message": "Message format incorrect: required key not provided @ data['agent_id']"
|
||||||
|
},
|
||||||
0,
|
0,
|
||||||
),
|
),
|
||||||
# Missing backup_id
|
# Missing backup_id
|
||||||
@ -935,7 +937,9 @@ async def test_onboarding_backup_restore(
|
|||||||
{"agent_id": "backup.local"},
|
{"agent_id": "backup.local"},
|
||||||
None,
|
None,
|
||||||
400,
|
400,
|
||||||
"Message format incorrect: required key not provided @ data['backup_id']",
|
{
|
||||||
|
"message": "Message format incorrect: required key not provided @ data['backup_id']"
|
||||||
|
},
|
||||||
0,
|
0,
|
||||||
),
|
),
|
||||||
# Invalid restore_database
|
# Invalid restore_database
|
||||||
@ -947,7 +951,9 @@ async def test_onboarding_backup_restore(
|
|||||||
},
|
},
|
||||||
None,
|
None,
|
||||||
400,
|
400,
|
||||||
"Message format incorrect: expected bool for dictionary value @ data['restore_database']",
|
{
|
||||||
|
"message": "Message format incorrect: expected bool for dictionary value @ data['restore_database']"
|
||||||
|
},
|
||||||
0,
|
0,
|
||||||
),
|
),
|
||||||
# Invalid folder
|
# Invalid folder
|
||||||
@ -959,7 +965,9 @@ async def test_onboarding_backup_restore(
|
|||||||
},
|
},
|
||||||
None,
|
None,
|
||||||
400,
|
400,
|
||||||
"Message format incorrect: expected Folder or one of 'share', 'addons/local', 'ssl', 'media' @ data['restore_folders'][0]",
|
{
|
||||||
|
"message": "Message format incorrect: expected Folder or one of 'share', 'addons/local', 'ssl', 'media' @ data['restore_folders'][0]"
|
||||||
|
},
|
||||||
0,
|
0,
|
||||||
),
|
),
|
||||||
# Wrong password
|
# Wrong password
|
||||||
@ -967,7 +975,7 @@ async def test_onboarding_backup_restore(
|
|||||||
{"backup_id": "abc123", "agent_id": "backup.local"},
|
{"backup_id": "abc123", "agent_id": "backup.local"},
|
||||||
backup.IncorrectPasswordError,
|
backup.IncorrectPasswordError,
|
||||||
400,
|
400,
|
||||||
"incorrect_password",
|
{"code": "incorrect_password"},
|
||||||
1,
|
1,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@ -979,7 +987,7 @@ async def test_onboarding_backup_restore_error(
|
|||||||
params: dict[str, Any],
|
params: dict[str, Any],
|
||||||
restore_error: Exception | None,
|
restore_error: Exception | None,
|
||||||
expected_status: int,
|
expected_status: int,
|
||||||
expected_message: str,
|
expected_json: str,
|
||||||
restore_calls: int,
|
restore_calls: int,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test returning installation type during onboarding."""
|
"""Test returning installation type during onboarding."""
|
||||||
@ -998,7 +1006,7 @@ async def test_onboarding_backup_restore_error(
|
|||||||
resp = await client.post("/api/onboarding/backup/restore", json=params)
|
resp = await client.post("/api/onboarding/backup/restore", json=params)
|
||||||
|
|
||||||
assert resp.status == expected_status
|
assert resp.status == expected_status
|
||||||
assert await resp.json() == {"message": expected_message}
|
assert await resp.json() == expected_json
|
||||||
assert len(mock_restore.mock_calls) == restore_calls
|
assert len(mock_restore.mock_calls) == restore_calls
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user