1
0
mirror of https://github.com/home-assistant/core.git synced 2026-07-07 23:06:34 +01:00
Files
core/tests/components/icloud/conftest.py
T
Tim Laing f619ccca4b Feature/icloud media browser (#162001)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Manu <4445816+tr4nt0r@users.noreply.github.com>
2026-06-15 16:11:58 +02:00

142 lines
4.2 KiB
Python

"""Configure iCloud tests."""
from collections.abc import Generator
from unittest.mock import patch
from pyicloud.services.photos import AlbumContainer, PhotoAlbumFolder, PhotoAsset
import pytest
from homeassistant.components.icloud.const import DOMAIN
from tests.common import AsyncMock, MockConfigEntry
from tests.typing import MagicMock
@pytest.fixture(autouse=True)
def icloud_not_create_dir():
"""Mock component setup."""
with patch(
"homeassistant.components.icloud.config_flow.os.path.exists", return_value=True
):
yield
@pytest.fixture(name="icloud_client")
def mock_icloud_client() -> Generator[AsyncMock]:
"""Mock iCloud client."""
with (
patch(
"homeassistant.components.icloud.account.IcloudAccount", autospec=True
) as mock_client,
patch(
"homeassistant.components.icloud.IcloudAccount",
new=mock_client,
),
):
client = mock_client.return_value
client.api = MagicMock()
client.photo_cache = None
albums = [
MagicMock(
spec=PhotoAlbumFolder, id="folder_id1", title="My Folder 1", albums=[]
),
MagicMock(
id="album_id1",
title="All Photos",
photos=[
MagicMock(
spec=PhotoAsset,
id="photo_id1",
filename="My Photo 1.JPG",
item_type="image",
versions={
"original": MagicMock(
size=123456,
width=4000,
height=3000,
)
},
),
MagicMock(
spec=PhotoAsset,
id="photo_id2",
filename="My Photo 2.heic",
item_type="image",
),
MagicMock(
spec=PhotoAsset,
id="photo_id3",
filename="My Photo 3.png",
item_type="image",
),
],
),
MagicMock(
id="album_id2",
title="My Photos",
photos=[
MagicMock(
spec=PhotoAsset,
id="photo_id2",
filename="My Photo 2.heic",
item_type="image",
),
],
),
]
shared = [
MagicMock(
id="stream_id1",
title="Favorites",
photos=[
MagicMock(
spec=PhotoAsset,
id="shared_id1",
filename="My Photo 1.jpg",
item_type="image",
),
MagicMock(
spec=PhotoAsset,
id="shared_id2",
filename="My Video 1.mp4",
item_type="movie",
),
],
),
MagicMock(
id="stream_id2",
title="Random Stream",
photos=[
MagicMock(
spec=PhotoAsset,
id="shared_id3",
filename="My Unknown file.xyz",
item_type="unknown",
),
],
),
]
client.api.photos.albums = AlbumContainer(albums)
client.api.photos.shared_streams = AlbumContainer(shared)
yield client
@pytest.fixture(name="config_entry")
def mock_config_entry() -> MockConfigEntry:
"""Create a mock config entry."""
return MockConfigEntry(
domain=DOMAIN,
unique_id="test_account_id",
title="Test iCloud Account",
data={
"username": "test_user",
"password": "test_pass",
"with_family": False,
"max_interval": 0,
"gps_accuracy_threshold": 0,
},
)