core/tests/components/google_assistant/test_init.py

76 lines
2.1 KiB
Python

"""The tests for google-assistant init."""
from http import HTTPStatus
from homeassistant.components import google_assistant as ga
from homeassistant.core import Context, HomeAssistant
from homeassistant.setup import async_setup_component
from .test_http import DUMMY_CONFIG
from tests.common import MockConfigEntry
from tests.test_util.aiohttp import AiohttpClientMocker
async def test_import(hass: HomeAssistant) -> None:
"""Test import."""
await async_setup_component(
hass,
ga.DOMAIN,
{"google_assistant": DUMMY_CONFIG},
)
entries = hass.config_entries.async_entries("google_assistant")
assert len(entries) == 1
assert entries[0].data[ga.const.CONF_PROJECT_ID] == "1234"
async def test_import_changed(hass: HomeAssistant) -> None:
"""Test import with changed project id."""
old_entry = MockConfigEntry(
domain=ga.DOMAIN, data={ga.const.CONF_PROJECT_ID: "4321"}, source="import"
)
old_entry.add_to_hass(hass)
await async_setup_component(
hass,
ga.DOMAIN,
{"google_assistant": DUMMY_CONFIG},
)
await hass.async_block_till_done()
entries = hass.config_entries.async_entries("google_assistant")
assert len(entries) == 1
assert entries[0].data[ga.const.CONF_PROJECT_ID] == "1234"
async def test_request_sync_service(
aioclient_mock: AiohttpClientMocker, hass: HomeAssistant
) -> None:
"""Test that it posts to the request_sync url."""
aioclient_mock.post(
ga.const.HOMEGRAPH_TOKEN_URL,
status=HTTPStatus.OK,
json={"access_token": "1234", "expires_in": 3600},
)
aioclient_mock.post(ga.const.REQUEST_SYNC_BASE_URL, status=HTTPStatus.OK)
await async_setup_component(
hass,
"google_assistant",
{"google_assistant": DUMMY_CONFIG},
)
assert aioclient_mock.call_count == 0
await hass.services.async_call(
ga.const.DOMAIN,
ga.const.SERVICE_REQUEST_SYNC,
blocking=True,
context=Context(user_id="123"),
)
assert aioclient_mock.call_count == 2 # token + request