diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
commit | 43a97878ce14b72f0981164f87f2e35e14151312 (patch) | |
tree | 620249daf56c0258faa40cbdcf9cfba06de2a846 /testing/mozbase/moznetwork/tests/test_moznetwork.py | |
parent | Initial commit. (diff) | |
download | firefox-43a97878ce14b72f0981164f87f2e35e14151312.tar.xz firefox-43a97878ce14b72f0981164f87f2e35e14151312.zip |
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/mozbase/moznetwork/tests/test_moznetwork.py')
-rw-r--r-- | testing/mozbase/moznetwork/tests/test_moznetwork.py | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/testing/mozbase/moznetwork/tests/test_moznetwork.py b/testing/mozbase/moznetwork/tests/test_moznetwork.py new file mode 100644 index 0000000000..8a1ee31a2e --- /dev/null +++ b/testing/mozbase/moznetwork/tests/test_moznetwork.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python +""" +Unit-Tests for moznetwork +""" + +import re +import subprocess +from distutils.spawn import find_executable +from unittest import mock + +import mozinfo +import moznetwork +import mozunit +import pytest + + +@pytest.fixture(scope="session") +def ip_addresses(): + """List of IP addresses associated with the host.""" + + # Regex to match IPv4 addresses. + # 0-255.0-255.0-255.0-255, note order is important here. + regexip = re.compile( + "((25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)\.){3}" + "(25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)" + ) + + commands = ( + ["ip", "addr", "show"], + ["ifconfig"], + ["ipconfig"], + # Explicitly search '/sbin' because it doesn't always appear + # to be on the $PATH of all systems + ["/sbin/ip", "addr", "show"], + ["/sbin/ifconfig"], + ) + + cmd = None + for command in commands: + if find_executable(command[0]): + cmd = command + break + else: + raise OSError( + "No program for detecting ip address found! Ensure one of 'ip', " + "'ifconfig' or 'ipconfig' exists on your $PATH." + ) + + ps = subprocess.Popen(cmd, stdout=subprocess.PIPE) + standardoutput, _ = ps.communicate() + + # Generate a list of IPs by parsing the output of ip/ifconfig + return [x.group() for x in re.finditer(regexip, standardoutput.decode("UTF-8"))] + + +def test_get_ip(ip_addresses): + """Attempt to test the IP address returned by + moznetwork.get_ip() is valid""" + assert moznetwork.get_ip() in ip_addresses + + +@pytest.mark.skipif(mozinfo.isWin, reason="Test is not supported in Windows") +def test_get_ip_using_get_interface(ip_addresses): + """Test that the control flow path for get_ip() using + _get_interface_list() is works""" + with mock.patch("socket.gethostbyname") as byname: + # Force socket.gethostbyname to return None + byname.return_value = None + assert moznetwork.get_ip() in ip_addresses + + +if __name__ == "__main__": + mozunit.main() |