api/tests/01_general/test_0103_cidr_ipv6.py
2024-02-07 14:54:36 +01:00

55 lines
1.4 KiB
Python

import pytest
from piracyshield_component.validation.validator import Validator
from piracyshield_component.validation.rules.cidr_syntax_ipv6 import CIDRSyntaxIPv6
from piracyshield_component.validation.validator import ValidatorRuleNonValidException
from random import randint, getrandbits
from ipaddress import IPv6Address
class TestGeneral:
max_cidr_classes = 10000
valid_cidr_ipv6_list = []
def setup_method(self):
self.valid_cidr_ipv6_list = self.__generate_random_list(self.max_cidr_classes)
def test_valid_cidr_ipv6(self):
"""
Check if the CIDR IPv6 syntax is valid.
"""
for cidr_ipv6 in self.valid_cidr_ipv6_list:
rules = [
CIDRSyntaxIPv6()
]
v = Validator(cidr_ipv6, rules)
v.validate()
if len(v.errors) != 0:
print(cidr_ipv6, v.errors)
assert len(v.errors) == 0
def __generate_random_list(self, size: int):
cidr_list = []
for _ in range(size):
# Generating a random IPv6 address
random_ip = IPv6Address(getrandbits(128))
# Choosing a random subnet mask
subnet_mask = randint(1, 128)
# Combining to form CIDR notation
cidr = f"{random_ip}/{subnet_mask}"
cidr_list.append(cidr)
return cidr_list