mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Merge pull request #1402 from kk7ds/fix-mfi-connect-exception
Fix mFi error handling in setup_platform
This commit is contained in:
commit
dd45b5e0b1
@ -6,6 +6,8 @@ https://home-assistant.io/components/sensor.mfi/
|
|||||||
"""
|
"""
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
from homeassistant.components.sensor import DOMAIN
|
from homeassistant.components.sensor import DOMAIN
|
||||||
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME, TEMP_CELCIUS
|
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME, TEMP_CELCIUS
|
||||||
from homeassistant.helpers import validate_config
|
from homeassistant.helpers import validate_config
|
||||||
@ -48,11 +50,11 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
|||||||
username = config.get(CONF_USERNAME)
|
username = config.get(CONF_USERNAME)
|
||||||
password = config.get(CONF_PASSWORD)
|
password = config.get(CONF_PASSWORD)
|
||||||
|
|
||||||
from mficlient.client import MFiClient
|
from mficlient.client import FailedToLogin, MFiClient
|
||||||
|
|
||||||
try:
|
try:
|
||||||
client = MFiClient(host, username, password, port=port)
|
client = MFiClient(host, username, password, port=port)
|
||||||
except client.FailedToLogin as ex:
|
except (FailedToLogin, requests.exceptions.ConnectionError) as ex:
|
||||||
_LOGGER.error('Unable to connect to mFi: %s', str(ex))
|
_LOGGER.error('Unable to connect to mFi: %s', str(ex))
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -8,6 +8,8 @@ https://home-assistant.io/components/switch.mfi/
|
|||||||
"""
|
"""
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
from homeassistant.components.switch import DOMAIN, SwitchDevice
|
from homeassistant.components.switch import DOMAIN, SwitchDevice
|
||||||
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
|
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
|
||||||
from homeassistant.helpers import validate_config
|
from homeassistant.helpers import validate_config
|
||||||
@ -41,11 +43,11 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
|||||||
username = config.get('username')
|
username = config.get('username')
|
||||||
password = config.get('password')
|
password = config.get('password')
|
||||||
|
|
||||||
from mficlient.client import MFiClient
|
from mficlient.client import FailedToLogin, MFiClient
|
||||||
|
|
||||||
try:
|
try:
|
||||||
client = MFiClient(host, username, password, port=port)
|
client = MFiClient(host, username, password, port=port)
|
||||||
except client.FailedToLogin as ex:
|
except (FailedToLogin, requests.exceptions.ConnectionError) as ex:
|
||||||
_LOGGER.error('Unable to connect to mFi: %s', str(ex))
|
_LOGGER.error('Unable to connect to mFi: %s', str(ex))
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -7,6 +7,8 @@ Tests mFi sensor.
|
|||||||
import unittest
|
import unittest
|
||||||
import unittest.mock as mock
|
import unittest.mock as mock
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
import homeassistant.components.sensor as sensor
|
import homeassistant.components.sensor as sensor
|
||||||
import homeassistant.components.sensor.mfi as mfi
|
import homeassistant.components.sensor.mfi as mfi
|
||||||
from homeassistant.const import TEMP_CELCIUS
|
from homeassistant.const import TEMP_CELCIUS
|
||||||
@ -54,6 +56,15 @@ class TestMfiSensorSetup(unittest.TestCase):
|
|||||||
dict(self.GOOD_CONFIG),
|
dict(self.GOOD_CONFIG),
|
||||||
None))
|
None))
|
||||||
|
|
||||||
|
@mock.patch('mficlient.client')
|
||||||
|
def test_setup_failed_connect(self, mock_client):
|
||||||
|
mock_client.FailedToLogin = Exception()
|
||||||
|
mock_client.MFiClient.side_effect = requests.exceptions.ConnectionError
|
||||||
|
self.assertFalse(
|
||||||
|
self.PLATFORM.setup_platform(self.hass,
|
||||||
|
dict(self.GOOD_CONFIG),
|
||||||
|
None))
|
||||||
|
|
||||||
@mock.patch('mficlient.client.MFiClient')
|
@mock.patch('mficlient.client.MFiClient')
|
||||||
def test_setup_minimum(self, mock_client):
|
def test_setup_minimum(self, mock_client):
|
||||||
config = dict(self.GOOD_CONFIG)
|
config = dict(self.GOOD_CONFIG)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user