mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-02-04 16:01:55 +00:00
189 lines
5.1 KiB
Python
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
|