_is_dns_needed not working

This commit is contained in:
Alysia Broddrick 2023-09-27 12:34:41 -07:00
parent 989aad54aa
commit 06dd9a4f19
No known key found for this signature in database
GPG key ID: 03917052CD0F06B7
3 changed files with 47 additions and 19 deletions

View file

@ -318,6 +318,8 @@ class Domain(TimeStampedModel, DomainHelper):
deleted_values.append((prevHost,addrs)) deleted_values.append((prevHost,addrs))
#if the host exists in both, check if the addresses changed #if the host exists in both, check if the addresses changed
else: else:
#TODO - host is being updated when previous was None and new is an empty list
#add check here
if newHostDict[prevHost] != addrs: if newHostDict[prevHost] != addrs:
updated_values.append((prevHost,newHostDict[prevHost])) updated_values.append((prevHost,newHostDict[prevHost]))
@ -370,8 +372,9 @@ class Domain(TimeStampedModel, DomainHelper):
successDeletedCount += 1 successDeletedCount += 1
for hostTuple in updated_values: for hostTuple in updated_values:
updated_response_code = self._updated_host(hostTuple[0], hostTuple[1], oldNameservers.get(hostTuple[0])) updated_response_code = self._update_host(hostTuple[0], hostTuple[1], oldNameservers.get(hostTuple[0]))
if updated_response_code not in [ ErrorCode.COMMAND_COMPLETED_SUCCESSFULLY, ErrorCode.OBJECT_EXISTS]:
logger.warning("Could not update host %s. Error code was: %s " % (hostTuple[0], updated_response_code))
for key, value in new_values.items(): for key, value in new_values.items():
print("HELLO THERE KEY, VALUE PAIR") print("HELLO THERE KEY, VALUE PAIR")
print(key) print(key)
@ -1052,10 +1055,10 @@ class Domain(TimeStampedModel, DomainHelper):
def _convert_ips(self, ip_list: list[str]): def _convert_ips(self, ip_list: list[str]):
edited_ip_list = [] edited_ip_list = []
for ip_addr in ip_list: for ip_addr in ip_list:
if is_ipv6: if self.is_ipv6():
edited_ip_list.append(command.Ip(addr=ip_addr, ip="v6")) edited_ip_list.append(epp.Ip(addr=ip_addr, ip="v6"))
else: # default ip addr is v4 else: # default ip addr is v4
edited_ip_list.append(command.Ip(addr=ip_addr)) edited_ip_list.append(epp.Ip(addr=ip_addr))
return edited_ip_list return edited_ip_list
def _update_host(self, nameserver: str, ip_list: list[str], old_ip_list: list[str]): def _update_host(self, nameserver: str, ip_list: list[str], old_ip_list: list[str]):
@ -1074,13 +1077,23 @@ class Domain(TimeStampedModel, DomainHelper):
def _delete_host(self, nameserver: str): def _delete_host(self, nameserver: str):
try: try:
request = commands.DeleteHost(name=nameserver) updateReq = commands.UpdateDomain(
response = registry.send(request, cleaned=True) name=self.name, rem=[epp.HostObjSet([nameserver])]
logger.info("_delete_host()-> sending req as %s" % request) )
response=registry.send(updateReq, cleaned=True)
logger.info("_delete_host()-> sending update domain req as %s" % updateReq)
deleteHostReq = commands.DeleteHost(name=nameserver)
response = registry.send(deleteHostReq, cleaned=True)
logger.info("_delete_host()-> sending delete host req as %s" % deleteHostReq)
return response.code return response.code
except RegistryError as e: except RegistryError as e:
logger.error("Error _delete_host, code was %s error was %s" % (e.code, e)) if e.code==ErrorCode.OBJECT_ASSOCIATION_PROHIBITS_OPERATION:
return e.code logger.info("Did not remove host %s because it is in use on another domain." % nameserver)
else:
logger.error("Error _delete_host, code was %s error was %s" % (e.code, e))
return e.code
def _fetch_cache(self, fetch_hosts=False, fetch_contacts=False): def _fetch_cache(self, fetch_hosts=False, fetch_contacts=False):
"""Contact registry for info about a domain.""" """Contact registry for info about a domain."""

View file

