diff --git a/homeassistant/components/backup/manager.py b/homeassistant/components/backup/manager.py index e38312dd6eb..71098f6191f 100644 --- a/homeassistant/components/backup/manager.py +++ b/homeassistant/components/backup/manager.py @@ -9,7 +9,7 @@ from pathlib import Path import tarfile from tarfile import TarError from tempfile import TemporaryDirectory -from typing import Any, Protocol +from typing import Any, Protocol, cast from securetar import SecureTarFile, atomic_contents_add @@ -19,6 +19,7 @@ from homeassistant.exceptions import HomeAssistantError from homeassistant.helpers import integration_platform from homeassistant.helpers.json import save_json from homeassistant.util import dt +from homeassistant.util.json import json_loads_object from .const import DOMAIN, EXCLUDE_FROM_BACKUP, LOGGER @@ -100,11 +101,11 @@ class BackupManager: try: with tarfile.open(backup_path, "r:") as backup_file: if data_file := backup_file.extractfile("./backup.json"): - data = json.loads(data_file.read()) + data = json_loads_object(data_file.read()) backup = Backup( - slug=data["slug"], - name=data["name"], - date=data["date"], + slug=cast(str, data["slug"]), + name=cast(str, data["name"]), + date=cast(str, data["date"]), path=backup_path, size=round(backup_path.stat().st_size / 1_048_576, 2), ) diff --git a/tests/components/backup/test_manager.py b/tests/components/backup/test_manager.py index aa7d6bae893..9d3b9889cd3 100644 --- a/tests/components/backup/test_manager.py +++ b/tests/components/backup/test_manager.py @@ -85,7 +85,7 @@ async def test_load_backups(hass: HomeAssistant) -> None: with patch("pathlib.Path.glob", return_value=[TEST_BACKUP.path]), patch( "tarfile.open", return_value=MagicMock() ), patch( - "json.loads", + "homeassistant.components.backup.manager.json_loads_object", return_value={ "slug": TEST_BACKUP.slug, "name": TEST_BACKUP.name,