Exemple #1
0
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")
Exemple #2
0
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"
Exemple #4
0
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")