"""Tests for init module.""" import http import time from unittest.mock import MagicMock import pytest from homeassistant.components.myuplink.const import DOMAIN, OAUTH2_TOKEN from homeassistant.config_entries import ConfigEntryState from homeassistant.core import HomeAssistant from homeassistant.helpers import device_registry as dr from . import setup_integration from tests.common import MockConfigEntry, load_fixture from tests.test_util.aiohttp import AiohttpClientMocker async def test_load_unload_entry( hass: HomeAssistant, mock_myuplink_client: MagicMock, mock_config_entry: MockConfigEntry, ) -> None: """Test load and unload entry.""" await setup_integration(hass, mock_config_entry) entry = hass.config_entries.async_entries(DOMAIN)[0] assert entry.state is ConfigEntryState.LOADED await hass.config_entries.async_remove(entry.entry_id) await hass.async_block_till_done() assert entry.state is ConfigEntryState.NOT_LOADED @pytest.mark.parametrize( ("expires_at", "status", "expected_state"), [ ( time.time() - 3600, http.HTTPStatus.UNAUTHORIZED, ConfigEntryState.SETUP_ERROR, ), ( time.time() - 3600, http.HTTPStatus.INTERNAL_SERVER_ERROR, ConfigEntryState.SETUP_RETRY, ), ], ids=["unauthorized", "internal_server_error"], ) async def test_expired_token_refresh_failure( hass: HomeAssistant, mock_config_entry: MockConfigEntry, aioclient_mock: AiohttpClientMocker, status: http.HTTPStatus, expected_state: ConfigEntryState, ) -> None: """Test failure while refreshing token with a transient error.""" aioclient_mock.clear_requests() aioclient_mock.post( OAUTH2_TOKEN, status=status, ) await setup_integration(hass, mock_config_entry) assert mock_config_entry.state is expected_state @pytest.mark.parametrize( "load_systems_file", [load_fixture("systems.json", DOMAIN)], ) async def test_devices_created_count( hass: HomeAssistant, device_registry: dr.DeviceRegistry, mock_myuplink_client: MagicMock, mock_config_entry: MockConfigEntry, ) -> None: """Test that one device is created.""" await setup_integration(hass, mock_config_entry) assert len(device_registry.devices) == 1 async def test_devices_multiple_created_count( hass: HomeAssistant, device_registry: dr.DeviceRegistry, mock_myuplink_client: MagicMock, mock_config_entry: MockConfigEntry, ) -> None: """Test that multiple device are created.""" await setup_integration(hass, mock_config_entry) assert len(device_registry.devices) == 2