This commit is contained in:
Cian Hughes
2023-11-08 12:53:09 +00:00
parent a524e7c719
commit 9209d04ea7
2 changed files with 20 additions and 35 deletions
+12 -27
View File
@@ -4,70 +4,55 @@ from ipaddress import IPv4Address, IPv6Address, ip_address
class IPAddress: class IPAddress:
def __init__(self, *args, **kwargs) -> None: def __init__(self, *args, **kwargs) -> None:
self.obj: IPv4Address | IPv6Address = ip_address(*args, **kwargs) self.obj: IPv4Address | IPv6Address = ip_address(*args, **kwargs)
# to_passthrough = (
# "compressed",
# "exploded",
# "is_global",
# "is_link_local",
# "is_loopback",
# "is_multicast",
# "is_private",
# "is_reserved",
# "is_unspecified",
# "max_prefixlen",
# "packed",
# "reverse_pointer",
# "version",
# )
@property @property
def compressed(self) -> str: def compressed(self) -> str:
return self.obj.compressed return self.obj.compressed
@property @property
def exploded(self) -> str: def exploded(self) -> str:
return self.obj.exploded return self.obj.exploded
@property @property
def is_global(self) -> bool: def is_global(self) -> bool:
return self.obj.is_global return self.obj.is_global
@property @property
def is_link_local(self) -> bool: def is_link_local(self) -> bool:
return self.obj.is_link_local return self.obj.is_link_local
@property @property
def is_loopback(self) -> bool: def is_loopback(self) -> bool:
return self.obj.is_loopback return self.obj.is_loopback
@property @property
def is_multicast(self) -> bool: def is_multicast(self) -> bool:
return self.obj.is_multicast return self.obj.is_multicast
@property @property
def is_private(self) -> bool: def is_private(self) -> bool:
return self.obj.is_private return self.obj.is_private
@property @property
def is_reserved(self) -> bool: def is_reserved(self) -> bool:
return self.obj.is_reserved return self.obj.is_reserved
@property @property
def is_unspecified(self) -> bool: def is_unspecified(self) -> bool:
return self.obj.is_unspecified return self.obj.is_unspecified
@property @property
def max_prefixlen(self) -> int: def max_prefixlen(self) -> int:
return self.obj.max_prefixlen return self.obj.max_prefixlen
@property @property
def packed(self) -> bytes: def packed(self) -> bytes:
return self.obj.packed return self.obj.packed
@property @property
def reverse_pointer(self) -> str: def reverse_pointer(self) -> str:
return self.obj.reverse_pointer return self.obj.reverse_pointer
@property @property
def version(self) -> int: def version(self) -> int:
return self.obj.version return self.obj.version
+8 -8
View File
@@ -1,10 +1,10 @@
import atexit import atexit
import filecmp import filecmp
from ipaddress import IPv4Address, IPv6Address
import os import os
from pathlib import Path from pathlib import Path
import pickle import pickle
import shutil import shutil
from ipaddress import IPv4Address, IPv6Address
from hypothesis import given from hypothesis import given
from hypothesis import strategies as st from hypothesis import strategies as st
@@ -36,7 +36,7 @@ def cleanup():
atexit.register(cleanup) atexit.register(cleanup)
from node_deployer import ip_interface, autoignition, create_disk, create_img # noqa: E402 from node_deployer import autoignition, create_disk, create_img, ip_interface # noqa: E402
with open(config.PROJECT_ROOT / "tests/data/node_deployer/test_args.toml", "rb") as f: with open(config.PROJECT_ROOT / "tests/data/node_deployer/test_args.toml", "rb") as f:
@@ -61,36 +61,36 @@ class TestIPInterface:
"reverse_pointer", "reverse_pointer",
"version", "version",
) )
@given(st.ip_addresses(v=4)) @given(st.ip_addresses(v=4))
def test_ipv4_parsing(self, ip: IPv4Address): def test_ipv4_parsing(self, ip: IPv4Address):
ip_str = str(ip) ip_str = str(ip)
test_result = ip_interface.IPAddress(ip_str) test_result = ip_interface.IPAddress(ip_str)
assert test_result.obj == ip assert test_result.obj == ip
@given(st.ip_addresses(v=4)) @given(st.ip_addresses(v=4))
def test_ipv4_attr_passthrough(self, ip: IPv4Address): def test_ipv4_attr_passthrough(self, ip: IPv4Address):
ip_addr = ip_interface.IPAddress(str(ip)) ip_addr = ip_interface.IPAddress(str(ip))
for attr in self.TEST_ATTRS: for attr in self.TEST_ATTRS:
assert getattr(ip_addr, attr) == getattr(ip_addr.obj, attr) assert getattr(ip_addr, attr) == getattr(ip_addr.obj, attr)
@given(st.ip_addresses(v=4)) @given(st.ip_addresses(v=4))
def test_ipv4_bool(self, ip: IPv4Address): def test_ipv4_bool(self, ip: IPv4Address):
ip_addr = ip_interface.IPAddress(str(ip)) ip_addr = ip_interface.IPAddress(str(ip))
assert bool(ip_addr) != ip.is_unspecified assert bool(ip_addr) != ip.is_unspecified
@given(st.ip_addresses(v=6)) @given(st.ip_addresses(v=6))
def test_ipv6_parsing(self, ip: IPv6Address): def test_ipv6_parsing(self, ip: IPv6Address):
ip_str = str(ip) ip_str = str(ip)
test_result = ip_interface.IPAddress(ip_str) test_result = ip_interface.IPAddress(ip_str)
assert test_result.obj == ip assert test_result.obj == ip
@given(st.ip_addresses(v=6)) @given(st.ip_addresses(v=6))
def test_ipv6_attr_passthrough(self, ip: IPv6Address): def test_ipv6_attr_passthrough(self, ip: IPv6Address):
ip_addr = ip_interface.IPAddress(str(ip)) ip_addr = ip_interface.IPAddress(str(ip))
for attr in self.TEST_ATTRS: for attr in self.TEST_ATTRS:
assert getattr(ip_addr, attr) == getattr(ip_addr.obj, attr) assert getattr(ip_addr, attr) == getattr(ip_addr.obj, attr)
@given(st.ip_addresses(v=6)) @given(st.ip_addresses(v=6))
def test_ipv6_bool(self, ip: IPv6Address): def test_ipv6_bool(self, ip: IPv6Address):
ip_addr = ip_interface.IPAddress(str(ip)) ip_addr = ip_interface.IPAddress(str(ip))