@ -587,7 +587,7 @@ class MockEppLib(TestCase):
mockDataInfoHosts = fakedEppObject( mockDataInfoHosts = fakedEppObject(
"lastPw", cr_date=datetime.datetime(2023, 8, 25, 19, 45, 35), addrs=["1.2.3", "2.3.4"] "lastPw", cr_date=datetime.datetime(2023, 8, 25, 19, 45, 35), addrs=["1.2.3", "2.3.4"]
) )
mockDataCreateHost =fakedEppObject( mockDataHostChange =fakedEppObject(
"lastPw", cr_date=datetime.datetime(2023, 8, 25, 19, 45, 35) "lastPw", cr_date=datetime.datetime(2023, 8, 25, 19, 45, 35)
) )
@ -611,7 +611,11 @@ class MockEppLib(TestCase):
# sets the second send() to fail # sets the second send() to fail
raise RegistryError(code=ErrorCode.OBJECT_EXISTS) raise RegistryError(code=ErrorCode.OBJECT_EXISTS)
elif (isinstance(_request, commands.CreateHost)): elif (isinstance(_request, commands.CreateHost)):
return MagicMock(res_data=[self.mockDataCreateHost], code=ErrorCode.COMMAND_COMPLETED_SUCCESSFULLY) return MagicMock(res_data=[self.mockDataHostChange], code=ErrorCode.COMMAND_COMPLETED_SUCCESSFULLY)
elif (isinstance(_request, commands.UpdateHost)):
return MagicMock(res_data=[self.mockDataHostChange], code=ErrorCode.COMMAND_COMPLETED_SUCCESSFULLY)
elif (isinstance(_request, commands.DeleteHost)):
return MagicMock(res_data=[self.mockDataHostChange], code=ErrorCode.COMMAND_COMPLETED_SUCCESSFULLY)
return MagicMock(res_data=[self.mockDataInfoHosts]) return MagicMock(res_data=[self.mockDataInfoHosts])
def setUp(self): def setUp(self):

View file

@ -533,6 +533,10 @@ class TestRegistrantNameservers(MockEppLib):
And the registrant is the admin on a domain And the registrant is the admin on a domain
""" """
super().setUp() super().setUp()
self.nameserver1 = "ns1.my-nameserver-1.com"
self.nameserver2 = "ns1.my-nameserver-2.com"
self.nameserver3 = "ns1.cats-are-superior3.com"
self.domain, _ = Domain.objects.get_or_create(name="my-nameserver.gov", state=Domain.State.DNS_NEEDED) self.domain, _ = Domain.objects.get_or_create(name="my-nameserver.gov", state=Domain.State.DNS_NEEDED)
def test_get_nameserver_changes(self): def test_get_nameserver_changes(self):
@ -549,10 +553,10 @@ class TestRegistrantNameservers(MockEppLib):
] ]
newChanges=[("ns1.example.com",),("ns3.example.com",["1.2.4"]),("ns4.example.com",)] newChanges=[("ns1.example.com",),("ns3.example.com",["1.2.4"]),("ns4.example.com",)]
deleted_values,updated_values,new_values, oldNameservers=self.domain.getNameserverChanges(newChanges) deleted_values,updated_values,new_values, oldNameservers=self.domain.getNameserverChanges(newChanges)
print(oldNameservers)
self.assertEqual(deleted_values, [('ns2.example.com', ['1.2.3'])]) self.assertEqual(deleted_values, [('ns2.example.com', ['1.2.3'])])
self.assertEqual(updated_values, [('ns3.example.com', ['1.2.4'])]) self.assertEqual(updated_values, [('ns3.example.com', ['1.2.4'])])
self.assertEqual(new_values, {'ns4.example.com'}) self.assertEqual(new_values, {'ns4.example.com':None})
self.assertEqual(oldNameservers, {'ns1.example.com': None, 'ns2.example.com': ['1.2.3'], 'ns3.example.com': ['1.2.3']}) self.assertEqual(oldNameservers, {'ns1.example.com': None, 'ns2.example.com': ['1.2.3'], 'ns3.example.com': ['1.2.3']})
def test_user_adds_one_nameserver(self): def test_user_adds_one_nameserver(self):
@ -595,15 +599,14 @@ class TestRegistrantNameservers(MockEppLib):
""" """
# set 2 nameservers # set 2 nameservers
nameserver1 = "ns1.my-nameserver-1.com"
nameserver2 = "ns1.my-nameserver-2.com" self.domain.nameservers = [(self.nameserver1,), (self.nameserver2,)]
self.domain.nameservers = [(nameserver1,), (nameserver2,)]
# when you create a host, you also have to update at same time # when you create a host, you also have to update at same time
created_host1 = commands.CreateHost(nameserver1) created_host1 = commands.CreateHost(self.nameserver1)
update_domain_with_created1 = commands.UpdateDomain(name=self.domain.name, add=[common.HostObjSet([created_host1.name])]) update_domain_with_created1 = commands.UpdateDomain(name=self.domain.name, add=[common.HostObjSet([created_host1.name])])
created_host2 = commands.CreateHost(nameserver2) created_host2 = commands.CreateHost(self.nameserver2)
update_domain_with_created2 = commands.UpdateDomain(name=self.domain.name, add=[common.HostObjSet([created_host2.name])]) update_domain_with_created2 = commands.UpdateDomain(name=self.domain.name, add=[common.HostObjSet([created_host2.name])])
# checking if commands were sent (commands have to be sent in order) # checking if commands were sent (commands have to be sent in order)
@ -664,6 +667,14 @@ class TestRegistrantNameservers(MockEppLib):
to the registry to the registry
And `domain.is_active` returns True And `domain.is_active` returns True
""" """
#Given the domain has 3 nameservers
self.domain.nameservers = [(self.nameserver1,), (self.nameserver2,),(self.nameserver3,)]
#now remove one
self.domain.nameservers = [(self.nameserver1,), (self.nameserver2,)]
#assert updatedomain called
#assert call deletehost?
raise raise
@skip("not implemented yet") @skip("not implemented yet")