mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-08-25 18:43:49 +02:00
test cases for valid and invalid domains
This commit is contained in:
parent
a631d0d080
commit
91d8ee1afe
2 changed files with 49 additions and 2 deletions
|
@ -310,7 +310,7 @@ class Domain(TimeStampedModel, DomainHelper):
|
||||||
return bool(regex.match(nameserver))
|
return bool(regex.match(nameserver))
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def isValidDomain(cls, nameserver: str):
|
def isValidHost(cls, nameserver: str):
|
||||||
"""Checks for validity of nameserver string based on these rules:
|
"""Checks for validity of nameserver string based on these rules:
|
||||||
- first character is alpha or digit
|
- first character is alpha or digit
|
||||||
- first and last character in each label is alpha or digit
|
- first and last character in each label is alpha or digit
|
||||||
|
@ -353,7 +353,7 @@ class Domain(TimeStampedModel, DomainHelper):
|
||||||
None"""
|
None"""
|
||||||
if ip and not nameserver:
|
if ip and not nameserver:
|
||||||
raise NameserverError(code=nsErrorCodes.MISSING_HOST)
|
raise NameserverError(code=nsErrorCodes.MISSING_HOST)
|
||||||
elif nameserver and not cls.isValidDomain(nameserver):
|
elif nameserver and not cls.isValidHost(nameserver):
|
||||||
raise NameserverError(code=nsErrorCodes.INVALID_HOST, nameserver=nameserver)
|
raise NameserverError(code=nsErrorCodes.INVALID_HOST, nameserver=nameserver)
|
||||||
elif cls.isSubdomain(name, nameserver) and (ip is None or ip == []):
|
elif cls.isSubdomain(name, nameserver) and (ip is None or ip == []):
|
||||||
raise NameserverError(code=nsErrorCodes.MISSING_IP, nameserver=nameserver)
|
raise NameserverError(code=nsErrorCodes.MISSING_IP, nameserver=nameserver)
|
||||||
|
|
|
@ -1630,6 +1630,53 @@ class TestRegistrantNameservers(MockEppLib):
|
||||||
return super().tearDown()
|
return super().tearDown()
|
||||||
|
|
||||||
|
|
||||||
|
class TestNameserverValidation(TestCase):
|
||||||
|
"""Test the isValidDomain method which validates nameservers"""
|
||||||
|
|
||||||
|
def test_255_chars_is_too_long(self):
|
||||||
|
"""Test that domain of 255 chars or longer is invalid"""
|
||||||
|
domain_too_long = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
|
||||||
|
".bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" \
|
||||||
|
".bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" \
|
||||||
|
".bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" \
|
||||||
|
".bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" \
|
||||||
|
".bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.gov"
|
||||||
|
self.assertFalse(Domain.isValidHost(domain_too_long))
|
||||||
|
|
||||||
|
def test_64_char_label_too_long(self):
|
||||||
|
"""Test that label of 64 characters or longer is invalid"""
|
||||||
|
label_too_long = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
|
||||||
|
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||||
|
domain_label_too_long = "www." + label_too_long + ".gov"
|
||||||
|
self.assertFalse(Domain.isValidHost(domain_label_too_long))
|
||||||
|
|
||||||
|
def test_only_tld_and_sld(self):
|
||||||
|
"""Test that host with only a tld and sld is invalid"""
|
||||||
|
tld = "gov"
|
||||||
|
sld = "example"
|
||||||
|
domain_with_sld_and_tld = sld + "." + tld
|
||||||
|
self.assertFalse(Domain.isValidHost(domain_with_sld_and_tld))
|
||||||
|
|
||||||
|
def test_improper_chars_in_nameserver(self):
|
||||||
|
"""Test that host with improper chars is invalid"""
|
||||||
|
invalid_chars = "*&^"
|
||||||
|
domain_with_invalid_chars = "www.bad--" + invalid_chars + ".gov"
|
||||||
|
self.assertFalse(Domain.isValidHost(domain_with_invalid_chars))
|
||||||
|
|
||||||
|
def test_misplaced_dashes(self):
|
||||||
|
"""Test that misplaced dashes are invalid"""
|
||||||
|
self.assertFalse(Domain.isValidHost("-www.example.gov"))
|
||||||
|
self.assertFalse(Domain.isValidHost("www.example-.gov"))
|
||||||
|
self.assertTrue(Domain.isValidHost("www.ex-ample.gov"))
|
||||||
|
|
||||||
|
def test_valid_hostname(self):
|
||||||
|
"""Test that valid hostnames are valid"""
|
||||||
|
self.assertTrue(Domain.isValidHost("www.tld.sld.gov"))
|
||||||
|
self.assertTrue(Domain.isValidHost("www.valid.c"))
|
||||||
|
self.assertTrue(Domain.isValidHost("2ww.valid.gov"))
|
||||||
|
self.assertTrue(Domain.isValidHost("w.t.g"))
|
||||||
|
|
||||||
|
|
||||||
class TestRegistrantDNSSEC(MockEppLib):
|
class TestRegistrantDNSSEC(MockEppLib):
|
||||||
"""Rule: Registrants may modify their secure DNS data"""
|
"""Rule: Registrants may modify their secure DNS data"""
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue