mirror of
https://github.com/Horizontal42/netsleuth.git
synced 2026-11-10 15:42:10 +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
|
||||
|
||||
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():
|
||||
|
|
@ -155,6 +157,35 @@ def test_mtu_anomaly_flags_unusually_small_links_generically():
|
|||
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
|
||||
|
||||
from netsleuth.netinfo import _parse_windows_default_gateway
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue