@@ -576,3 +576,39 @@ def test_autodetect_ip_version_includes_multicast_addresses() -> None: |
576 | 576 | netutils.autodetect_ip_version(["127.0.0.1"], multicast_addresses=["2001:db8::"]) is r.IPVersion.All |
577 | 577 | ) |
578 | 578 | assert netutils.autodetect_ip_version([], multicast_addresses=["2001:db8::"]) is r.IPVersion.V6Only |
| 579 | + |
| 580 | + |
| 581 | +def test_autodetect_ip_version_non_list_interfaces_with_multicast_addresses() -> None: |
| 582 | + """autodetect_ip_version handles non-list interfaces (InterfaceChoice) with multicast_addresses.""" |
| 583 | + assert ( |
| 584 | + netutils.autodetect_ip_version(r.InterfaceChoice.Default, multicast_addresses=["2001:db8::"]) |
| 585 | + is r.IPVersion.V6Only |
| 586 | + ) |
| 587 | + assert ( |
| 588 | + netutils.autodetect_ip_version(r.InterfaceChoice.Default, multicast_addresses=["192.168.1.5"]) |
| 589 | + is r.IPVersion.V4Only |
| 590 | + ) |
| 591 | + |
| 592 | + |
| 593 | +def test_create_sockets_multicast_addresses_ip_version_all() -> None: |
| 594 | + """multicast_addresses works with ip_version=All (no V4Only/V6Only validation triggered).""" |
| 595 | + listen_mock = Mock(spec=socket.socket) |
| 596 | + respond_mock = Mock(spec=socket.socket) |
| 597 | + |
| 598 | + def _new_socket(bind_addr, **kwargs): |
| 599 | + return listen_mock if bind_addr == ("",) else respond_mock |
| 600 | + |
| 601 | + with ( |
| 602 | + patch("zeroconf._utils.net.new_socket", side_effect=_new_socket), |
| 603 | + patch("zeroconf._utils.net.add_multicast_member", return_value=True) as mock_add, |
| 604 | + patch("zeroconf._utils.net.set_respond_socket_multicast_options"), |
| 605 | + patch("zeroconf._utils.net.socket.socket.setsockopt"), |
| 606 | + ): |
| 607 | + r.create_sockets( |
| 608 | + interfaces=["127.0.0.1"], |
| 609 | + multicast_addresses=["192.168.1.5"], |
| 610 | + ip_version=r.IPVersion.All, |
| 611 | + ) |
| 612 | + |
| 613 | + joined = [c.args[1] for c in mock_add.call_args_list if c.args[0] is listen_mock] |
| 614 | + assert "192.168.1.5" in joined |