Rename dns checks to fit pattern (#3811)

* Rename dns checks to fit pattern

* Missed a patch reference
This commit is contained in:
Mike Degatano 2022-08-23 07:54:22 -04:00 committed by GitHub
parent f4811a0243
commit cbddca2658
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 58 additions and 77 deletions

View File

@ -15,11 +15,11 @@ from .base import CheckBase
def setup(coresys: CoreSys) -> CheckBase:
"""Check setup function."""
return CheckDNSServerFailures(coresys)
return CheckDNSServer(coresys)
class CheckDNSServerFailures(CheckBase):
"""CheckDNSServerFailures class for check."""
class CheckDNSServer(CheckBase):
"""CheckDNSServer class for check."""
@Job(
conditions=[JobCondition.INTERNET_SYSTEM],

View File

@ -15,11 +15,11 @@ from .base import CheckBase
def setup(coresys: CoreSys) -> CheckBase:
"""Check setup function."""
return CheckDNSServerIPv6Errors(coresys)
return CheckDNSServerIPv6(coresys)
class CheckDNSServerIPv6Errors(CheckBase):
"""CheckDNSServerIPv6Errors class for check."""
class CheckDNSServerIPv6(CheckBase):
"""CheckDNSServerIPv6 class for check."""
@Job(
conditions=[JobCondition.INTERNET_SYSTEM],

View File

@ -15,10 +15,10 @@ from supervisor.resolution.validate import get_valid_modules
def fixture_mock_dns_query():
"""Mock aiodns query."""
with patch(
"supervisor.resolution.checks.dns_server_failure.DNSResolver.query",
"supervisor.resolution.checks.dns_server.DNSResolver.query",
new_callable=AsyncMock,
), patch(
"supervisor.resolution.checks.dns_server_ipv6_error.DNSResolver.query",
"supervisor.resolution.checks.dns_server_ipv6.DNSResolver.query",
new_callable=AsyncMock,
):
yield

View File

@ -6,7 +6,7 @@ import pytest
from supervisor.const import CoreState
from supervisor.coresys import CoreSys
from supervisor.resolution.checks.dns_server_failure import CheckDNSServerFailures
from supervisor.resolution.checks.dns_server import CheckDNSServer
from supervisor.resolution.const import ContextType, IssueType
@ -14,7 +14,7 @@ from supervisor.resolution.const import ContextType, IssueType
async def fixture_dns_query() -> AsyncMock:
"""Mock aiodns query."""
with patch(
"supervisor.resolution.checks.dns_server_failure.DNSResolver.query",
"supervisor.resolution.checks.dns_server.DNSResolver.query",
new_callable=AsyncMock,
) as dns_query:
yield dns_query
@ -22,24 +22,24 @@ async def fixture_dns_query() -> AsyncMock:
async def test_base(coresys: CoreSys):
"""Test check basics."""
dns_server_failures = CheckDNSServerFailures(coresys)
assert dns_server_failures.slug == "dns_server_failure"
assert dns_server_failures.enabled
dns_server = CheckDNSServer(coresys)
assert dns_server.slug == "dns_server"
assert dns_server.enabled
async def test_check(coresys: CoreSys, dns_query: AsyncMock):
"""Test check for DNS server failures."""
dns_server_failures = CheckDNSServerFailures(coresys)
dns_server = CheckDNSServer(coresys)
coresys.core.state = CoreState.RUNNING
coresys.plugins.dns.servers = ["dns://1.1.1.1"]
assert dns_server_failures.dns_servers == [
assert dns_server.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)
await dns_server.run_check.__wrapped__(dns_server)
assert dns_query.call_args_list == [
call("_checkdns.home-assistant.io", "A"),
call("_checkdns.home-assistant.io", "A"),
@ -48,10 +48,10 @@ async def test_check(coresys: CoreSys, dns_query: AsyncMock):
dns_query.reset_mock()
coresys.plugins.dns.servers = []
assert dns_server_failures.dns_servers == ["dns://192.168.30.1"]
assert dns_server.dns_servers == ["dns://192.168.30.1"]
dns_query.side_effect = DNSError()
await dns_server_failures.run_check.__wrapped__(dns_server_failures)
await dns_server.run_check.__wrapped__(dns_server)
dns_query.assert_called_once_with("_checkdns.home-assistant.io", "A")
assert len(coresys.resolution.issues) == 1
@ -62,53 +62,49 @@ async def test_check(coresys: CoreSys, dns_query: AsyncMock):
async def test_approve(coresys: CoreSys, dns_query: AsyncMock):
"""Test approve existing DNS Server failure issues."""
dns_server_failures = CheckDNSServerFailures(coresys)
dns_server = CheckDNSServer(coresys)
coresys.core.state = CoreState.RUNNING
assert dns_server_failures.dns_servers == ["dns://192.168.30.1"]
assert dns_server.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
assert await dns_server.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
)
assert await dns_server.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
)
assert await dns_server.approve_check(reference="dns://192.168.30.1") is False
dns_query.assert_called_once_with("_checkdns.home-assistant.io", "A")
async def test_did_run(coresys: CoreSys):
"""Test that the check ran as expected."""
dns_server_failures = CheckDNSServerFailures(coresys)
should_run = dns_server_failures.states
dns_server = CheckDNSServer(coresys)
should_run = dns_server.states
should_not_run = [state for state in CoreState if state not in should_run]
assert should_run == [CoreState.RUNNING]
assert len(should_not_run) != 0
with patch.object(CheckDNSServerFailures, "run_check", return_value=None) as check:
with patch.object(CheckDNSServer, "run_check", return_value=None) as check:
for state in should_run:
coresys.core.state = state
await dns_server_failures()
await dns_server()
check.assert_called_once()
check.reset_mock()
for state in should_not_run:
coresys.core.state = state
await dns_server_failures()
await dns_server()
check.assert_not_called()
check.reset_mock()
async def test_check_if_affected(coresys: CoreSys):
"""Test that check is still executed even if already affected."""
dns_server_failures = CheckDNSServerFailures(coresys)
dns_server = CheckDNSServer(coresys)
coresys.core.state = CoreState.RUNNING
coresys.resolution.create_issue(
@ -119,10 +115,8 @@ async def test_check_if_affected(coresys: CoreSys):
assert len(coresys.resolution.issues) == 1
with patch.object(
CheckDNSServerFailures, "approve_check", return_value=True
) as approve, patch.object(
CheckDNSServerFailures, "run_check", return_value=None
) as check:
await dns_server_failures()
CheckDNSServer, "approve_check", return_value=True
) as approve, patch.object(CheckDNSServer, "run_check", return_value=None) as check:
await dns_server()
approve.assert_called_once()
check.assert_called_once()

View File

@ -6,7 +6,7 @@ import pytest
from supervisor.const import CoreState
from supervisor.coresys import CoreSys
from supervisor.resolution.checks.dns_server_ipv6_error import CheckDNSServerIPv6Errors
from supervisor.resolution.checks.dns_server_ipv6 import CheckDNSServerIPv6
from supervisor.resolution.const import ContextType, IssueType
@ -14,7 +14,7 @@ from supervisor.resolution.const import ContextType, IssueType
async def fixture_dns_query() -> AsyncMock:
"""Mock aiodns query."""
with patch(
"supervisor.resolution.checks.dns_server_ipv6_error.DNSResolver.query",
"supervisor.resolution.checks.dns_server_ipv6.DNSResolver.query",
new_callable=AsyncMock,
) as dns_query:
yield dns_query
@ -22,24 +22,24 @@ async def fixture_dns_query() -> AsyncMock:
async def test_base(coresys: CoreSys):
"""Test check basics."""
dns_server_ipv6_errors = CheckDNSServerIPv6Errors(coresys)
assert dns_server_ipv6_errors.slug == "dns_server_ipv6_error"
assert dns_server_ipv6_errors.enabled
dns_server_ipv6 = CheckDNSServerIPv6(coresys)
assert dns_server_ipv6.slug == "dns_server_ipv6"
assert dns_server_ipv6.enabled
async def test_check(coresys: CoreSys, dns_query: AsyncMock):
"""Test check for DNS server IPv6 errors."""
dns_server_ipv6_errors = CheckDNSServerIPv6Errors(coresys)
dns_server_ipv6 = CheckDNSServerIPv6(coresys)
coresys.core.state = CoreState.RUNNING
coresys.plugins.dns.servers = ["dns://1.1.1.1"]
assert dns_server_ipv6_errors.dns_servers == [
assert dns_server_ipv6.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)
await dns_server_ipv6.run_check.__wrapped__(dns_server_ipv6)
assert dns_query.call_args_list == [
call("_checkdns.home-assistant.io", "AAAA"),
call("_checkdns.home-assistant.io", "AAAA"),
@ -48,16 +48,16 @@ async def test_check(coresys: CoreSys, dns_query: AsyncMock):
dns_query.reset_mock()
coresys.plugins.dns.servers = []
assert dns_server_ipv6_errors.dns_servers == ["dns://192.168.30.1"]
assert dns_server_ipv6.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)
await dns_server_ipv6.run_check.__wrapped__(dns_server_ipv6)
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)
await dns_server_ipv6.run_check.__wrapped__(dns_server_ipv6)
dns_query.assert_called_once_with("_checkdns.home-assistant.io", "AAAA")
assert len(coresys.resolution.issues) == 1
@ -68,67 +68,54 @@ async def test_check(coresys: CoreSys, dns_query: AsyncMock):
async def test_approve(coresys: CoreSys, dns_query: AsyncMock):
"""Test approve existing DNS Server IPv6 error issues."""
dns_server_ipv6_errors = CheckDNSServerIPv6Errors(coresys)
dns_server_ipv6 = CheckDNSServerIPv6(coresys)
coresys.core.state = CoreState.RUNNING
assert dns_server_ipv6_errors.dns_servers == ["dns://192.168.30.1"]
assert dns_server_ipv6.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
)
assert await dns_server_ipv6.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
)
assert await dns_server_ipv6.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
)
assert await dns_server_ipv6.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
)
assert await dns_server_ipv6.approve_check(reference="dns://192.168.30.1") is False
dns_query.assert_called_once_with("_checkdns.home-assistant.io", "AAAA")
async def test_did_run(coresys: CoreSys):
"""Test that the check ran as expected."""
dns_server_ipv6_errors = CheckDNSServerIPv6Errors(coresys)
should_run = dns_server_ipv6_errors.states
dns_server_ipv6 = CheckDNSServerIPv6(coresys)
should_run = dns_server_ipv6.states
should_not_run = [state for state in CoreState if state not in should_run]
assert should_run == [CoreState.RUNNING]
assert len(should_not_run) != 0
with patch.object(
CheckDNSServerIPv6Errors, "run_check", return_value=None
) as check:
with patch.object(CheckDNSServerIPv6, "run_check", return_value=None) as check:
for state in should_run:
coresys.core.state = state
await dns_server_ipv6_errors()
await dns_server_ipv6()
check.assert_called_once()
check.reset_mock()
for state in should_not_run:
coresys.core.state = state
await dns_server_ipv6_errors()
await dns_server_ipv6()
check.assert_not_called()
check.reset_mock()
async def test_check_if_affected(coresys: CoreSys):
"""Test that check is still executed even if already affected."""
dns_server_ipv6_errors = CheckDNSServerIPv6Errors(coresys)
dns_server_ipv6 = CheckDNSServerIPv6(coresys)
coresys.core.state = CoreState.RUNNING
coresys.resolution.create_issue(
@ -139,10 +126,10 @@ async def test_check_if_affected(coresys: CoreSys):
assert len(coresys.resolution.issues) == 1
with patch.object(
CheckDNSServerIPv6Errors, "approve_check", return_value=True
CheckDNSServerIPv6, "approve_check", return_value=True
) as approve, patch.object(
CheckDNSServerIPv6Errors, "run_check", return_value=None
CheckDNSServerIPv6, "run_check", return_value=None
) as check:
await dns_server_ipv6_errors()
await dns_server_ipv6()
approve.assert_called_once()
check.assert_called_once()