Catch uncaught Alexa error (#24785)
parent
dce667fa07
commit
c1d0ac7b9d
|
@ -23,7 +23,7 @@ from homeassistant.components.google_assistant import helpers as google_helpers
|
|||
from .const import (
|
||||
DOMAIN, REQUEST_TIMEOUT, PREF_ENABLE_ALEXA, PREF_ENABLE_GOOGLE,
|
||||
PREF_GOOGLE_SECURE_DEVICES_PIN, InvalidTrustedNetworks,
|
||||
InvalidTrustedProxies, PREF_ALEXA_REPORT_STATE)
|
||||
InvalidTrustedProxies, PREF_ALEXA_REPORT_STATE, RequireRelink)
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
@ -388,7 +388,7 @@ async def websocket_update_prefs(hass, connection, msg):
|
|||
connection.send_error(msg['id'], 'alexa_timeout',
|
||||
'Timeout validating Alexa access token.')
|
||||
return
|
||||
except alexa_errors.NoTokenAvailable:
|
||||
except (alexa_errors.NoTokenAvailable, RequireRelink):
|
||||
connection.send_error(
|
||||
msg['id'], 'alexa_relink',
|
||||
'Please go to the Alexa app and re-link the Home Assistant '
|
||||
|
|
|
@ -12,7 +12,7 @@ from homeassistant.core import State
|
|||
from homeassistant.auth.providers import trusted_networks as tn_auth
|
||||
from homeassistant.components.cloud.const import (
|
||||
PREF_ENABLE_GOOGLE, PREF_ENABLE_ALEXA, PREF_GOOGLE_SECURE_DEVICES_PIN,
|
||||
DOMAIN)
|
||||
DOMAIN, RequireRelink)
|
||||
from homeassistant.components.google_assistant.helpers import (
|
||||
GoogleEntity)
|
||||
from homeassistant.components.alexa.entities import LightCapabilities
|
||||
|
@ -527,6 +527,44 @@ async def test_websocket_update_preferences(hass, hass_ws_client,
|
|||
assert setup_api[PREF_GOOGLE_SECURE_DEVICES_PIN] == '1234'
|
||||
|
||||
|
||||
async def test_websocket_update_preferences_require_relink(
|
||||
hass, hass_ws_client, aioclient_mock, setup_api, mock_cloud_login):
|
||||
"""Test updating preference requires relink."""
|
||||
client = await hass_ws_client(hass)
|
||||
|
||||
with patch('homeassistant.components.cloud.alexa_config.AlexaConfig'
|
||||
'.async_get_access_token',
|
||||
side_effect=RequireRelink):
|
||||
await client.send_json({
|
||||
'id': 5,
|
||||
'type': 'cloud/update_prefs',
|
||||
'alexa_report_state': True,
|
||||
})
|
||||
response = await client.receive_json()
|
||||
|
||||
assert not response['success']
|
||||
assert response['error']['code'] == 'alexa_relink'
|
||||
|
||||
|
||||
async def test_websocket_update_preferences_no_token(
|
||||
hass, hass_ws_client, aioclient_mock, setup_api, mock_cloud_login):
|
||||
"""Test updating preference no token available."""
|
||||
client = await hass_ws_client(hass)
|
||||
|
||||
with patch('homeassistant.components.cloud.alexa_config.AlexaConfig'
|
||||
'.async_get_access_token',
|
||||
side_effect=alexa_errors.NoTokenAvailable):
|
||||
await client.send_json({
|
||||
'id': 5,
|
||||
'type': 'cloud/update_prefs',
|
||||
'alexa_report_state': True,
|
||||
})
|
||||
response = await client.receive_json()
|
||||
|
||||
assert not response['success']
|
||||
assert response['error']['code'] == 'alexa_relink'
|
||||
|
||||
|
||||
async def test_enabling_webhook(hass, hass_ws_client, setup_api,
|
||||
mock_cloud_login):
|
||||
"""Test we call right code to enable webhooks."""
|
||||
|
|
Loading…
Reference in New Issue