mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-08-25 10:33:50 +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))
|
||||
|
||||
@classmethod
|
||||
def isValidDomain(cls, nameserver: str):
|
||||
def isValidHost(cls, nameserver: str):
|
||||
"""Checks for validity of nameserver string based on these rules:
|
||||
- first character is alpha or digit
|
||||
- first and last character in each label is alpha or digit
|
||||
|
@ -353,7 +353,7 @@ class Domain(TimeStampedModel, DomainHelper):
|
|||
None"""
|
||||
if ip and not nameserver:
|
||||
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)
|
||||
elif cls.isSubdomain(name, nameserver) and (ip is None or ip == []):
|
||||
raise NameserverError(code=nsErrorCodes.MISSING_IP, nameserver=nameserver)
|
||||
|
|
|
@ -1630,6 +1630,53 @@ class TestRegistrantNameservers(MockEppLib):
|
|||
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):
|
||||
"""Rule: Registrants may modify their secure DNS data"""
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue