1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2026-02-04 16:01:55 +00:00
community.general/tests/unit/plugins/module_utils/xenserver/test_netaddr_functions.py
2025-11-01 13:46:53 +01:00

189 lines
5.1 KiB
Python

#
# Copyright (c) 2019, Bojan Vitnik <bvitnik@mainstream.rs>
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
from __future__ import annotations
import pytest
from ansible.module_utils.common.network import is_mac
testcase_is_valid_mac_addr = [
("A4-23-8D-F8-C9-E5", True),
("35:71:F4:11:0B:D8", True),
("b3-bd-20-59-0c-cf", True),
("32:61:ca:65:f1:f4", True),
("asdf", False),
("A4-23-8D-G8-C9-E5", False),
("A4-3-8D-F8-C9-E5", False),
("A4-23-88D-F8-C9-E5", False),
("A4-23-8D-F8-C9_E5", False),
("A4-23--8D-F8-C9-E5", False),
]
testcase_is_valid_ip_addr = [
("0.0.0.0", True),
("10.0.0.1", True),
("192.168.0.1", True),
("255.255.255.255", True),
("asdf", False),
("a.b.c.d", False),
("345.345.345.345", False),
("-10.0.0.1", False),
]
testcase_is_valid_ip_netmask = [
("240.0.0.0", True),
("255.224.0.0", True),
("255.255.248.0", True),
("255.255.255.255", True),
("asdf", False),
("a.b.c.d", False),
("192.168.0.1", False),
("255.0.248.0", False),
]
testcase_is_valid_ip_prefix = [
("0", True),
("16", True),
("24", True),
("32", True),
("asdf", False),
("-10", False),
("60", False),
("60s", False),
]
testcase_ip_prefix_to_netmask = {
"params": [
("0", "0.0.0.0"),
("8", "255.0.0.0"),
("11", "255.224.0.0"),
("16", "255.255.0.0"),
("21", "255.255.248.0"),
("24", "255.255.255.0"),
("26", "255.255.255.192"),
("32", "255.255.255.255"),
("a", ""),
("60", ""),
],
"ids": [
"0",
"8",
"11",
"16",
"21",
"24",
"26",
"32",
"a",
"60",
],
}
testcase_ip_netmask_to_prefix = {
"params": [
("0.0.0.0", "0"),
("255.0.0.0", "8"),
("255.224.0.0", "11"),
("255.255.0.0", "16"),
("255.255.248.0", "21"),
("255.255.255.0", "24"),
("255.255.255.192", "26"),
("255.255.255.255", "32"),
("a", ""),
("60", ""),
],
"ids": [
"0.0.0.0",
"255.0.0.0",
"255.224.0.0",
"255.255.0.0",
"255.255.248.0",
"255.255.255.0",
"255.255.255.192",
"255.255.255.255",
"a",
"60",
],
}
testcase_is_valid_ip6_addr = [
("::1", True),
("2001:DB8:0:0:8:800:200C:417A", True),
("2001:DB8::8:800:200C:417A", True),
("FF01::101", True),
("asdf", False),
("2001:DB8:0:0:8:800:200C:417A:221", False),
("FF01::101::2", False),
("2001:db8:85a3::8a2e:370k:7334", False),
]
testcase_is_valid_ip6_prefix = [
("0", True),
("56", True),
("78", True),
("128", True),
("asdf", False),
("-10", False),
("345", False),
("60s", False),
]
@pytest.mark.parametrize("mac_addr, result", testcase_is_valid_mac_addr)
def test_is_valid_mac_addr(xenserver, mac_addr, result):
"""Tests against examples of valid and invalid mac addresses."""
assert is_mac(mac_addr) is result
@pytest.mark.parametrize("ip_addr, result", testcase_is_valid_ip_addr)
def test_is_valid_ip_addr(xenserver, ip_addr, result):
"""Tests against examples of valid and invalid ip addresses."""
assert xenserver.is_valid_ip_addr(ip_addr) is result
@pytest.mark.parametrize("ip_netmask, result", testcase_is_valid_ip_netmask)
def test_is_valid_ip_netmask(xenserver, ip_netmask, result):
"""Tests against examples of valid and invalid ip netmasks."""
assert xenserver.is_valid_ip_netmask(ip_netmask) is result
@pytest.mark.parametrize("ip_prefix, result", testcase_is_valid_ip_prefix)
def test_is_valid_ip_prefix(xenserver, ip_prefix, result):
"""Tests against examples of valid and invalid ip prefixes."""
assert xenserver.is_valid_ip_prefix(ip_prefix) is result
@pytest.mark.parametrize(
"ip_prefix, ip_netmask",
testcase_ip_prefix_to_netmask["params"], # type: ignore
ids=testcase_ip_prefix_to_netmask["ids"], # type: ignore
)
def test_ip_prefix_to_netmask(xenserver, ip_prefix, ip_netmask):
"""Tests ip prefix to netmask conversion."""
assert xenserver.ip_prefix_to_netmask(ip_prefix) == ip_netmask
@pytest.mark.parametrize(
"ip_netmask, ip_prefix",
testcase_ip_netmask_to_prefix["params"], # type: ignore
ids=testcase_ip_netmask_to_prefix["ids"], # type: ignore
)
def test_ip_netmask_to_prefix(xenserver, ip_netmask, ip_prefix):
"""Tests ip netmask to prefix conversion."""
assert xenserver.ip_netmask_to_prefix(ip_netmask) == ip_prefix
@pytest.mark.parametrize("ip6_addr, result", testcase_is_valid_ip6_addr)
def test_is_valid_ip6_addr(xenserver, ip6_addr, result):
"""Tests against examples of valid and invalid ip6 addresses."""
assert xenserver.is_valid_ip6_addr(ip6_addr) is result
@pytest.mark.parametrize("ip6_prefix, result", testcase_is_valid_ip6_prefix)
def test_is_valid_ip6_prefix(xenserver, ip6_prefix, result):
"""Tests against examples of valid and invalid ip6 prefixes."""
assert xenserver.is_valid_ip6_prefix(ip6_prefix) is result