mirror of
https://github.com/fuckpiracyshield/api.git
synced 2024-05-19 21:46:19 +02:00
55 lines
1.4 KiB
Python
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
|