Adjust imports in cloud tests (#120386)
parent
cbb3d48bd9
commit
76e890865e
|
@ -2,9 +2,19 @@
|
|||
|
||||
from unittest.mock import AsyncMock, patch
|
||||
|
||||
from homeassistant.components import cloud
|
||||
from homeassistant.components.cloud import const, prefs as cloud_prefs
|
||||
from homeassistant.components.cloud.const import DATA_CLOUD
|
||||
from homeassistant.components.cloud.const import (
|
||||
DATA_CLOUD,
|
||||
DOMAIN,
|
||||
PREF_ALEXA_SETTINGS_VERSION,
|
||||
PREF_ENABLE_ALEXA,
|
||||
PREF_ENABLE_GOOGLE,
|
||||
PREF_GOOGLE_SECURE_DEVICES_PIN,
|
||||
PREF_GOOGLE_SETTINGS_VERSION,
|
||||
)
|
||||
from homeassistant.components.cloud.prefs import (
|
||||
ALEXA_SETTINGS_VERSION,
|
||||
GOOGLE_SETTINGS_VERSION,
|
||||
)
|
||||
from homeassistant.setup import async_setup_component
|
||||
|
||||
PIPELINE_DATA = {
|
||||
|
@ -62,7 +72,7 @@ async def mock_cloud(hass, config=None):
|
|||
# because it's always setup by bootstrap. Set it up manually in tests.
|
||||
assert await async_setup_component(hass, "homeassistant", {})
|
||||
|
||||
assert await async_setup_component(hass, cloud.DOMAIN, {"cloud": config or {}})
|
||||
assert await async_setup_component(hass, DOMAIN, {"cloud": config or {}})
|
||||
cloud_inst = hass.data[DATA_CLOUD]
|
||||
with patch("hass_nabucasa.Cloud.run_executor", AsyncMock(return_value=None)):
|
||||
await cloud_inst.initialize()
|
||||
|
@ -71,11 +81,11 @@ async def mock_cloud(hass, config=None):
|
|||
def mock_cloud_prefs(hass, prefs):
|
||||
"""Fixture for cloud component."""
|
||||
prefs_to_set = {
|
||||
const.PREF_ALEXA_SETTINGS_VERSION: cloud_prefs.ALEXA_SETTINGS_VERSION,
|
||||
const.PREF_ENABLE_ALEXA: True,
|
||||
const.PREF_ENABLE_GOOGLE: True,
|
||||
const.PREF_GOOGLE_SECURE_DEVICES_PIN: None,
|
||||
const.PREF_GOOGLE_SETTINGS_VERSION: cloud_prefs.GOOGLE_SETTINGS_VERSION,
|
||||
PREF_ALEXA_SETTINGS_VERSION: ALEXA_SETTINGS_VERSION,
|
||||
PREF_ENABLE_ALEXA: True,
|
||||
PREF_ENABLE_GOOGLE: True,
|
||||
PREF_GOOGLE_SECURE_DEVICES_PIN: None,
|
||||
PREF_GOOGLE_SETTINGS_VERSION: GOOGLE_SETTINGS_VERSION,
|
||||
}
|
||||
prefs_to_set.update(prefs)
|
||||
hass.data[DATA_CLOUD].client._prefs._prefs = prefs_to_set
|
||||
|
|
|
@ -17,8 +17,13 @@ import jwt
|
|||
import pytest
|
||||
from typing_extensions import AsyncGenerator
|
||||
|
||||
from homeassistant.components.cloud import CloudClient, prefs
|
||||
from homeassistant.components.cloud.client import CloudClient
|
||||
from homeassistant.components.cloud.const import DATA_CLOUD
|
||||
from homeassistant.components.cloud.prefs import (
|
||||
PREF_ALEXA_DEFAULT_EXPOSE,
|
||||
PREF_GOOGLE_DEFAULT_EXPOSE,
|
||||
CloudPreferences,
|
||||
)
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.setup import async_setup_component
|
||||
from homeassistant.util.dt import utcnow
|
||||
|
@ -174,8 +179,8 @@ def set_cloud_prefs_fixture(
|
|||
async def set_cloud_prefs(prefs_settings: dict[str, Any]) -> None:
|
||||
"""Set cloud prefs."""
|
||||
prefs_to_set = cloud.client.prefs.as_dict()
|
||||
prefs_to_set.pop(prefs.PREF_ALEXA_DEFAULT_EXPOSE)
|
||||
prefs_to_set.pop(prefs.PREF_GOOGLE_DEFAULT_EXPOSE)
|
||||
prefs_to_set.pop(PREF_ALEXA_DEFAULT_EXPOSE)
|
||||
prefs_to_set.pop(PREF_GOOGLE_DEFAULT_EXPOSE)
|
||||
prefs_to_set.update(prefs_settings)
|
||||
await cloud.client.prefs.async_update(**prefs_to_set)
|
||||
|
||||
|
@ -210,7 +215,7 @@ def mock_cloud_fixture(hass):
|
|||
@pytest.fixture
|
||||
async def cloud_prefs(hass):
|
||||
"""Fixture for cloud preferences."""
|
||||
cloud_prefs = prefs.CloudPreferences(hass)
|
||||
cloud_prefs = CloudPreferences(hass)
|
||||
await cloud_prefs.async_initialize()
|
||||
return cloud_prefs
|
||||
|
||||
|
|
|
@ -6,15 +6,22 @@ from unittest.mock import MagicMock, patch
|
|||
|
||||
import pytest
|
||||
|
||||
from homeassistant.components import cloud
|
||||
from homeassistant.components.cloud import (
|
||||
CloudConnectionState,
|
||||
CloudNotAvailable,
|
||||
CloudNotConnected,
|
||||
async_get_or_create_cloudhook,
|
||||
async_listen_connection_change,
|
||||
async_remote_ui_url,
|
||||
)
|
||||
from homeassistant.components.cloud.const import (
|
||||
DATA_CLOUD,
|
||||
DOMAIN,
|
||||
MODE_DEV,
|
||||
PREF_CLOUDHOOKS,
|
||||
)
|
||||
from homeassistant.components.cloud.const import DATA_CLOUD, DOMAIN, PREF_CLOUDHOOKS
|
||||
from homeassistant.components.cloud.prefs import STORAGE_KEY
|
||||
from homeassistant.const import EVENT_HOMEASSISTANT_STOP
|
||||
from homeassistant.const import CONF_MODE, EVENT_HOMEASSISTANT_STOP
|
||||
from homeassistant.core import Context, HomeAssistant
|
||||
from homeassistant.exceptions import Unauthorized
|
||||
from homeassistant.setup import async_setup_component
|
||||
|
@ -31,7 +38,7 @@ async def test_constructor_loads_info_from_config(hass: HomeAssistant) -> None:
|
|||
{
|
||||
"http": {},
|
||||
"cloud": {
|
||||
cloud.CONF_MODE: cloud.MODE_DEV,
|
||||
CONF_MODE: MODE_DEV,
|
||||
"cognito_client_id": "test-cognito_client_id",
|
||||
"user_pool_id": "test-user_pool_id",
|
||||
"region": "test-region",
|
||||
|
@ -47,7 +54,7 @@ async def test_constructor_loads_info_from_config(hass: HomeAssistant) -> None:
|
|||
assert result
|
||||
|
||||
cl = hass.data[DATA_CLOUD]
|
||||
assert cl.mode == cloud.MODE_DEV
|
||||
assert cl.mode == MODE_DEV
|
||||
assert cl.cognito_client_id == "test-cognito_client_id"
|
||||
assert cl.user_pool_id == "test-user_pool_id"
|
||||
assert cl.region == "test-region"
|
||||
|
@ -129,7 +136,7 @@ async def test_setup_existing_cloud_user(
|
|||
{
|
||||
"http": {},
|
||||
"cloud": {
|
||||
cloud.CONF_MODE: cloud.MODE_DEV,
|
||||
CONF_MODE: MODE_DEV,
|
||||
"cognito_client_id": "test-cognito_client_id",
|
||||
"user_pool_id": "test-user_pool_id",
|
||||
"region": "test-region",
|
||||
|
@ -156,7 +163,7 @@ async def test_on_connect(hass: HomeAssistant, mock_cloud_fixture) -> None:
|
|||
nonlocal cloud_states
|
||||
cloud_states.append(cloud_state)
|
||||
|
||||
cloud.async_listen_connection_change(hass, handle_state)
|
||||
async_listen_connection_change(hass, handle_state)
|
||||
|
||||
assert "async_setup" in str(cl.iot._on_connect[-1])
|
||||
await cl.iot._on_connect[-1]()
|
||||
|
@ -178,12 +185,12 @@ async def test_on_connect(hass: HomeAssistant, mock_cloud_fixture) -> None:
|
|||
assert len(mock_load.mock_calls) == 0
|
||||
|
||||
assert len(cloud_states) == 1
|
||||
assert cloud_states[-1] == cloud.CloudConnectionState.CLOUD_CONNECTED
|
||||
assert cloud_states[-1] == CloudConnectionState.CLOUD_CONNECTED
|
||||
|
||||
await cl.iot._on_connect[-1]()
|
||||
await hass.async_block_till_done()
|
||||
assert len(cloud_states) == 2
|
||||
assert cloud_states[-1] == cloud.CloudConnectionState.CLOUD_CONNECTED
|
||||
assert cloud_states[-1] == CloudConnectionState.CLOUD_CONNECTED
|
||||
|
||||
assert len(cl.iot._on_disconnect) == 2
|
||||
assert "async_setup" in str(cl.iot._on_disconnect[-1])
|
||||
|
@ -191,12 +198,12 @@ async def test_on_connect(hass: HomeAssistant, mock_cloud_fixture) -> None:
|
|||
await hass.async_block_till_done()
|
||||
|
||||
assert len(cloud_states) == 3
|
||||
assert cloud_states[-1] == cloud.CloudConnectionState.CLOUD_DISCONNECTED
|
||||
assert cloud_states[-1] == CloudConnectionState.CLOUD_DISCONNECTED
|
||||
|
||||
await cl.iot._on_disconnect[-1]()
|
||||
await hass.async_block_till_done()
|
||||
assert len(cloud_states) == 4
|
||||
assert cloud_states[-1] == cloud.CloudConnectionState.CLOUD_DISCONNECTED
|
||||
assert cloud_states[-1] == CloudConnectionState.CLOUD_DISCONNECTED
|
||||
|
||||
|
||||
async def test_remote_ui_url(hass: HomeAssistant, mock_cloud_fixture) -> None:
|
||||
|
@ -204,26 +211,26 @@ async def test_remote_ui_url(hass: HomeAssistant, mock_cloud_fixture) -> None:
|
|||
cl = hass.data[DATA_CLOUD]
|
||||
|
||||
# Not logged in
|
||||
with pytest.raises(cloud.CloudNotAvailable):
|
||||
cloud.async_remote_ui_url(hass)
|
||||
with pytest.raises(CloudNotAvailable):
|
||||
async_remote_ui_url(hass)
|
||||
|
||||
with patch.object(cloud, "async_is_logged_in", return_value=True):
|
||||
with patch("homeassistant.components.cloud.async_is_logged_in", return_value=True):
|
||||
# Remote not enabled
|
||||
with pytest.raises(cloud.CloudNotAvailable):
|
||||
cloud.async_remote_ui_url(hass)
|
||||
with pytest.raises(CloudNotAvailable):
|
||||
async_remote_ui_url(hass)
|
||||
|
||||
with patch.object(cl.remote, "connect"):
|
||||
await cl.client.prefs.async_update(remote_enabled=True)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
# No instance domain
|
||||
with pytest.raises(cloud.CloudNotAvailable):
|
||||
cloud.async_remote_ui_url(hass)
|
||||
with pytest.raises(CloudNotAvailable):
|
||||
async_remote_ui_url(hass)
|
||||
|
||||
# Remote finished initializing
|
||||
cl.client.prefs._prefs["remote_domain"] = "example.com"
|
||||
|
||||
assert cloud.async_remote_ui_url(hass) == "https://example.com"
|
||||
assert async_remote_ui_url(hass) == "https://example.com"
|
||||
|
||||
|
||||
async def test_async_get_or_create_cloudhook(
|
||||
|
|
|
@ -6,8 +6,10 @@ from unittest.mock import patch
|
|||
|
||||
import pytest
|
||||
|
||||
from homeassistant.components.cloud import DOMAIN
|
||||
import homeassistant.components.cloud.repairs as cloud_repairs
|
||||
from homeassistant.components.cloud.const import DOMAIN
|
||||
from homeassistant.components.cloud.repairs import (
|
||||
async_manage_legacy_subscription_issue,
|
||||
)
|
||||
from homeassistant.components.repairs import DOMAIN as REPAIRS_DOMAIN
|
||||
from homeassistant.core import HomeAssistant
|
||||
import homeassistant.helpers.issue_registry as ir
|
||||
|
@ -65,12 +67,12 @@ async def test_legacy_subscription_delete_issue_if_no_longer_legacy(
|
|||
issue_registry: ir.IssueRegistry,
|
||||
) -> None:
|
||||
"""Test that we delete the legacy subscription issue if no longer legacy."""
|
||||
cloud_repairs.async_manage_legacy_subscription_issue(hass, {"provider": "legacy"})
|
||||
async_manage_legacy_subscription_issue(hass, {"provider": "legacy"})
|
||||
assert issue_registry.async_get_issue(
|
||||
domain="cloud", issue_id="legacy_subscription"
|
||||
)
|
||||
|
||||
cloud_repairs.async_manage_legacy_subscription_issue(hass, {})
|
||||
async_manage_legacy_subscription_issue(hass, {})
|
||||
assert not issue_registry.async_get_issue(
|
||||
domain="cloud", issue_id="legacy_subscription"
|
||||
)
|
||||
|
@ -93,7 +95,7 @@ async def test_legacy_subscription_repair_flow(
|
|||
json={"url": "https://paypal.com"},
|
||||
)
|
||||
|
||||
cloud_repairs.async_manage_legacy_subscription_issue(hass, {"provider": "legacy"})
|
||||
async_manage_legacy_subscription_issue(hass, {"provider": "legacy"})
|
||||
repair_issue = issue_registry.async_get_issue(
|
||||
domain="cloud", issue_id="legacy_subscription"
|
||||
)
|
||||
|
@ -174,7 +176,7 @@ async def test_legacy_subscription_repair_flow_timeout(
|
|||
status=403,
|
||||
)
|
||||
|
||||
cloud_repairs.async_manage_legacy_subscription_issue(hass, {"provider": "legacy"})
|
||||
async_manage_legacy_subscription_issue(hass, {"provider": "legacy"})
|
||||
repair_issue = issue_registry.async_get_issue(
|
||||
domain="cloud", issue_id="legacy_subscription"
|
||||
)
|
||||
|
|
|
@ -10,7 +10,7 @@ import pytest
|
|||
from typing_extensions import AsyncGenerator
|
||||
|
||||
from homeassistant.components.assist_pipeline.pipeline import STORAGE_KEY
|
||||
from homeassistant.components.cloud import DOMAIN
|
||||
from homeassistant.components.cloud.const import DOMAIN
|
||||
from homeassistant.const import STATE_UNAVAILABLE, STATE_UNKNOWN
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.setup import async_setup_component
|
||||
|
|
|
@ -8,7 +8,7 @@ from unittest.mock import MagicMock
|
|||
from aiohttp import ClientError
|
||||
from hass_nabucasa.remote import CertificateStatus
|
||||
|
||||
from homeassistant.components.cloud import DOMAIN
|
||||
from homeassistant.components.cloud.const import DOMAIN
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.setup import async_setup_component
|
||||
|
||||
|
|
|
@ -12,7 +12,8 @@ from typing_extensions import AsyncGenerator
|
|||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.assist_pipeline.pipeline import STORAGE_KEY
|
||||
from homeassistant.components.cloud import DOMAIN, const, tts
|
||||
from homeassistant.components.cloud.const import DEFAULT_TTS_DEFAULT_VOICE, DOMAIN
|
||||
from homeassistant.components.cloud.tts import PLATFORM_SCHEMA, SUPPORT_LANGUAGES, Voice
|
||||
from homeassistant.components.media_player import (
|
||||
ATTR_MEDIA_CONTENT_ID,
|
||||
DOMAIN as DOMAIN_MP,
|
||||
|
@ -57,33 +58,30 @@ async def internal_url_mock(hass: HomeAssistant) -> None:
|
|||
|
||||
def test_default_exists() -> None:
|
||||
"""Test our default language exists."""
|
||||
assert const.DEFAULT_TTS_DEFAULT_VOICE[0] in TTS_VOICES
|
||||
assert (
|
||||
const.DEFAULT_TTS_DEFAULT_VOICE[1]
|
||||
in TTS_VOICES[const.DEFAULT_TTS_DEFAULT_VOICE[0]]
|
||||
)
|
||||
assert DEFAULT_TTS_DEFAULT_VOICE[0] in TTS_VOICES
|
||||
assert DEFAULT_TTS_DEFAULT_VOICE[1] in TTS_VOICES[DEFAULT_TTS_DEFAULT_VOICE[0]]
|
||||
|
||||
|
||||
def test_schema() -> None:
|
||||
"""Test schema."""
|
||||
assert "nl-NL" in tts.SUPPORT_LANGUAGES
|
||||
assert "nl-NL" in SUPPORT_LANGUAGES
|
||||
|
||||
processed = tts.PLATFORM_SCHEMA({"platform": "cloud", "language": "nl-NL"})
|
||||
processed = PLATFORM_SCHEMA({"platform": "cloud", "language": "nl-NL"})
|
||||
assert processed["gender"] == "female"
|
||||
|
||||
with pytest.raises(vol.Invalid):
|
||||
tts.PLATFORM_SCHEMA(
|
||||
PLATFORM_SCHEMA(
|
||||
{"platform": "cloud", "language": "non-existing", "gender": "female"}
|
||||
)
|
||||
|
||||
with pytest.raises(vol.Invalid):
|
||||
tts.PLATFORM_SCHEMA(
|
||||
PLATFORM_SCHEMA(
|
||||
{"platform": "cloud", "language": "nl-NL", "gender": "not-supported"}
|
||||
)
|
||||
|
||||
# Should not raise
|
||||
tts.PLATFORM_SCHEMA({"platform": "cloud", "language": "nl-NL", "gender": "female"})
|
||||
tts.PLATFORM_SCHEMA({"platform": "cloud"})
|
||||
PLATFORM_SCHEMA({"platform": "cloud", "language": "nl-NL", "gender": "female"})
|
||||
PLATFORM_SCHEMA({"platform": "cloud"})
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
|
@ -188,7 +186,7 @@ async def test_provider_properties(
|
|||
assert "nl-NL" in engine.supported_languages
|
||||
supported_voices = engine.async_get_supported_voices("nl-NL")
|
||||
assert supported_voices is not None
|
||||
assert tts.Voice("ColetteNeural", "ColetteNeural") in supported_voices
|
||||
assert Voice("ColetteNeural", "ColetteNeural") in supported_voices
|
||||
supported_voices = engine.async_get_supported_voices("missing_language")
|
||||
assert supported_voices is None
|
||||
|
||||
|
|
Loading…
Reference in New Issue