import ipaddress import os import pytest import requests from django.test import override_settings from django.core.exceptions import ValidationError from peeringdb_server.validators import ( validate_address_space, validate_info_prefixes4, validate_info_prefixes6) pytestmark = pytest.mark.django_db INVALID_ADDRESS_SPACES = [ '0.0.0.0/1', '0.0.0.0/8', '10.0.0.0/8', '127.0.0.0/8', '169.254.0.0/16', #FIXME: this fails still #'172.0.0.0/11', '172.16.0.0/12', '192.0.2.0/24', '192.168.0.0/16', '198.18.0.0/15', '198.51.100.0/24', '203.0.113.0/24', #FIXME: this fails still #'224.0.0.0/3', '224.0.0.0/4', '240.0.0.0/4', '100.64.0.0/10', '0000::/8', '0064:ff9b::/96', '0100::/8', '0200::/7', '0400::/6', '0800::/5', '1000::/4', '2001::/33', '2001:0:8000::/33', '2001:0002::/48', '2001:0003::/32', '2001:10::/28', '2001:20::/28', '2001:db8::/32', '2002::/16', '3ffe::/16', '4000::/2', '4000::/3', '5f00::/8', '6000::/3', '8000::/3', 'a000::/3', 'c000::/3', 'e000::/4', 'f000::/5', 'f800::/6', 'fc00::/7', 'fe80::/10', 'fec0::/10', 'ff00::/8' ] @pytest.fixture(params=INVALID_ADDRESS_SPACES) def prefix(request): return request.param #@pytest.mark.django_db def test_validate_address_space(prefix): """ Tests peeringdb_server.validators.validate_address_space """ with pytest.raises(ValidationError) as exc: validate_address_space(ipaddress.ip_network(unicode(prefix))) @override_settings(DATA_QUALITY_MAX_PREFIX_V4_LIMIT=500000) def test_validate_info_prefixes4(): """ Tests peeringdb_server.validators.validate_info_prefixes4 """ with pytest.raises(ValidationError): validate_info_prefixes4(500001) with pytest.raises(ValidationError): validate_info_prefixes4(-1) validate_info_prefixes4(500000) @override_settings(DATA_QUALITY_MAX_PREFIX_V6_LIMIT=500000) def test_validate_info_prefixes6(): """ Tests peeringdb_server.validators.validate_info_prefixes6 """ with pytest.raises(ValidationError): validate_info_prefixes6(500001) with pytest.raises(ValidationError): validate_info_prefixes6(-1) validate_info_prefixes6(500000)