mirror of https://github.com/home-assistant/core
74 lines
2.0 KiB
Python
74 lines
2.0 KiB
Python
"""Test fixtures for the Backup integration."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from collections.abc import Generator
|
|
from pathlib import Path
|
|
from unittest.mock import MagicMock, Mock, patch
|
|
|
|
import pytest
|
|
|
|
from homeassistant.core import HomeAssistant
|
|
|
|
|
|
@pytest.fixture(name="mocked_json_bytes")
|
|
def mocked_json_bytes_fixture() -> Generator[Mock]:
|
|
"""Mock json_bytes."""
|
|
with patch(
|
|
"homeassistant.components.backup.manager.json_bytes",
|
|
return_value=b"{}", # Empty JSON
|
|
) as mocked_json_bytes:
|
|
yield mocked_json_bytes
|
|
|
|
|
|
@pytest.fixture(name="mocked_tarfile")
|
|
def mocked_tarfile_fixture() -> Generator[Mock]:
|
|
"""Mock tarfile."""
|
|
with patch(
|
|
"homeassistant.components.backup.manager.SecureTarFile"
|
|
) as mocked_tarfile:
|
|
yield mocked_tarfile
|
|
|
|
|
|
@pytest.fixture(name="mock_backup_generation")
|
|
def mock_backup_generation_fixture(
|
|
hass: HomeAssistant, mocked_json_bytes: Mock, mocked_tarfile: Mock
|
|
) -> Generator[None]:
|
|
"""Mock backup generator."""
|
|
|
|
def _mock_iterdir(path: Path) -> list[Path]:
|
|
if not path.name.endswith("testing_config"):
|
|
return []
|
|
return [
|
|
Path("test.txt"),
|
|
Path(".DS_Store"),
|
|
Path(".storage"),
|
|
]
|
|
|
|
with (
|
|
patch("pathlib.Path.iterdir", _mock_iterdir),
|
|
patch("pathlib.Path.stat", MagicMock(st_size=123)),
|
|
patch("pathlib.Path.is_file", lambda x: x.name != ".storage"),
|
|
patch(
|
|
"pathlib.Path.is_dir",
|
|
lambda x: x.name == ".storage",
|
|
),
|
|
patch(
|
|
"pathlib.Path.exists",
|
|
lambda x: x != Path(hass.config.path("backups")),
|
|
),
|
|
patch(
|
|
"pathlib.Path.is_symlink",
|
|
lambda _: False,
|
|
),
|
|
patch(
|
|
"pathlib.Path.mkdir",
|
|
MagicMock(),
|
|
),
|
|
patch(
|
|
"homeassistant.components.backup.manager.HAVERSION",
|
|
"2025.1.0",
|
|
),
|
|
):
|
|
yield
|