mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-12-22 19:39:18 +00:00
Create issue for detected DNS server problem (#3578)
* Create issue for detected DNS server problem * Validate behavior on restart as well * tls:// not supported, remove check * Move DNS server checks into resolution checks * Revert all changes to plugins.dns * Run DNS server checks if affected * Mock aiodns query during all checks tests
This commit is contained in:
55
tests/plugins/test_dns.py
Normal file
55
tests/plugins/test_dns.py
Normal file
@@ -0,0 +1,55 @@
|
||||
"""Test DNS plugin."""
|
||||
from pathlib import Path
|
||||
from unittest.mock import AsyncMock, Mock, patch
|
||||
|
||||
import pytest
|
||||
|
||||
from supervisor.coresys import CoreSys
|
||||
from supervisor.docker.interface import DockerInterface
|
||||
|
||||
|
||||
@pytest.fixture(name="docker_interface")
|
||||
async def fixture_docker_interface() -> tuple[AsyncMock, AsyncMock]:
|
||||
"""Mock docker interface methods."""
|
||||
# with patch("supervisor.docker.interface.DockerInterface.run"), patch("supervisor.docker.interface.DockerInterface.restart")
|
||||
with patch.object(DockerInterface, "run") as run, patch.object(
|
||||
DockerInterface, "restart"
|
||||
) as restart:
|
||||
yield (run, restart)
|
||||
|
||||
|
||||
@pytest.fixture(name="write_json")
|
||||
async def fixture_write_json() -> Mock:
|
||||
"""Mock json file writer."""
|
||||
with patch("supervisor.plugins.dns.write_json_file") as write_json_file:
|
||||
yield write_json_file
|
||||
|
||||
|
||||
@pytest.mark.parametrize("start", [True, False])
|
||||
async def test_config_write(
|
||||
coresys: CoreSys,
|
||||
docker_interface: tuple[AsyncMock, AsyncMock],
|
||||
write_json: Mock,
|
||||
start: bool,
|
||||
):
|
||||
"""Test config write on DNS start and restart."""
|
||||
assert coresys.plugins.dns.locals == ["dns://192.168.30.1"]
|
||||
coresys.plugins.dns.servers = ["dns://1.1.1.1", "dns://8.8.8.8"]
|
||||
|
||||
if start:
|
||||
await coresys.plugins.dns.start()
|
||||
docker_interface[0].assert_called_once()
|
||||
docker_interface[1].assert_not_called()
|
||||
else:
|
||||
await coresys.plugins.dns.restart()
|
||||
docker_interface[0].assert_not_called()
|
||||
docker_interface[1].assert_called_once()
|
||||
|
||||
write_json.assert_called_once_with(
|
||||
Path("/data/dns/coredns.json"),
|
||||
{
|
||||
"servers": ["dns://1.1.1.1", "dns://8.8.8.8"],
|
||||
"locals": ["dns://192.168.30.1"],
|
||||
"debug": False,
|
||||
},
|
||||
)
|
||||
Reference in New Issue
Block a user