1
0
mirror of https://github.com/home-assistant/supervisor.git synced 2026-04-02 08:12:47 +01:00
Files
supervisor/tests/docker/test_observer.py
Stefan Agner 0cd668ec77 Fix typeguard errors by explicitly converting IP addresses to strings (#6531)
* Fix environment variable type errors by converting IP addresses to strings

Environment variables must be strings, but IPv4Address and IPv4Network
objects were being passed directly to container environment dictionaries,
causing typeguard validation errors.

Changes:
- Convert IPv4Address objects to strings in homeassistant.py for
  SUPERVISOR and HASSIO environment variables
- Convert IPv4Network object to string in observer.py for
  NETWORK_MASK environment variable
- Update tests to expect string values instead of IP objects in
  environment dictionaries
- Remove unused ip_network import from test_observer.py

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Use explicit string conversion for extra_hosts IP addresses

Use the !s format specifier in the f-string to explicitly convert
IPv4Address objects to strings when building the ExtraHosts list.
While f-strings implicitly convert objects to strings, using !s makes
the conversion explicit and consistent with the environment variable
fixes in the previous commit.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-05 11:00:43 +01:00

40 lines
1.5 KiB
Python

"""Test Observer plugin container."""
from ipaddress import IPv4Address
from unittest.mock import patch
from aiodocker.containers import DockerContainer
from supervisor.coresys import CoreSys
from supervisor.docker.const import DockerMount, MountType
from supervisor.docker.manager import DockerAPI
async def test_start(coresys: CoreSys, container: DockerContainer):
"""Test starting observer plugin."""
with patch.object(
DockerAPI, "run", return_value=container.show.return_value
) as run:
await coresys.plugins.observer.start()
run.assert_called_once()
assert run.call_args.kwargs["ipv4"] == IPv4Address("172.30.32.6")
assert run.call_args.kwargs["name"] == "hassio_observer"
assert run.call_args.kwargs["hostname"] == "hassio-observer"
assert run.call_args.kwargs["restart_policy"] == {"Name": "always"}
assert run.call_args.kwargs["extra_hosts"] == {
"supervisor": IPv4Address("172.30.32.2")
}
assert run.call_args.kwargs["oom_score_adj"] == -300
assert run.call_args.kwargs["environment"]["NETWORK_MASK"] == "172.30.32.0/23"
assert run.call_args.kwargs["ports"] == {"80/tcp": 4357}
assert run.call_args.kwargs["mounts"] == [
DockerMount(
type=MountType.BIND,
source="/run/docker.sock",
target="/run/docker.sock",
read_only=True,
),
]
assert "volumes" not in run.call_args.kwargs