#1715 - Added more tests. MAde use of the pydantic model_post_init function for proper ipv4 cofiguration checking. Added NetworkError to exceptions.py.

This commit is contained in:
Chris McCarthy
2023-07-31 16:55:45 +01:00
parent 59394c3642
commit 0532db960a
6 changed files with 129 additions and 24 deletions

View File

View File

@@ -0,0 +1,14 @@
import pytest
from primaite.simulator.network.physical_layer import Link, NIC
def test_link_fails_with_same_nic():
"""Tests Link creation fails with endpoint_a and endpoint_b are the same NIC."""
with pytest.raises(ValueError):
nic_a = NIC(
ip_address="192.168.1.2",
subnet_mask="255.255.255.0",
gateway="192.168.0.1",
)
Link(endpoint_a=nic_a, endpoint_b=nic_a)

View File

@@ -1,8 +1,9 @@
import re
from ipaddress import IPv4Address
import pytest
from primaite.simulator.network.physical_layer import generate_mac_address
from primaite.simulator.network.physical_layer import generate_mac_address, NIC
def test_mac_address_generation():
@@ -24,3 +25,47 @@ def test_invalid_oui_mac_address():
invalid_oui = "aa-bb-cc"
with pytest.raises(ValueError):
generate_mac_address(oui=invalid_oui)
def test_nic_ip_address_type_conversion():
"""Tests NIC IP and gateway address is converted to IPv4Address is originally a string."""
nic = NIC(
ip_address="192.168.1.2",
subnet_mask="255.255.255.0",
gateway="192.168.0.1",
)
assert isinstance(nic.ip_address, IPv4Address)
assert isinstance(nic.gateway, IPv4Address)
def test_nic_deserialize():
"""Tests NIC serialization and deserialization."""
nic = NIC(
ip_address="192.168.1.2",
subnet_mask="255.255.255.0",
gateway="192.168.0.1",
)
nic_json = nic.model_dump_json()
deserialized_nic = NIC.model_validate_json(nic_json)
assert nic == deserialized_nic
def test_nic_ip_address_as_gateway_fails():
"""Tests NIC creation fails if ip address is the same as the gateway."""
with pytest.raises(ValueError):
NIC(
ip_address="192.168.0.1",
subnet_mask="255.255.255.0",
gateway="192.168.0.1",
)
def test_nic_ip_address_as_network_address_fails():
"""Tests NIC creation fails if ip address and subnet mask are a network address."""
with pytest.raises(ValueError):
NIC(
ip_address="192.168.0.0",
subnet_mask="255.255.255.0",
gateway="192.168.0.1",
)