Skip to content

Commit 3dfda64

Browse files
authored
Add missing coverage for ipv6 network utils (#555)
1 parent e50b62b commit 3dfda64

1 file changed

Lines changed: 58 additions & 0 deletions

File tree

tests/utils/test_net.py

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
#!/usr/bin/env python
2+
# -*- coding: utf-8 -*-
3+
4+
5+
"""Unit tests for zeroconf.utils.net."""
6+
from unittest.mock import Mock, patch
7+
8+
import ifaddr
9+
import pytest
10+
11+
from zeroconf.utils import net as netutils
12+
13+
14+
def _generate_mock_adapters():
15+
mock_lo0 = Mock(spec=ifaddr.Adapter)
16+
mock_lo0.nice_name = "lo0"
17+
mock_lo0.ips = [ifaddr.IP("127.0.0.1", 8, "lo0")]
18+
mock_lo0.index = 0
19+
mock_eth0 = Mock(spec=ifaddr.Adapter)
20+
mock_eth0.nice_name = "eth0"
21+
mock_eth0.ips = [ifaddr.IP(("2001:db8::", 1, 1), 8, "eth0")]
22+
mock_eth0.index = 1
23+
mock_eth1 = Mock(spec=ifaddr.Adapter)
24+
mock_eth1.nice_name = "eth1"
25+
mock_eth1.ips = [ifaddr.IP("192.168.1.5", 23, "eth1")]
26+
mock_eth1.index = 2
27+
mock_vtun0 = Mock(spec=ifaddr.Adapter)
28+
mock_vtun0.nice_name = "vtun0"
29+
mock_vtun0.ips = [ifaddr.IP("169.254.3.2", 16, "vtun0")]
30+
mock_vtun0.index = 3
31+
return [mock_eth0, mock_lo0, mock_eth1, mock_vtun0]
32+
33+
34+
def test_ip6_to_address_and_index():
35+
"""Test we can extract from mocked adapters."""
36+
adapters = _generate_mock_adapters()
37+
assert netutils.ip6_to_address_and_index(adapters, "2001:db8::") == (('2001:db8::', 1, 1), 1)
38+
with pytest.raises(RuntimeError):
39+
assert netutils.ip6_to_address_and_index(adapters, "2005:db8::")
40+
41+
42+
def test_interface_index_to_ip6_address():
43+
"""Test we can extract from mocked adapters."""
44+
adapters = _generate_mock_adapters()
45+
assert netutils.interface_index_to_ip6_address(adapters, 1) == ('2001:db8::', 1, 1)
46+
with pytest.raises(RuntimeError):
47+
assert netutils.interface_index_to_ip6_address(adapters, 6)
48+
49+
50+
def test_ip6_addresses_to_indexes():
51+
"""Test we can extract from mocked adapters."""
52+
interfaces = [1]
53+
with patch("zeroconf.utils.net.ifaddr.get_adapters", return_value=_generate_mock_adapters()):
54+
assert netutils.ip6_addresses_to_indexes(interfaces) == [(('2001:db8::', 1, 1), 1)]
55+
56+
interfaces = ['2001:db8::']
57+
with patch("zeroconf.utils.net.ifaddr.get_adapters", return_value=_generate_mock_adapters()):
58+
assert netutils.ip6_addresses_to_indexes(interfaces) == [(('2001:db8::', 1, 1), 1)]

0 commit comments

Comments
 (0)