diff options
author | Daniel Watkins <oddbloke@ubuntu.com> | 2020-03-27 22:47:01 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-27 20:47:01 -0600 |
commit | 2566fdbee06cf5708cfcd988a65fb81cdf794dbf (patch) | |
tree | 3f631450c78aab545888437ad6814496c2b3a649 /cloudinit/net/tests | |
parent | 36a597de6f130a17360856697759b08f3c835df1 (diff) | |
download | vyos-cloud-init-2566fdbee06cf5708cfcd988a65fb81cdf794dbf.tar.gz vyos-cloud-init-2566fdbee06cf5708cfcd988a65fb81cdf794dbf.zip |
net: introduce is_ip_address function (#288)
This will be required for the mirror URL sanitisation work,
Diffstat (limited to 'cloudinit/net/tests')
-rw-r--r-- | cloudinit/net/tests/test_init.py | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/cloudinit/net/tests/test_init.py b/cloudinit/net/tests/test_init.py index a965699a..909f43c8 100644 --- a/cloudinit/net/tests/test_init.py +++ b/cloudinit/net/tests/test_init.py @@ -2,16 +2,19 @@ import copy import errno -import httpretty +import ipaddress import os -import requests import textwrap from unittest import mock +import httpretty +import pytest +import requests + import cloudinit.net as net -from cloudinit.util import ensure_file, write_file, ProcessExecutionError -from cloudinit.tests.helpers import CiTestCase, HttprettyTestCase from cloudinit import safeyaml as yaml +from cloudinit.tests.helpers import CiTestCase, HttprettyTestCase +from cloudinit.util import ProcessExecutionError, ensure_file, write_file class TestSysDevPath(CiTestCase): @@ -1291,4 +1294,26 @@ class TestNetFailOver(CiTestCase): m_standby.return_value = False self.assertFalse(net.is_netfailover(devname, driver)) + +class TestIsIpAddress: + """Tests for net.is_ip_address. + + Instead of testing with values we rely on the ipaddress stdlib module to + handle all values correctly, so simply test that is_ip_address defers to + the ipaddress module correctly. + """ + + @pytest.mark.parametrize('ip_address_side_effect,expected_return', ( + (ValueError, False), + (lambda _: ipaddress.IPv4Address('192.168.0.1'), True), + (lambda _: ipaddress.IPv6Address('2001:db8::'), True), + )) + def test_is_ip_address(self, ip_address_side_effect, expected_return): + with mock.patch('cloudinit.net.ipaddress.ip_address', + side_effect=ip_address_side_effect) as m_ip_address: + ret = net.is_ip_address(mock.sentinel.ip_address_in) + assert expected_return == ret + expected_call = mock.call(mock.sentinel.ip_address_in) + assert [expected_call] == m_ip_address.call_args_list + # vi: ts=4 expandtab |