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

Fix mFi error handling in setup_platform
pull/1403/head
Paulus Schoutsen 2016-02-25 17:06:03 -08:00
commit dd45b5e0b1
3 changed files with 19 additions and 4 deletions

View File

@ -6,6 +6,8 @@ https://home-assistant.io/components/sensor.mfi/
"""
import logging
import requests
from homeassistant.components.sensor import DOMAIN
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME, TEMP_CELCIUS
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)
password = config.get(CONF_PASSWORD)
from mficlient.client import MFiClient
from mficlient.client import FailedToLogin, MFiClient
try:
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))
return False

View File

@ -8,6 +8,8 @@ https://home-assistant.io/components/switch.mfi/
"""
import logging
import requests
from homeassistant.components.switch import DOMAIN, SwitchDevice
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
from homeassistant.helpers import validate_config
@ -41,11 +43,11 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
username = config.get('username')
password = config.get('password')
from mficlient.client import MFiClient
from mficlient.client import FailedToLogin, MFiClient
try:
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))
return False

View File

@ -7,6 +7,8 @@ Tests mFi sensor.
import unittest
import unittest.mock as mock
import requests
import homeassistant.components.sensor as sensor
import homeassistant.components.sensor.mfi as mfi
from homeassistant.const import TEMP_CELCIUS
@ -54,6 +56,15 @@ class TestMfiSensorSetup(unittest.TestCase):
dict(self.GOOD_CONFIG),
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')
def test_setup_minimum(self, mock_client):
config = dict(self.GOOD_CONFIG)