-
Notifications
You must be signed in to change notification settings - Fork 227
Expand file tree
/
Copy pathtest_ipaddress.py
More file actions
71 lines (59 loc) · 2.73 KB
/
test_ipaddress.py
File metadata and controls
71 lines (59 loc) · 2.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/env python
"""Unit tests for zeroconf._utils.ipaddress."""
import pytest
from zeroconf import const
from zeroconf._dns import DNSAddress
from zeroconf._utils import ipaddress
def test_cached_ip_addresses_wrapper():
"""Test the cached_ip_addresses_wrapper."""
assert ipaddress.cached_ip_addresses('') is None
assert ipaddress.cached_ip_addresses('foo') is None
assert (
str(ipaddress.cached_ip_addresses(b'&\x06(\x00\x02 \x00\x01\x02H\x18\x93%\xc8\x19F'))
== '2606:2800:220:1:248:1893:25c8:1946'
)
assert ipaddress.cached_ip_addresses('::1') == ipaddress.IPv6Address('::1')
ipv4 = ipaddress.cached_ip_addresses('169.254.0.0')
assert ipv4 is not None
assert ipv4.is_link_local is True
assert ipv4.is_unspecified is False
ipv4 = ipaddress.cached_ip_addresses('0.0.0.0')
assert ipv4 is not None
assert ipv4.is_link_local is False
assert ipv4.is_unspecified is True
ipv6 = ipaddress.cached_ip_addresses('fe80::1')
assert ipv6 is not None
assert ipv6.is_link_local is True
assert ipv6.is_unspecified is False
ipv6 = ipaddress.cached_ip_addresses('0:0:0:0:0:0:0:0')
assert ipv6 is not None
assert ipv6.is_link_local is False
assert ipv6.is_unspecified is True
@pytest.mark.skipif(not ipaddress.IPADDRESS_SUPPORTS_SCOPE_ID, reason='scope_id is not supported')
def test_get_ip_address_object_from_record():
"""Test the get_ip_address_object_from_record."""
# not link local
packed = b'&\x06(\x00\x02 \x00\x01\x02H\x18\x93%\xc8\x19F'
record = DNSAddress(
'domain.local', const._TYPE_AAAA, const._CLASS_IN | const._CLASS_UNIQUE, 1, packed, scope_id=3
)
assert record.scope_id == 3
assert ipaddress.get_ip_address_object_from_record(record) == ipaddress.IPv6Address(
'2606:2800:220:1:248:1893:25c8:1946'
)
# link local
packed = b'\xfe\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01'
record = DNSAddress(
'domain.local', const._TYPE_AAAA, const._CLASS_IN | const._CLASS_UNIQUE, 1, packed, scope_id=3
)
assert record.scope_id == 3
assert ipaddress.get_ip_address_object_from_record(record) == ipaddress.IPv6Address('fe80::1%3')
record = DNSAddress('domain.local', const._TYPE_AAAA, const._CLASS_IN | const._CLASS_UNIQUE, 1, packed)
assert record.scope_id is None
assert ipaddress.get_ip_address_object_from_record(record) == ipaddress.IPv6Address('fe80::1')
record = DNSAddress(
'domain.local', const._TYPE_A, const._CLASS_IN | const._CLASS_UNIQUE, 1, packed, scope_id=0
)
assert record.scope_id == 0
# Ensure scope_id of 0 is not appended to the address
assert ipaddress.get_ip_address_object_from_record(record) == ipaddress.IPv6Address('fe80::1')