1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
"""Unified tests."""
from unittest.mock import patch
import pytest
from aiohttp import ClientError
from intellifire4py import UnifiedFireplace
from intellifire4py.cloud_interface import IntelliFireCloudInterface
from intellifire4py.const import IntelliFireApiMode
@pytest.mark.asyncio
async def test_build_from_common_data_local_with_local_connectivity(
mock_common_data_local, mock_login_flow_with_local_and_cloud
) -> None:
"""Test build from common data."""
assert mock_common_data_local.ip_address == "192.168.1.69"
local_fp = await UnifiedFireplace.build_fireplace_from_common(
mock_common_data_local
)
assert local_fp.read_mode == IntelliFireApiMode.LOCAL
assert local_fp.control_mode == IntelliFireApiMode.LOCAL
await local_fp.read_api.stop_background_polling()
@pytest.mark.asyncio
async def test_build_from_common_data_local_with_local_connectivity1(
mock_common_data_cloud, mock_login_flow_with_local_and_cloud
) -> None:
"""Test build from common data."""
local_fp = await UnifiedFireplace.build_fireplace_from_common(
mock_common_data_cloud
)
assert local_fp.read_mode == IntelliFireApiMode.CLOUD
assert local_fp.control_mode == IntelliFireApiMode.CLOUD
await local_fp.read_api.stop_background_polling()
@pytest.mark.asyncio
async def test_build_from_common_data_local_without_local_connectivity2(
mock_common_data_local, mock_login_flow_with_cloud_only
) -> None:
"""Test build from common data."""
assert mock_common_data_local.ip_address == "192.168.1.69"
local_fp = await UnifiedFireplace.build_fireplace_from_common(
mock_common_data_local
)
assert local_fp.read_mode == IntelliFireApiMode.CLOUD
assert local_fp.control_mode == IntelliFireApiMode.CLOUD
await local_fp.read_api.stop_background_polling()
@pytest.mark.asyncio
async def test_build_with_user_data_cloud_only(
mock_user_data, mock_cloud_login_flow_no_local
):
"""Test build with user data."""
fp = (
await UnifiedFireplace.build_fireplaces_from_user_data(user_data=mock_user_data)
)[0]
assert fp.read_mode == IntelliFireApiMode.CLOUD
assert fp.control_mode == IntelliFireApiMode.CLOUD
assert fp.cloud_connectivity is True
assert fp.local_connectivity is False
await fp.read_api.stop_background_polling()
@pytest.mark.asyncio
async def test_build_with_user_data_cloud_and_local(
mock_user_data, mock_login_flow_with_local_and_cloud
):
"""Test build with user data."""
fp = (
await UnifiedFireplace.build_fireplaces_from_user_data(user_data=mock_user_data)
)[0]
assert fp.read_mode == IntelliFireApiMode.LOCAL
assert fp.control_mode == IntelliFireApiMode.LOCAL
assert fp.cloud_connectivity is True
assert fp.local_connectivity is True
await fp.read_api.stop_background_polling()
@pytest.mark.asyncio
async def test_unified_connectivity(mock_cloud_login_flow_connectivity_testing): # type: ignore
"""Test connectivity."""
username = "user"
password = "pass" # noqa: S105
async with IntelliFireCloudInterface() as cloud_interface:
await cloud_interface.login_with_credentials(
username=username, password=password
)
user_data = cloud_interface.user_data
@pytest.mark.asyncio
async def test_connectivity_cloud_only(mock_common_data_local, mock_background_polling):
"""Test connectivity."""
with patch("intellifire4py.UnifiedFireplace.async_validate_connectivity") as m:
m.return_value = (False, True)
fp = await UnifiedFireplace.build_fireplace_from_common(mock_common_data_local)
assert fp.local_connectivity is False
assert fp.cloud_connectivity is True
@pytest.mark.asyncio
async def test_connectivity_local_only(mock_common_data_local, mock_background_polling):
"""Test connectivity."""
with patch("intellifire4py.UnifiedFireplace.async_validate_connectivity") as m:
m.return_value = (True, False)
fp = await UnifiedFireplace.build_fireplace_from_common(mock_common_data_local)
assert fp.local_connectivity is True
assert fp.cloud_connectivity is False
@pytest.mark.asyncio
async def test_connectivity_none(mock_common_data_local, mock_background_polling):
"""Test connectivity."""
with patch("intellifire4py.UnifiedFireplace.async_validate_connectivity") as m:
m.return_value = (False, False)
with pytest.raises(ClientError) as ex:
fp = await UnifiedFireplace.build_fireplace_from_common(
mock_common_data_local
)
|