"""Tests for the Tautulli integration.""" from unittest.mock import AsyncMock, patch from homeassistant.components.tautulli.const import CONF_MONITORED_USERS, DOMAIN from homeassistant.const import ( CONF_API_KEY, CONF_HOST, CONF_MONITORED_CONDITIONS, CONF_PATH, CONF_PORT, CONF_SSL, CONF_URL, CONF_VERIFY_SSL, CONTENT_TYPE_JSON, ) from homeassistant.core import HomeAssistant from tests.common import MockConfigEntry, load_fixture from tests.test_util.aiohttp import AiohttpClientMocker API_KEY = "abcd" URL = "http://1.2.3.4:8181/test" NAME = "Tautulli" SSL = False VERIFY_SSL = True CONF_DATA = { CONF_API_KEY: API_KEY, CONF_URL: URL, CONF_VERIFY_SSL: VERIFY_SSL, } CONF_IMPORT_DATA = { CONF_API_KEY: API_KEY, CONF_HOST: "1.2.3.4", CONF_MONITORED_CONDITIONS: ["Stream count"], CONF_MONITORED_USERS: ["test"], CONF_PORT: "8181", CONF_PATH: "/test", CONF_SSL: SSL, CONF_VERIFY_SSL: VERIFY_SSL, } DEFAULT_USERS = [{11111111: {"enabled": False}, 22222222: {"enabled": False}}] SELECTED_USERNAMES = ["user1"] def patch_config_flow_tautulli(mocked_tautulli) -> AsyncMock: """Mock Tautulli config flow.""" return patch( "homeassistant.components.tautulli.config_flow.PyTautulli.async_get_server_info", return_value=mocked_tautulli, ) def mock_connection( aioclient_mock: AiohttpClientMocker, url: str = URL, invalid_auth: bool = False, ) -> None: """Mock Tautulli connection.""" url = f"http://{url}/api/v2?apikey={API_KEY}" if invalid_auth: aioclient_mock.get( f"{url}&cmd=get_activity", text=load_fixture("tautulli/get_activity.json"), headers={"Content-Type": CONTENT_TYPE_JSON}, ) return aioclient_mock.get( f"{url}&cmd=get_activity", text=load_fixture("tautulli/get_activity.json"), headers={"Content-Type": CONTENT_TYPE_JSON}, ) aioclient_mock.get( f"{url}&cmd=get_home_stats", text=load_fixture("tautulli/get_home_stats.json"), headers={"Content-Type": CONTENT_TYPE_JSON}, ) aioclient_mock.get( f"{url}&cmd=get_users", text=load_fixture("tautulli/get_users.json"), headers={"Content-Type": CONTENT_TYPE_JSON}, ) async def setup_integration( hass: HomeAssistant, aioclient_mock: AiohttpClientMocker, url: str = URL, api_key: str = API_KEY, unique_id: str = None, skip_entry_setup: bool = False, invalid_auth: bool = False, ) -> MockConfigEntry: """Set up the Tautulli integration in Home Assistant.""" entry = MockConfigEntry( domain=DOMAIN, unique_id=unique_id, data={ CONF_URL: url, CONF_VERIFY_SSL: VERIFY_SSL, CONF_API_KEY: api_key, }, options={ CONF_MONITORED_USERS: DEFAULT_USERS, }, ) entry.add_to_hass(hass) mock_connection( aioclient_mock, url=url, invalid_auth=invalid_auth, ) if not skip_entry_setup: await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() return entry