Use json_loads_object util in backup (#89895)

* Use json_loads_object util in backup

* adjust test
This commit is contained in:
J. Nick Koston 2023-03-17 14:25:29 -10:00 committed by GitHub
parent dbebf8c783
commit 138bbd9c28
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 6 deletions

View File

@ -9,7 +9,7 @@ from pathlib import Path
import tarfile import tarfile
from tarfile import TarError from tarfile import TarError
from tempfile import TemporaryDirectory from tempfile import TemporaryDirectory
from typing import Any, Protocol from typing import Any, Protocol, cast
from securetar import SecureTarFile, atomic_contents_add 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 import integration_platform
from homeassistant.helpers.json import save_json from homeassistant.helpers.json import save_json
from homeassistant.util import dt from homeassistant.util import dt
from homeassistant.util.json import json_loads_object
from .const import DOMAIN, EXCLUDE_FROM_BACKUP, LOGGER from .const import DOMAIN, EXCLUDE_FROM_BACKUP, LOGGER
@ -100,11 +101,11 @@ class BackupManager:
try: try:
with tarfile.open(backup_path, "r:") as backup_file: with tarfile.open(backup_path, "r:") as backup_file:
if data_file := backup_file.extractfile("./backup.json"): if data_file := backup_file.extractfile("./backup.json"):
data = json.loads(data_file.read()) data = json_loads_object(data_file.read())
backup = Backup( backup = Backup(
slug=data["slug"], slug=cast(str, data["slug"]),
name=data["name"], name=cast(str, data["name"]),
date=data["date"], date=cast(str, data["date"]),
path=backup_path, path=backup_path,
size=round(backup_path.stat().st_size / 1_048_576, 2), size=round(backup_path.stat().st_size / 1_048_576, 2),
) )

View File

@ -85,7 +85,7 @@ async def test_load_backups(hass: HomeAssistant) -> None:
with patch("pathlib.Path.glob", return_value=[TEST_BACKUP.path]), patch( with patch("pathlib.Path.glob", return_value=[TEST_BACKUP.path]), patch(
"tarfile.open", return_value=MagicMock() "tarfile.open", return_value=MagicMock()
), patch( ), patch(
"json.loads", "homeassistant.components.backup.manager.json_loads_object",
return_value={ return_value={
"slug": TEST_BACKUP.slug, "slug": TEST_BACKUP.slug,
"name": TEST_BACKUP.name, "name": TEST_BACKUP.name,