Skip to content
Snippets Groups Projects
Commit dd45b5e0 authored by Paulus Schoutsen's avatar Paulus Schoutsen
Browse files

Merge pull request #1402 from kk7ds/fix-mfi-connect-exception

Fix mFi error handling in setup_platform
parents f92802fd 37e5b989
No related branches found
No related tags found
No related merge requests found
...@@ -6,6 +6,8 @@ https://home-assistant.io/components/sensor.mfi/ ...@@ -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): ...@@ -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/ ...@@ -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): ...@@ -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. ...@@ -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): ...@@ -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)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment