mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-11-09 02:49:43 +00:00
* Fix and extend cloud backup support * Clean up task for cloud backup and remove by location * Args to kwargs on backup methods * Fix backup remove error test and typing clean up
86 lines
2.9 KiB
Python
86 lines
2.9 KiB
Python
"""Mock test."""
|
|
|
|
from unittest.mock import AsyncMock, MagicMock, patch
|
|
|
|
import pytest
|
|
|
|
from supervisor.backups.const import LOCATION_CLOUD_BACKUP, LOCATION_TYPE, BackupType
|
|
from supervisor.backups.validate import ALL_FOLDERS
|
|
from supervisor.coresys import CoreSys
|
|
from supervisor.mounts.mount import Mount
|
|
|
|
from tests.const import TEST_ADDON_SLUG
|
|
|
|
|
|
@pytest.fixture(name="backup_mock")
|
|
def fixture_backup_mock():
|
|
"""Backup class mock."""
|
|
with patch("supervisor.backups.manager.Backup") as backup_mock:
|
|
backup_instance = MagicMock()
|
|
backup_mock.return_value = backup_instance
|
|
|
|
backup_instance.store_addons = AsyncMock(return_value=None)
|
|
backup_instance.store_folders = AsyncMock(return_value=None)
|
|
backup_instance.store_homeassistant = AsyncMock(return_value=None)
|
|
backup_instance.store_addons = AsyncMock(return_value=None)
|
|
backup_instance.restore_folders = AsyncMock(return_value=True)
|
|
backup_instance.restore_homeassistant = AsyncMock(return_value=None)
|
|
backup_instance.restore_addons = AsyncMock(return_value=(True, []))
|
|
backup_instance.restore_repositories = AsyncMock(return_value=None)
|
|
backup_instance.remove_delta_addons = AsyncMock(return_value=True)
|
|
|
|
yield backup_mock
|
|
|
|
|
|
@pytest.fixture
|
|
def partial_backup_mock(backup_mock):
|
|
"""Partial backup mock."""
|
|
backup_instance = backup_mock.return_value
|
|
backup_instance.sys_type = BackupType.PARTIAL
|
|
backup_instance.folders = []
|
|
backup_instance.addon_list = [TEST_ADDON_SLUG]
|
|
backup_instance.supervisor_version = "99.9.9dev"
|
|
yield backup_mock
|
|
|
|
|
|
@pytest.fixture
|
|
def full_backup_mock(backup_mock):
|
|
"""Full backup mock."""
|
|
backup_instance = backup_mock.return_value
|
|
backup_instance.sys_type = BackupType.FULL
|
|
backup_instance.folders = ALL_FOLDERS
|
|
backup_instance.addon_list = [TEST_ADDON_SLUG]
|
|
backup_instance.supervisor_version = "99.9.9dev"
|
|
yield backup_mock
|
|
|
|
|
|
@pytest.fixture(name="backup_locations")
|
|
async def fixture_backup_locations(
|
|
request: pytest.FixtureRequest, coresys: CoreSys, mount_propagation, mock_is_mount
|
|
) -> list[LOCATION_TYPE]:
|
|
"""Return a list of prcoessed backup locations."""
|
|
locations: list[LOCATION_TYPE] = []
|
|
loaded = False
|
|
for location in request.param:
|
|
if location in {None, LOCATION_CLOUD_BACKUP}:
|
|
locations.append(location)
|
|
else:
|
|
if not loaded:
|
|
await coresys.mounts.load()
|
|
|
|
await coresys.mounts.create_mount(
|
|
Mount.from_dict(
|
|
coresys,
|
|
{
|
|
"name": location,
|
|
"usage": "backup",
|
|
"type": "cifs",
|
|
"server": "test.local",
|
|
"share": "test",
|
|
},
|
|
)
|
|
)
|
|
locations.append(coresys.mounts.get(location))
|
|
|
|
return locations
|