async def test_approve(coresys: CoreSys, dns_query: AsyncMock): """Test approve existing DNS Server IPv6 error issues.""" dns_server_ipv6_errors = CheckDNSServerIPv6Errors(coresys) coresys.core.state = CoreState.RUNNING assert dns_server_ipv6_errors.dns_servers == ["dns://192.168.30.1"] dns_query.side_effect = DNSError(4, "Domain name not found") assert (await dns_server_ipv6_errors.approve_check( reference="dns://1.1.1.1") is False) dns_query.assert_not_called() assert (await dns_server_ipv6_errors.approve_check( reference="dns://192.168.30.1") is True) dns_query.assert_called_once_with("_checkdns.home-assistant.io", "AAAA") dns_query.reset_mock() dns_query.side_effect = DNSError( 1, "DNS server returned answer with no data") assert (await dns_server_ipv6_errors.approve_check( reference="dns://192.168.30.1") is False) dns_query.assert_called_once_with("_checkdns.home-assistant.io", "AAAA") dns_query.reset_mock() dns_query.side_effect = None assert (await dns_server_ipv6_errors.approve_check( reference="dns://192.168.30.1") is False) dns_query.assert_called_once_with("_checkdns.home-assistant.io", "AAAA")
async def test_options_error(hass: HomeAssistant, p_input: dict[str, str]) -> None: """Test validate url fails in options.""" entry = MockConfigEntry( domain=DOMAIN, unique_id="12345", data=p_input, ) entry.add_to_hass(hass) result = await hass.config_entries.options.async_init(entry.entry_id) with patch( "homeassistant.components.dnsip.config_flow.aiodns.DNSResolver", side_effect=DNSError("Did not find"), ): result2 = await hass.config_entries.options.async_configure( result["flow_id"], { CONF_RESOLVER: "192.168.200.34", CONF_RESOLVER_IPV6: "2001:4860:4860::8888", }, ) await hass.async_block_till_done() assert result2["type"] == RESULT_TYPE_FORM assert result2["step_id"] == "init" if p_input[CONF_IPV4]: assert result2["errors"] == {"resolver": "invalid_resolver"} if p_input[CONF_IPV6]: assert result2["errors"] == {"resolver_ipv6": "invalid_resolver"}
async def test_check(coresys: CoreSys, dns_query: AsyncMock): """Test check for DNS server failures.""" dns_server_failures = CheckDNSServerFailures(coresys) coresys.core.state = CoreState.RUNNING coresys.plugins.dns.servers = ["dns://1.1.1.1"] assert dns_server_failures.dns_servers == [ "dns://1.1.1.1", "dns://192.168.30.1", ] assert len(coresys.resolution.issues) == 0 await dns_server_failures.run_check.__wrapped__(dns_server_failures) assert dns_query.call_args_list == [ call("_checkdns.home-assistant.io", "A"), call("_checkdns.home-assistant.io", "A"), ] assert len(coresys.resolution.issues) == 0 dns_query.reset_mock() coresys.plugins.dns.servers = [] assert dns_server_failures.dns_servers == ["dns://192.168.30.1"] dns_query.side_effect = DNSError() await dns_server_failures.run_check.__wrapped__(dns_server_failures) dns_query.assert_called_once_with("_checkdns.home-assistant.io", "A") assert len(coresys.resolution.issues) == 1 assert coresys.resolution.issues[0].type is IssueType.DNS_SERVER_FAILED assert coresys.resolution.issues[0].context is ContextType.DNS_SERVER assert coresys.resolution.issues[0].reference == "dns://192.168.30.1"
async def test_check(coresys: CoreSys, dns_query: AsyncMock): """Test check for DNS server IPv6 errors.""" dns_server_ipv6_errors = CheckDNSServerIPv6Errors(coresys) coresys.core.state = CoreState.RUNNING coresys.plugins.dns.servers = ["dns://1.1.1.1"] assert dns_server_ipv6_errors.dns_servers == [ "dns://1.1.1.1", "dns://192.168.30.1", ] assert len(coresys.resolution.issues) == 0 await dns_server_ipv6_errors.run_check.__wrapped__(dns_server_ipv6_errors) assert dns_query.call_args_list == [ call("_checkdns.home-assistant.io", "AAAA"), call("_checkdns.home-assistant.io", "AAAA"), ] assert len(coresys.resolution.issues) == 0 dns_query.reset_mock() coresys.plugins.dns.servers = [] assert dns_server_ipv6_errors.dns_servers == ["dns://192.168.30.1"] dns_query.side_effect = DNSError( 1, "DNS server returned answer with no data") await dns_server_ipv6_errors.run_check.__wrapped__(dns_server_ipv6_errors) dns_query.assert_called_once_with("_checkdns.home-assistant.io", "AAAA") assert len(coresys.resolution.issues) == 0 dns_query.reset_mock() dns_query.side_effect = DNSError(4, "Domain name not found") await dns_server_ipv6_errors.run_check.__wrapped__(dns_server_ipv6_errors) dns_query.assert_called_once_with("_checkdns.home-assistant.io", "AAAA") assert len(coresys.resolution.issues) == 1 assert coresys.resolution.issues[0].type is IssueType.DNS_SERVER_IPV6_ERROR assert coresys.resolution.issues[0].context is ContextType.DNS_SERVER assert coresys.resolution.issues[0].reference == "dns://192.168.30.1"
async def test_form_error(hass: HomeAssistant) -> None: """Test validate url fails.""" result = await hass.config_entries.flow.async_init( DOMAIN, context={"source": config_entries.SOURCE_USER}) with patch( "homeassistant.components.dnsip.config_flow.aiodns.DNSResolver", side_effect=DNSError("Did not find"), ): result2 = await hass.config_entries.flow.async_configure( result["flow_id"], { CONF_HOSTNAME: "home-assistant.io", }, ) await hass.async_block_till_done() assert result2["type"] == RESULT_TYPE_FORM assert result2["step_id"] == "user" assert result2["errors"] == {"base": "invalid_hostname"}
async def test_approve(coresys: CoreSys, dns_query: AsyncMock): """Test approve existing DNS Server failure issues.""" dns_server_failures = CheckDNSServerFailures(coresys) coresys.core.state = CoreState.RUNNING assert dns_server_failures.dns_servers == ["dns://192.168.30.1"] dns_query.side_effect = DNSError() assert await dns_server_failures.approve_check(reference="dns://1.1.1.1" ) is False dns_query.assert_not_called() assert (await dns_server_failures.approve_check( reference="dns://192.168.30.1") is True) dns_query.assert_called_once_with("_checkdns.home-assistant.io", "A") dns_query.reset_mock() dns_query.side_effect = None assert (await dns_server_failures.approve_check( reference="dns://192.168.30.1") is False) dns_query.assert_called_once_with("_checkdns.home-assistant.io", "A")