mirror of https://github.com/home-assistant/core
66 lines
2.2 KiB
Python
66 lines
2.2 KiB
Python
"""The tests for http static files."""
|
|
|
|
from http import HTTPStatus
|
|
from pathlib import Path
|
|
|
|
from aiohttp.test_utils import TestClient
|
|
import pytest
|
|
|
|
from homeassistant.components.http import StaticPathConfig
|
|
from homeassistant.components.http.static import CachingStaticResource
|
|
from homeassistant.const import EVENT_HOMEASSISTANT_START
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.helpers.http import KEY_ALLOW_CONFIGURED_CORS
|
|
from homeassistant.setup import async_setup_component
|
|
|
|
from tests.typing import ClientSessionGenerator
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
async def http(hass: HomeAssistant) -> None:
|
|
"""Ensure http is set up."""
|
|
assert await async_setup_component(hass, "http", {})
|
|
hass.bus.async_fire(EVENT_HOMEASSISTANT_START)
|
|
await hass.async_block_till_done()
|
|
|
|
|
|
@pytest.fixture
|
|
async def mock_http_client(hass: HomeAssistant, aiohttp_client: ClientSessionGenerator):
|
|
"""Start the Home Assistant HTTP component."""
|
|
return await aiohttp_client(hass.http.app, server_kwargs={"skip_url_asserts": True})
|
|
|
|
|
|
async def test_static_resource_show_index(
|
|
hass: HomeAssistant, mock_http_client: TestClient, tmp_path: Path
|
|
) -> None:
|
|
"""Test static resource will return a directory index."""
|
|
app = hass.http.app
|
|
|
|
resource = CachingStaticResource("/", tmp_path, show_index=True)
|
|
app.router.register_resource(resource)
|
|
app[KEY_ALLOW_CONFIGURED_CORS](resource)
|
|
|
|
resp = await mock_http_client.get("/")
|
|
assert resp.status == 200
|
|
assert resp.content_type == "text/html"
|
|
|
|
|
|
async def test_async_register_static_paths(
|
|
hass: HomeAssistant, hass_client: ClientSessionGenerator
|
|
) -> None:
|
|
"""Test registering multiple static paths."""
|
|
assert await async_setup_component(hass, "frontend", {})
|
|
path = str(Path(__file__).parent)
|
|
await hass.http.async_register_static_paths(
|
|
[
|
|
StaticPathConfig("/something", path),
|
|
StaticPathConfig("/something_else", path),
|
|
]
|
|
)
|
|
|
|
client = await hass_client()
|
|
resp = await client.get("/something/__init__.py")
|
|
assert resp.status == HTTPStatus.OK
|
|
resp = await client.get("/something_else/__init__.py")
|
|
assert resp.status == HTTPStatus.OK
|