Initial commit
This commit is contained in:
Executable
+45
@@ -0,0 +1,45 @@
|
||||
"""Standard-library regression tests for the role's CIDR predicates."""
|
||||
|
||||
import unittest
|
||||
|
||||
from filter_plugins.luanti_wasm_network import valid_cidr, valid_ip_block
|
||||
|
||||
|
||||
class NetworkValidationTests(unittest.TestCase):
|
||||
def test_canonical_ipv4_and_ipv6(self):
|
||||
for cidr in ("192.0.2.0/24", "192.0.2.1/32", "2001:db8::/64", "2001:db8::1/128"):
|
||||
with self.subTest(cidr=cidr):
|
||||
self.assertTrue(valid_cidr(cidr))
|
||||
|
||||
def test_rejects_malformed_or_unbounded_cidrs(self):
|
||||
for value in (
|
||||
None, True, 123, [], {}, "", "192.0.2.1", "192.0.2.1/24",
|
||||
"999.0.0.0/8", "192.0.2.0/33", "0.0.0.0/0", "::/0",
|
||||
"2001:db8:::/64", "2001:db8::/129", "fe80::%eth0/64",
|
||||
"2001:DB8::/64", "host.example/32", "192.0.2.0/255.255.255.0",
|
||||
):
|
||||
with self.subTest(value=value):
|
||||
self.assertFalse(valid_cidr(value))
|
||||
|
||||
def test_contained_exceptions(self):
|
||||
self.assertTrue(valid_ip_block({"cidr": "192.0.2.0/24"}))
|
||||
self.assertTrue(valid_ip_block({"cidr": "192.0.2.0/24", "except": ["192.0.2.1/32"]}))
|
||||
self.assertTrue(valid_ip_block({"cidr": "2001:db8::/64", "except": ["2001:db8::1/128"]}))
|
||||
|
||||
def test_rejects_invalid_ip_blocks(self):
|
||||
for value in (
|
||||
None, [], {}, {"cidr": "::/0"}, {"cidr": "192.0.2.0/24", "extra": True},
|
||||
{"cidr": "192.0.2.0/24", "except": "192.0.2.1/32"},
|
||||
{"cidr": "192.0.2.0/24", "except": ["192.0.2.0/24"]},
|
||||
{"cidr": "192.0.2.0/24", "except": ["198.51.100.0/24"]},
|
||||
{"cidr": "192.0.2.0/24", "except": ["2001:db8::/64"]},
|
||||
{"cidr": "2001:db8::/64", "except": ["2001:db8::/48"]},
|
||||
{"cidr": "2001:db8::/64", "except": ["2001:db8:1::/64"]},
|
||||
{"cidr": "2001:db8::/64", "except": ["192.0.2.1/32"]},
|
||||
):
|
||||
with self.subTest(value=value):
|
||||
self.assertFalse(valid_ip_block(value))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user