Reorganize HTTP component (#4575)
* Move HTTP to own folder * Break HTTP into middlewares * Lint * Split tests per middleware * Clean up HTTP tests * Make HomeAssistantViews more stateless * Lint * Make HTTP setup async
This commit is contained in:
parent
58b85b2e0e
commit
32ffd006fa
35 changed files with 1318 additions and 1084 deletions
|
@ -10,6 +10,8 @@ import logging
|
|||
import threading
|
||||
from contextlib import contextmanager
|
||||
|
||||
from aiohttp import web
|
||||
|
||||
from homeassistant import core as ha, loader
|
||||
from homeassistant.bootstrap import (
|
||||
setup_component, async_prepare_setup_component)
|
||||
|
@ -22,6 +24,9 @@ from homeassistant.const import (
|
|||
EVENT_STATE_CHANGED, EVENT_PLATFORM_DISCOVERED, ATTR_SERVICE,
|
||||
ATTR_DISCOVERED, SERVER_PORT)
|
||||
from homeassistant.components import sun, mqtt
|
||||
from homeassistant.components.http.auth import auth_middleware
|
||||
from homeassistant.components.http.const import (
|
||||
KEY_USE_X_FORWARDED_FOR, KEY_BANS_ENABLED)
|
||||
|
||||
_TEST_INSTANCE_PORT = SERVER_PORT
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
@ -210,13 +215,23 @@ def mock_http_component(hass):
|
|||
"""Store registered view."""
|
||||
if isinstance(view, type):
|
||||
# Instantiate the view, if needed
|
||||
view = view(hass)
|
||||
view = view()
|
||||
|
||||
hass.http.views[view.name] = view
|
||||
|
||||
hass.http.register_view = mock_register_view
|
||||
|
||||
|
||||
def mock_http_component_app(hass):
|
||||
"""Create an aiohttp.web.Application instance for testing."""
|
||||
hass.http.api_password = None
|
||||
app = web.Application(middlewares=[auth_middleware], loop=hass.loop)
|
||||
app['hass'] = hass
|
||||
app[KEY_USE_X_FORWARDED_FOR] = False
|
||||
app[KEY_BANS_ENABLED] = False
|
||||
return app
|
||||
|
||||
|
||||
def mock_mqtt_component(hass):
|
||||
"""Mock the MQTT component."""
|
||||
with mock.patch('homeassistant.components.mqtt.MQTT') as mock_mqtt:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue