hass-core/tests/components/http/test_static.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

66 lines
2.2 KiB
Python
Raw Normal View History

"""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