mirror of
https://github.com/Horizontal42/netsleuth.git
synced 2026-11-10 19:12:03 +03:00
🧪 Add tests for 'primary_interface_ip' in netinfo.py (#14)
* 🧪 Add tests for primary_interface_ip
Added unit tests to fully cover `primary_interface_ip` in `netinfo.py`, handling IPv4, IPv6 and error conditions using mock sockets.
Coverage for `primary_interface_ip` is now 100%.
Co-authored-by: Horizontal42 <75383519+Horizontal42@users.noreply.github.com>
* drop redundant pytest-cov dep addition
---------
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
This commit is contained in:
parent
45ce7509d2
commit
7418816c6d
1 changed files with 32 additions and 1 deletions
|
|
@ -111,7 +111,9 @@ def test_degradation_note_on_windows_mentions_the_api_rather_than_sysctl():
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from netsleuth.netinfo import iface_for_ip, is_tunnel_iface, mtu_anomaly
|
from unittest.mock import patch
|
||||||
|
|
||||||
|
from netsleuth.netinfo import iface_for_ip, is_tunnel_iface, mtu_anomaly, primary_interface_ip
|
||||||
|
|
||||||
|
|
||||||
def test_iface_for_ip_matches_the_owning_adapter():
|
def test_iface_for_ip_matches_the_owning_adapter():
|
||||||
|
|
@ -155,6 +157,35 @@ def test_mtu_anomaly_flags_unusually_small_links_generically():
|
||||||
assert mtu_anomaly(1200) == "small"
|
assert mtu_anomaly(1200) == "small"
|
||||||
|
|
||||||
|
|
||||||
|
@patch("socket.socket")
|
||||||
|
def test_primary_interface_ip_ipv4_success(mock_socket):
|
||||||
|
mock_sock_instance = mock_socket.return_value
|
||||||
|
mock_sock_instance.getsockname.return_value = ("192.168.1.100", 12345)
|
||||||
|
|
||||||
|
assert primary_interface_ip(target="8.8.8.8", family=socket.AF_INET) == "192.168.1.100"
|
||||||
|
mock_socket.assert_called_once_with(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
|
mock_sock_instance.connect.assert_called_once_with(("8.8.8.8", 53))
|
||||||
|
|
||||||
|
|
||||||
|
@patch("socket.socket")
|
||||||
|
def test_primary_interface_ip_ipv6_success(mock_socket):
|
||||||
|
mock_sock_instance = mock_socket.return_value
|
||||||
|
mock_sock_instance.getsockname.return_value = ("2001:db8::1", 12345, 0, 0)
|
||||||
|
|
||||||
|
assert primary_interface_ip(family=socket.AF_INET6) == "2001:db8::1"
|
||||||
|
mock_socket.assert_called_once_with(socket.AF_INET6, socket.SOCK_DGRAM)
|
||||||
|
# The default probe target for IPv6 is "2606:4700:4700::1111"
|
||||||
|
mock_sock_instance.connect.assert_called_once_with(("2606:4700:4700::1111", 53))
|
||||||
|
|
||||||
|
|
||||||
|
@patch("socket.socket")
|
||||||
|
def test_primary_interface_ip_oserror(mock_socket):
|
||||||
|
mock_sock_instance = mock_socket.return_value
|
||||||
|
mock_sock_instance.connect.side_effect = OSError("Network is unreachable")
|
||||||
|
|
||||||
|
assert primary_interface_ip() is None
|
||||||
|
|
||||||
|
|
||||||
import socket
|
import socket
|
||||||
|
|
||||||
from netsleuth.netinfo import _parse_windows_default_gateway
|
from netsleuth.netinfo import _parse_windows_default_gateway
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue