mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
Allow hassio frontend development (#14675)
* Allow hassio frontend development * Fix tests
This commit is contained in:
parent
d36c7c3de7
commit
8c7f0669c6
@ -28,6 +28,15 @@ _LOGGER = logging.getLogger(__name__)
|
|||||||
DOMAIN = 'hassio'
|
DOMAIN = 'hassio'
|
||||||
DEPENDENCIES = ['http']
|
DEPENDENCIES = ['http']
|
||||||
|
|
||||||
|
CONF_FRONTEND_REPO = 'development_repo'
|
||||||
|
|
||||||
|
CONFIG_SCHEMA = vol.Schema({
|
||||||
|
vol.Optional(DOMAIN): vol.Schema({
|
||||||
|
vol.Optional(CONF_FRONTEND_REPO): cv.isdir,
|
||||||
|
}),
|
||||||
|
}, extra=vol.ALLOW_EXTRA)
|
||||||
|
|
||||||
|
|
||||||
DATA_HOMEASSISTANT_VERSION = 'hassio_hass_version'
|
DATA_HOMEASSISTANT_VERSION = 'hassio_hass_version'
|
||||||
HASSIO_UPDATE_INTERVAL = timedelta(minutes=55)
|
HASSIO_UPDATE_INTERVAL = timedelta(minutes=55)
|
||||||
|
|
||||||
@ -142,7 +151,13 @@ def async_setup(hass, config):
|
|||||||
try:
|
try:
|
||||||
host = os.environ['HASSIO']
|
host = os.environ['HASSIO']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
_LOGGER.error("No Hass.io supervisor detect")
|
_LOGGER.error("Missing HASSIO environment variable.")
|
||||||
|
return False
|
||||||
|
|
||||||
|
try:
|
||||||
|
os.environ['HASSIO_TOKEN']
|
||||||
|
except KeyError:
|
||||||
|
_LOGGER.error("Missing HASSIO_TOKEN environment variable.")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
websession = hass.helpers.aiohttp_client.async_get_clientsession()
|
websession = hass.helpers.aiohttp_client.async_get_clientsession()
|
||||||
@ -152,6 +167,13 @@ def async_setup(hass, config):
|
|||||||
_LOGGER.error("Not connected with Hass.io")
|
_LOGGER.error("Not connected with Hass.io")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
# This overrides the normal API call that would be forwarded
|
||||||
|
development_repo = config.get(DOMAIN, {}).get(CONF_FRONTEND_REPO)
|
||||||
|
if development_repo is not None:
|
||||||
|
hass.http.register_static_path(
|
||||||
|
'/api/hassio/app-es5',
|
||||||
|
os.path.join(development_repo, 'hassio/build-es5'), False)
|
||||||
|
|
||||||
hass.http.register_view(HassIOView(host, websession))
|
hass.http.register_view(HassIOView(host, websession))
|
||||||
|
|
||||||
if 'frontend' in hass.config.components:
|
if 'frontend' in hass.config.components:
|
||||||
|
@ -9,6 +9,12 @@ from homeassistant.components.hassio import async_check_config
|
|||||||
from tests.common import mock_coro
|
from tests.common import mock_coro
|
||||||
|
|
||||||
|
|
||||||
|
MOCK_ENVIRON = {
|
||||||
|
'HASSIO': '127.0.0.1',
|
||||||
|
'HASSIO_TOKEN': 'abcdefgh',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@asyncio.coroutine
|
@asyncio.coroutine
|
||||||
def test_setup_api_ping(hass, aioclient_mock):
|
def test_setup_api_ping(hass, aioclient_mock):
|
||||||
"""Test setup with API ping."""
|
"""Test setup with API ping."""
|
||||||
@ -18,7 +24,7 @@ def test_setup_api_ping(hass, aioclient_mock):
|
|||||||
"http://127.0.0.1/homeassistant/info", json={
|
"http://127.0.0.1/homeassistant/info", json={
|
||||||
'result': 'ok', 'data': {'last_version': '10.0'}})
|
'result': 'ok', 'data': {'last_version': '10.0'}})
|
||||||
|
|
||||||
with patch.dict(os.environ, {'HASSIO': "127.0.0.1"}):
|
with patch.dict(os.environ, MOCK_ENVIRON):
|
||||||
result = yield from async_setup_component(hass, 'hassio', {})
|
result = yield from async_setup_component(hass, 'hassio', {})
|
||||||
assert result
|
assert result
|
||||||
|
|
||||||
@ -38,7 +44,7 @@ def test_setup_api_push_api_data(hass, aioclient_mock):
|
|||||||
aioclient_mock.post(
|
aioclient_mock.post(
|
||||||
"http://127.0.0.1/homeassistant/options", json={'result': 'ok'})
|
"http://127.0.0.1/homeassistant/options", json={'result': 'ok'})
|
||||||
|
|
||||||
with patch.dict(os.environ, {'HASSIO': "127.0.0.1"}):
|
with patch.dict(os.environ, MOCK_ENVIRON):
|
||||||
result = yield from async_setup_component(hass, 'hassio', {
|
result = yield from async_setup_component(hass, 'hassio', {
|
||||||
'http': {
|
'http': {
|
||||||
'api_password': "123456",
|
'api_password': "123456",
|
||||||
@ -66,7 +72,7 @@ def test_setup_api_push_api_data_server_host(hass, aioclient_mock):
|
|||||||
aioclient_mock.post(
|
aioclient_mock.post(
|
||||||
"http://127.0.0.1/homeassistant/options", json={'result': 'ok'})
|
"http://127.0.0.1/homeassistant/options", json={'result': 'ok'})
|
||||||
|
|
||||||
with patch.dict(os.environ, {'HASSIO': "127.0.0.1"}):
|
with patch.dict(os.environ, MOCK_ENVIRON):
|
||||||
result = yield from async_setup_component(hass, 'hassio', {
|
result = yield from async_setup_component(hass, 'hassio', {
|
||||||
'http': {
|
'http': {
|
||||||
'api_password': "123456",
|
'api_password': "123456",
|
||||||
@ -95,7 +101,7 @@ def test_setup_api_push_api_data_default(hass, aioclient_mock):
|
|||||||
aioclient_mock.post(
|
aioclient_mock.post(
|
||||||
"http://127.0.0.1/homeassistant/options", json={'result': 'ok'})
|
"http://127.0.0.1/homeassistant/options", json={'result': 'ok'})
|
||||||
|
|
||||||
with patch.dict(os.environ, {'HASSIO': "127.0.0.1"}):
|
with patch.dict(os.environ, MOCK_ENVIRON):
|
||||||
result = yield from async_setup_component(hass, 'hassio', {
|
result = yield from async_setup_component(hass, 'hassio', {
|
||||||
'http': {},
|
'http': {},
|
||||||
'hassio': {}
|
'hassio': {}
|
||||||
@ -119,7 +125,7 @@ def test_setup_core_push_timezone(hass, aioclient_mock):
|
|||||||
aioclient_mock.post(
|
aioclient_mock.post(
|
||||||
"http://127.0.0.1/supervisor/options", json={'result': 'ok'})
|
"http://127.0.0.1/supervisor/options", json={'result': 'ok'})
|
||||||
|
|
||||||
with patch.dict(os.environ, {'HASSIO': "127.0.0.1"}):
|
with patch.dict(os.environ, MOCK_ENVIRON):
|
||||||
result = yield from async_setup_component(hass, 'hassio', {
|
result = yield from async_setup_component(hass, 'hassio', {
|
||||||
'hassio': {},
|
'hassio': {},
|
||||||
'homeassistant': {
|
'homeassistant': {
|
||||||
@ -143,7 +149,7 @@ def test_setup_hassio_no_additional_data(hass, aioclient_mock):
|
|||||||
aioclient_mock.get(
|
aioclient_mock.get(
|
||||||
"http://127.0.0.1/homeassistant/info", json={'result': 'ok'})
|
"http://127.0.0.1/homeassistant/info", json={'result': 'ok'})
|
||||||
|
|
||||||
with patch.dict(os.environ, {'HASSIO': "127.0.0.1"}), \
|
with patch.dict(os.environ, MOCK_ENVIRON), \
|
||||||
patch.dict(os.environ, {'HASSIO_TOKEN': "123456"}):
|
patch.dict(os.environ, {'HASSIO_TOKEN': "123456"}):
|
||||||
result = yield from async_setup_component(hass, 'hassio', {
|
result = yield from async_setup_component(hass, 'hassio', {
|
||||||
'hassio': {},
|
'hassio': {},
|
||||||
@ -165,7 +171,7 @@ def test_fail_setup_without_environ_var(hass):
|
|||||||
@asyncio.coroutine
|
@asyncio.coroutine
|
||||||
def test_fail_setup_cannot_connect(hass):
|
def test_fail_setup_cannot_connect(hass):
|
||||||
"""Fail setup if cannot connect."""
|
"""Fail setup if cannot connect."""
|
||||||
with patch.dict(os.environ, {'HASSIO': "127.0.0.1"}), \
|
with patch.dict(os.environ, MOCK_ENVIRON), \
|
||||||
patch('homeassistant.components.hassio.HassIO.is_connected',
|
patch('homeassistant.components.hassio.HassIO.is_connected',
|
||||||
Mock(return_value=mock_coro(None))):
|
Mock(return_value=mock_coro(None))):
|
||||||
result = yield from async_setup_component(hass, 'hassio', {})
|
result = yield from async_setup_component(hass, 'hassio', {})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user