mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-11-15 22:10:12 +00:00
95 lines
4.0 KiB
Python
95 lines
4.0 KiB
Python
"""Test settings generation from interface."""
|
|
|
|
from unittest.mock import PropertyMock, patch
|
|
|
|
from supervisor.dbus.network import NetworkManager
|
|
from supervisor.dbus.network.interface import NetworkInterface
|
|
from supervisor.dbus.network.setting.generate import get_connection_from_interface
|
|
from supervisor.host.configuration import Ip6Setting, IpConfig, IpSetting, VlanConfig
|
|
from supervisor.host.const import InterfaceMethod, InterfaceType, MulticastDnsMode
|
|
from supervisor.host.network import Interface
|
|
|
|
from tests.const import TEST_INTERFACE_ETH_NAME
|
|
|
|
|
|
async def test_get_connection_from_interface(network_manager: NetworkManager):
|
|
"""Test network interface."""
|
|
dbus_interface = network_manager.get(TEST_INTERFACE_ETH_NAME)
|
|
interface = Interface.from_dbus_interface(dbus_interface)
|
|
connection_payload = get_connection_from_interface(interface, network_manager)
|
|
|
|
assert "connection" in connection_payload
|
|
|
|
assert "interface-name" not in connection_payload["connection"]
|
|
assert connection_payload["connection"]["type"].value == "802-3-ethernet"
|
|
assert connection_payload["connection"]["mdns"].value == 2
|
|
assert connection_payload["connection"]["llmnr"].value == 2
|
|
assert connection_payload["match"]["path"].value == ["platform-ff3f0000.ethernet"]
|
|
|
|
assert connection_payload["ipv4"]["method"].value == "auto"
|
|
assert "address-data" not in connection_payload["ipv4"]
|
|
|
|
assert connection_payload["ipv6"]["method"].value == "auto"
|
|
assert "address-data" not in connection_payload["ipv6"]
|
|
|
|
|
|
async def test_get_connection_no_path(network_manager: NetworkManager):
|
|
"""Test network interface without a path."""
|
|
dbus_interface = network_manager.get(TEST_INTERFACE_ETH_NAME)
|
|
with patch.object(NetworkInterface, "path", new=PropertyMock(return_value=None)):
|
|
interface = Interface.from_dbus_interface(dbus_interface)
|
|
|
|
connection_payload = get_connection_from_interface(interface, network_manager)
|
|
|
|
assert "connection" in connection_payload
|
|
assert "match" not in connection_payload
|
|
|
|
assert connection_payload["connection"]["interface-name"].value == "eth0"
|
|
|
|
|
|
async def test_generate_from_vlan(network_manager: NetworkManager):
|
|
"""Test generate from a vlan interface."""
|
|
vlan_interface = Interface(
|
|
name="eth0.1",
|
|
mac="",
|
|
path="",
|
|
enabled=True,
|
|
connected=True,
|
|
primary=False,
|
|
type=InterfaceType.VLAN,
|
|
ipv4=IpConfig([], None, [], None),
|
|
ipv4setting=IpSetting(InterfaceMethod.AUTO, [], None, []),
|
|
ipv6=IpConfig([], None, [], None),
|
|
ipv6setting=Ip6Setting(InterfaceMethod.AUTO, [], None, []),
|
|
wifi=None,
|
|
vlan=VlanConfig(1, "eth0"),
|
|
mdns=MulticastDnsMode.RESOLVE,
|
|
llmnr=MulticastDnsMode.OFF,
|
|
)
|
|
|
|
connection_payload = get_connection_from_interface(vlan_interface, network_manager)
|
|
assert connection_payload["connection"]["id"].value == "Supervisor eth0.1"
|
|
assert connection_payload["connection"]["type"].value == "vlan"
|
|
assert connection_payload["connection"]["mdns"].value == 1 # resolve
|
|
assert connection_payload["connection"]["llmnr"].value == 0 # off
|
|
assert "uuid" in connection_payload["connection"]
|
|
assert "match" not in connection_payload["connection"]
|
|
assert "interface-name" not in connection_payload["connection"]
|
|
assert connection_payload["ipv4"]["method"].value == "auto"
|
|
assert connection_payload["ipv6"]["addr-gen-mode"].value == 1
|
|
assert connection_payload["ipv6"]["ip6-privacy"].value == -1
|
|
|
|
assert connection_payload["vlan"]["id"].value == 1
|
|
assert (
|
|
connection_payload["vlan"]["parent"].value
|
|
== "0c23631e-2118-355c-bbb0-8943229cb0d6"
|
|
)
|
|
|
|
# Ensure value remains if parent interface is already a UUID
|
|
vlan_interface.vlan.interface = "0c23631e-2118-355c-bbb0-8943229cb0d6"
|
|
connection_payload = get_connection_from_interface(vlan_interface, network_manager)
|
|
assert (
|
|
connection_payload["vlan"]["parent"].value
|
|
== "0c23631e-2118-355c-bbb0-8943229cb0d6"
|
|
)
|