Update one nameserver test

This commit is contained in:
Rebecca Hsieh 2023-09-21 16:31:47 -07:00
parent 62dd9dff73
commit f2948a77de
No known key found for this signature in database
GPG key ID: 644527A2F375A379
3 changed files with 48 additions and 14 deletions

View file

@ -309,7 +309,7 @@ class Domain(TimeStampedModel, DomainHelper):
# currenthosts = self.nameservers
# that way you have current hosts
count = 0
for hostTuple in hosts:
host = hostTuple[0].strip() # for removing empty string -- do we need strip?
addrs = None
@ -320,7 +320,7 @@ class Domain(TimeStampedModel, DomainHelper):
# if you are dotgov and don't have an IP address then raise error
# TRY logger.info() or print()
avail = self._check_host([host])
if avail:
createdCode = self._create_host(host=host, addrs=addrs) # creates in registry
# DOUBLE CHECK: _create_host should handle duplicates?
@ -328,8 +328,10 @@ class Domain(TimeStampedModel, DomainHelper):
# if createdCode == ErrorCode.OBJECT_EXISTS:
# duplication check if it's already on the domain -- self.nameservers
# Is it possible for a nameserver to exist and not be on a domain yet? (can one have duplicate name servers)
# NOTE TO ANSWER THIS ON SLACK
# if it isn't in the domain - set a flag so that createdCode == ErrorCode.COMMAND_COMPLETED_SUCCESSFULLY:
# TODO: There could be an error here???
count += 1
# host can be used by multiple domains
if createdCode == ErrorCode.COMMAND_COMPLETED_SUCCESSFULLY:
# add host to domain (domain already created, just adding to it)
request = commands.UpdateDomain(
@ -338,17 +340,19 @@ class Domain(TimeStampedModel, DomainHelper):
try:
registry.send(request, cleaned=True)
# count += 1
except RegistryError as e:
logger.error(
"Error adding nameserver, code was %s error was %s"
% (e.code, e)
)
# elif createdCode == ErrorCode.OBJECT_EXISTS:
# count += 1
try:
# should we check for contacts?
# check if there are 2 or more name servers or 13 (inclusive)
self.ready()
self.save()
if len(count) >= 2 or len(count) <= 13:
self.ready()
self.save()
except Exception as err:
logger.info(
"nameserver setter checked for create state "
@ -847,8 +851,8 @@ class Domain(TimeStampedModel, DomainHelper):
nameserverList = self.nameservers
logger.info("Changing to ready state")
# TEST THIS -- assertValue or print (trigger this)
if len(nameserverList) < 2 or len(nameserverList) > 13:
raise ValueError("Not ready to become created, cannot transition yet")
# if len(nameserverList) < 2 or len(nameserverList) > 13:
# raise ValueError("Not ready to become created, cannot transition yet")
logger.info("able to transition to ready state")
def _disclose_fields(self, contact: PublicContact):

View file

@ -554,12 +554,14 @@ class MockEppLib(TestCase):
contacts=...,
hosts=...,
statuses=...,
avail=...,
):
self.auth_info = auth_info
self.cr_date = cr_date
self.contacts = contacts
self.hosts = hosts
self.statuses = statuses
self.avail = avail
mockDataInfoDomain = fakedEppObject(
"fakepw",
@ -583,6 +585,9 @@ class MockEppLib(TestCase):
mockDataInfoHosts = fakedEppObject(
"lastPw", cr_date=datetime.datetime(2023, 8, 25, 19, 45, 35)
)
mockDataCheckHosts = fakedEppObject(
"lastPw", cr_date=datetime.datetime(2023, 8, 25, 19, 45, 35), avail=True,
)
def mockSend(self, _request, cleaned):
"""Mocks the registry.send function used inside of domain.py
@ -603,6 +608,10 @@ class MockEppLib(TestCase):
# use this for when a contact is being updated
# sets the second send() to fail
raise RegistryError(code=ErrorCode.OBJECT_EXISTS)
elif (isinstance(_request, commands.CheckHost)):
return MagicMock(res_data=[self.mockDataCheckHosts])
elif (isinstance(_request, commands.CreateHost)):
return MagicMock(res_data=[self.mockDataCheckHosts], code=ErrorCode.COMMAND_COMPLETED_SUCCESSFULLY)
return MagicMock(res_data=[self.mockDataInfoHosts])
def setUp(self):

View file

@ -523,7 +523,7 @@ class TestRegistrantContacts(MockEppLib):
raise
class TestRegistrantNameservers(TestCase):
class TestRegistrantNameservers(MockEppLib):
"""Rule: Registrants may modify their nameservers"""
def setUp(self):
@ -532,9 +532,9 @@ class TestRegistrantNameservers(TestCase):
Given the registrant is logged in
And the registrant is the admin on a domain
"""
pass
super().setUp()
self.domain, _ = Domain.objects.get_or_create(name="my-nameserver.gov", state=Domain.State.DNS_NEEDED)
@skip("not implemented yet")
def test_user_adds_one_nameserver(self):
"""
Scenario: Registrant adds a single nameserver
@ -544,7 +544,28 @@ class TestRegistrantNameservers(TestCase):
to the registry
And `domain.is_active` returns False
"""
raise
# set 1 nameserver
nameserver = "ns1.my-nameserver.com"
self.domain.nameservers = [(nameserver,)]
# when you create a host, you also have to update at same time
created_host = commands.CreateHost(nameserver)
update_domain_with_created = commands.UpdateDomain(name=self.domain.name, add=[common.HostObjSet([created_host.name])])
# checking if commands were sent (commands have to be sent in order)
expectedCalls = [
call(
commands.CheckHost([created_host.name]), cleaned=True
),
call(created_host, cleaned=True),
call(update_domain_with_created, cleaned=True),
]
self.mockedSendFunction.assert_has_calls(expectedCalls)
# check that status is still NOT READY
self.assertFalse(self.domain.is_active())
@skip("not implemented yet")
def test_user_adds_two_nameservers(self):