mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-06-30 00:03:30 +02:00
updated test to remove theeNS and stop settings if not ready or DNS needed
This commit is contained in:
parent
8b17d184eb
commit
a4057a669f
4 changed files with 44 additions and 38 deletions
|
@ -17,6 +17,7 @@ from epplibwrapper import (
|
||||||
ErrorCode,
|
ErrorCode,
|
||||||
)
|
)
|
||||||
from registrar.utility.errors import (
|
from registrar.utility.errors import (
|
||||||
|
ActionNotAllowed,
|
||||||
NameserverError,
|
NameserverError,
|
||||||
NameserverErrorCodes as nsErrorCodes,
|
NameserverErrorCodes as nsErrorCodes,
|
||||||
)
|
)
|
||||||
|
@ -433,6 +434,10 @@ class Domain(TimeStampedModel, DomainHelper):
|
||||||
|
|
||||||
if len(hosts) > 13:
|
if len(hosts) > 13:
|
||||||
raise NameserverError(code=nsErrorCodes.TOO_MANY_HOSTS)
|
raise NameserverError(code=nsErrorCodes.TOO_MANY_HOSTS)
|
||||||
|
|
||||||
|
if self.state not in [self.State.DNS_NEEDED, self.State.READY]:
|
||||||
|
raise ActionNotAllowed("Nameservers can not be " "set in the current state")
|
||||||
|
|
||||||
logger.info("Setting nameservers")
|
logger.info("Setting nameservers")
|
||||||
logger.info(hosts)
|
logger.info(hosts)
|
||||||
|
|
||||||
|
@ -465,9 +470,6 @@ class Domain(TimeStampedModel, DomainHelper):
|
||||||
)
|
)
|
||||||
elif successTotalNameservers >= 2 and successTotalNameservers <= 13:
|
elif successTotalNameservers >= 2 and successTotalNameservers <= 13:
|
||||||
try:
|
try:
|
||||||
print(
|
|
||||||
"READY/SAVE: We are in happy path where btwen 2 and 13 inclusive ns"
|
|
||||||
)
|
|
||||||
self.ready()
|
self.ready()
|
||||||
self.save()
|
self.save()
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
|
|
|
@ -727,17 +727,11 @@ class MockEppLib(TestCase):
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
# Bc we have multiple tests utilizing 3 nameservers,
|
|
||||||
# easier to set a flag for it
|
|
||||||
threeNS = False
|
|
||||||
|
|
||||||
def _getattrInfoDomain(self, _request):
|
def _getattrInfoDomain(self, _request):
|
||||||
if getattr(_request, "name", None) == "security.gov":
|
if getattr(_request, "name", None) == "security.gov":
|
||||||
return MagicMock(res_data=[self.infoDomainNoContact])
|
return MagicMock(res_data=[self.infoDomainNoContact])
|
||||||
elif getattr(_request, "name", None) == "my-nameserver.gov":
|
elif getattr(_request, "name", None) == "my-nameserver.gov":
|
||||||
if self.threeNS:
|
if self.mockedSendFunction.call_count == 5:
|
||||||
return MagicMock(res_data=[self.infoDomainThreeHosts])
|
|
||||||
elif self.mockedSendFunction.call_count == 5:
|
|
||||||
return MagicMock(res_data=[self.infoDomainTwoHosts])
|
return MagicMock(res_data=[self.infoDomainTwoHosts])
|
||||||
else:
|
else:
|
||||||
return MagicMock(res_data=[self.infoDomainNoHost])
|
return MagicMock(res_data=[self.infoDomainNoHost])
|
||||||
|
@ -747,8 +741,8 @@ class MockEppLib(TestCase):
|
||||||
return MagicMock(res_data=[self.infoDomainCheckHostIPCombo])
|
return MagicMock(res_data=[self.infoDomainCheckHostIPCombo])
|
||||||
elif getattr(_request, "name", None) == "freeman.gov":
|
elif getattr(_request, "name", None) == "freeman.gov":
|
||||||
return MagicMock(res_data=[self.InfoDomainWithContacts])
|
return MagicMock(res_data=[self.InfoDomainWithContacts])
|
||||||
# elif getattr(_request, "name", None) == "failednameserver.gov":
|
elif getattr(_request, "name", None) == "threenameserversDomain.gov":
|
||||||
# return MagicMock(res_data=[self.infoDomainUpdateFail])
|
return MagicMock(res_data=[self.infoDomainThreeHosts])
|
||||||
return MagicMock(res_data=[self.mockDataInfoDomain])
|
return MagicMock(res_data=[self.mockDataInfoDomain])
|
||||||
|
|
||||||
def mockSend(self, _request, cleaned):
|
def mockSend(self, _request, cleaned):
|
||||||
|
|
|
@ -16,7 +16,7 @@ from registrar.models.domain_information import DomainInformation
|
||||||
from registrar.models.draft_domain import DraftDomain
|
from registrar.models.draft_domain import DraftDomain
|
||||||
from registrar.models.public_contact import PublicContact
|
from registrar.models.public_contact import PublicContact
|
||||||
from registrar.models.user import User
|
from registrar.models.user import User
|
||||||
from registrar.utility.errors import NameserverError
|
from registrar.utility.errors import ActionNotAllowed, NameserverError
|
||||||
from .common import MockEppLib
|
from .common import MockEppLib
|
||||||
from django_fsm import TransitionNotAllowed # type: ignore
|
from django_fsm import TransitionNotAllowed # type: ignore
|
||||||
from epplibwrapper import (
|
from epplibwrapper import (
|
||||||
|
@ -862,6 +862,9 @@ class TestRegistrantNameservers(MockEppLib):
|
||||||
self.domain, _ = Domain.objects.get_or_create(
|
self.domain, _ = Domain.objects.get_or_create(
|
||||||
name="my-nameserver.gov", state=Domain.State.DNS_NEEDED
|
name="my-nameserver.gov", state=Domain.State.DNS_NEEDED
|
||||||
)
|
)
|
||||||
|
self.domainWithThreeNS, _ = Domain.objects.get_or_create(
|
||||||
|
name="threenameserversDomain.gov", state=Domain.State.READY
|
||||||
|
)
|
||||||
|
|
||||||
def test_get_nameserver_changes_success_deleted_vals(self):
|
def test_get_nameserver_changes_success_deleted_vals(self):
|
||||||
# Testing only deleting and no other changes
|
# Testing only deleting and no other changes
|
||||||
|
@ -1063,14 +1066,13 @@ class TestRegistrantNameservers(MockEppLib):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Mock is set to return 3 nameservers on infodomain
|
# Mock is set to return 3 nameservers on infodomain
|
||||||
self.threeNS = True
|
self.domainWithThreeNS.nameservers = [(self.nameserver1,), (self.nameserver2,)]
|
||||||
self.domain.nameservers = [(self.nameserver1,), (self.nameserver2,)]
|
|
||||||
expectedCalls = [
|
expectedCalls = [
|
||||||
# calls info domain, and info on all hosts
|
# calls info domain, and info on all hosts
|
||||||
# to get past values
|
# to get past values
|
||||||
# then removes the single host and updates domain
|
# then removes the single host and updates domain
|
||||||
call(
|
call(
|
||||||
commands.InfoDomain(name="my-nameserver.gov", auth_info=None),
|
commands.InfoDomain(name=self.domainWithThreeNS.name, auth_info=None),
|
||||||
cleaned=True,
|
cleaned=True,
|
||||||
),
|
),
|
||||||
call(commands.InfoHost(name="ns1.my-nameserver-1.com"), cleaned=True),
|
call(commands.InfoHost(name="ns1.my-nameserver-1.com"), cleaned=True),
|
||||||
|
@ -1078,7 +1080,7 @@ class TestRegistrantNameservers(MockEppLib):
|
||||||
call(commands.InfoHost(name="ns1.cats-are-superior3.com"), cleaned=True),
|
call(commands.InfoHost(name="ns1.cats-are-superior3.com"), cleaned=True),
|
||||||
call(
|
call(
|
||||||
commands.UpdateDomain(
|
commands.UpdateDomain(
|
||||||
name="my-nameserver.gov",
|
name=self.domainWithThreeNS.name,
|
||||||
add=[],
|
add=[],
|
||||||
rem=[common.HostObjSet(hosts=["ns1.cats-are-superior3.com"])],
|
rem=[common.HostObjSet(hosts=["ns1.cats-are-superior3.com"])],
|
||||||
nsset=None,
|
nsset=None,
|
||||||
|
@ -1104,12 +1106,11 @@ class TestRegistrantNameservers(MockEppLib):
|
||||||
And `domain.is_active` returns False
|
And `domain.is_active` returns False
|
||||||
|
|
||||||
"""
|
"""
|
||||||
self.threeNS = True
|
|
||||||
self.domain.ready()
|
self.domainWithThreeNS.nameservers = [(self.nameserver1,)]
|
||||||
self.domain.nameservers = [(self.nameserver1,)]
|
|
||||||
expectedCalls = [
|
expectedCalls = [
|
||||||
call(
|
call(
|
||||||
commands.InfoDomain(name="my-nameserver.gov", auth_info=None),
|
commands.InfoDomain(name=self.domainWithThreeNS.name, auth_info=None),
|
||||||
cleaned=True,
|
cleaned=True,
|
||||||
),
|
),
|
||||||
call(commands.InfoHost(name="ns1.my-nameserver-1.com"), cleaned=True),
|
call(commands.InfoHost(name="ns1.my-nameserver-1.com"), cleaned=True),
|
||||||
|
@ -1117,7 +1118,7 @@ class TestRegistrantNameservers(MockEppLib):
|
||||||
call(commands.InfoHost(name="ns1.cats-are-superior3.com"), cleaned=True),
|
call(commands.InfoHost(name="ns1.cats-are-superior3.com"), cleaned=True),
|
||||||
call(
|
call(
|
||||||
commands.UpdateDomain(
|
commands.UpdateDomain(
|
||||||
name="my-nameserver.gov",
|
name=self.domainWithThreeNS.name,
|
||||||
add=[],
|
add=[],
|
||||||
rem=[common.HostObjSet(hosts=["ns1.my-nameserver-2.com"])],
|
rem=[common.HostObjSet(hosts=["ns1.my-nameserver-2.com"])],
|
||||||
nsset=None,
|
nsset=None,
|
||||||
|
@ -1130,7 +1131,7 @@ class TestRegistrantNameservers(MockEppLib):
|
||||||
call(commands.DeleteHost(name="ns1.my-nameserver-2.com"), cleaned=True),
|
call(commands.DeleteHost(name="ns1.my-nameserver-2.com"), cleaned=True),
|
||||||
call(
|
call(
|
||||||
commands.UpdateDomain(
|
commands.UpdateDomain(
|
||||||
name="my-nameserver.gov",
|
name=self.domainWithThreeNS.name,
|
||||||
add=[],
|
add=[],
|
||||||
rem=[common.HostObjSet(hosts=["ns1.cats-are-superior3.com"])],
|
rem=[common.HostObjSet(hosts=["ns1.cats-are-superior3.com"])],
|
||||||
nsset=None,
|
nsset=None,
|
||||||
|
@ -1156,9 +1157,8 @@ class TestRegistrantNameservers(MockEppLib):
|
||||||
And `commands.UpdateDomain` is sent to add #4 and #5 plus remove #2 and #3
|
And `commands.UpdateDomain` is sent to add #4 and #5 plus remove #2 and #3
|
||||||
And `commands.DeleteHost` is sent to delete #2 and #3
|
And `commands.DeleteHost` is sent to delete #2 and #3
|
||||||
"""
|
"""
|
||||||
self.threeNS = True
|
|
||||||
self.domain.ready()
|
self.domainWithThreeNS.nameservers = [
|
||||||
self.domain.nameservers = [
|
|
||||||
(self.nameserver1,),
|
(self.nameserver1,),
|
||||||
("ns1.cats-are-superior1.com",),
|
("ns1.cats-are-superior1.com",),
|
||||||
("ns1.cats-are-superior2.com",),
|
("ns1.cats-are-superior2.com",),
|
||||||
|
@ -1166,7 +1166,7 @@ class TestRegistrantNameservers(MockEppLib):
|
||||||
|
|
||||||
expectedCalls = [
|
expectedCalls = [
|
||||||
call(
|
call(
|
||||||
commands.InfoDomain(name="my-nameserver.gov", auth_info=None),
|
commands.InfoDomain(name=self.domainWithThreeNS.name, auth_info=None),
|
||||||
cleaned=True,
|
cleaned=True,
|
||||||
),
|
),
|
||||||
call(commands.InfoHost(name="ns1.my-nameserver-1.com"), cleaned=True),
|
call(commands.InfoHost(name="ns1.my-nameserver-1.com"), cleaned=True),
|
||||||
|
@ -1174,7 +1174,7 @@ class TestRegistrantNameservers(MockEppLib):
|
||||||
call(commands.InfoHost(name="ns1.cats-are-superior3.com"), cleaned=True),
|
call(commands.InfoHost(name="ns1.cats-are-superior3.com"), cleaned=True),
|
||||||
call(
|
call(
|
||||||
commands.UpdateDomain(
|
commands.UpdateDomain(
|
||||||
name="my-nameserver.gov",
|
name=self.domainWithThreeNS.name,
|
||||||
add=[],
|
add=[],
|
||||||
rem=[common.HostObjSet(hosts=["ns1.my-nameserver-2.com"])],
|
rem=[common.HostObjSet(hosts=["ns1.my-nameserver-2.com"])],
|
||||||
nsset=None,
|
nsset=None,
|
||||||
|
@ -1191,7 +1191,7 @@ class TestRegistrantNameservers(MockEppLib):
|
||||||
),
|
),
|
||||||
call(
|
call(
|
||||||
commands.UpdateDomain(
|
commands.UpdateDomain(
|
||||||
name="my-nameserver.gov",
|
name=self.domainWithThreeNS.name,
|
||||||
add=[common.HostObjSet(hosts=["ns1.cats-are-superior1.com"])],
|
add=[common.HostObjSet(hosts=["ns1.cats-are-superior1.com"])],
|
||||||
rem=[],
|
rem=[],
|
||||||
nsset=None,
|
nsset=None,
|
||||||
|
@ -1207,7 +1207,7 @@ class TestRegistrantNameservers(MockEppLib):
|
||||||
),
|
),
|
||||||
call(
|
call(
|
||||||
commands.UpdateDomain(
|
commands.UpdateDomain(
|
||||||
name="my-nameserver.gov",
|
name=self.domainWithThreeNS.name,
|
||||||
add=[common.HostObjSet(hosts=["ns1.cats-are-superior2.com"])],
|
add=[common.HostObjSet(hosts=["ns1.cats-are-superior2.com"])],
|
||||||
rem=[],
|
rem=[],
|
||||||
nsset=None,
|
nsset=None,
|
||||||
|
@ -1312,14 +1312,9 @@ class TestRegistrantNameservers(MockEppLib):
|
||||||
to the registry twice with identical data
|
to the registry twice with identical data
|
||||||
Then no errors are raised in Domain
|
Then no errors are raised in Domain
|
||||||
"""
|
"""
|
||||||
# implementation note: this requires seeing what happens when these are actually
|
|
||||||
# sent like this, and then implementing appropriate mocks for any errors the
|
|
||||||
# registry normally sends in this case
|
|
||||||
|
|
||||||
self.threeNS = True
|
|
||||||
|
|
||||||
# Checking that it doesn't create or update even if out of order
|
# Checking that it doesn't create or update even if out of order
|
||||||
self.domain.nameservers = [
|
self.domainWithThreeNS.nameservers = [
|
||||||
(self.nameserver3,),
|
(self.nameserver3,),
|
||||||
(self.nameserver1,),
|
(self.nameserver1,),
|
||||||
(self.nameserver2,),
|
(self.nameserver2,),
|
||||||
|
@ -1327,7 +1322,7 @@ class TestRegistrantNameservers(MockEppLib):
|
||||||
|
|
||||||
expectedCalls = [
|
expectedCalls = [
|
||||||
call(
|
call(
|
||||||
commands.InfoDomain(name="my-nameserver.gov", auth_info=None),
|
commands.InfoDomain(name=self.domainWithThreeNS.name, auth_info=None),
|
||||||
cleaned=True,
|
cleaned=True,
|
||||||
),
|
),
|
||||||
call(commands.InfoHost(name="ns1.my-nameserver-1.com"), cleaned=True),
|
call(commands.InfoHost(name="ns1.my-nameserver-1.com"), cleaned=True),
|
||||||
|
@ -1371,6 +1366,15 @@ class TestRegistrantNameservers(MockEppLib):
|
||||||
("ns2.nameserversubdomain.gov", ["2.3.4"]),
|
("ns2.nameserversubdomain.gov", ["2.3.4"]),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def test_setting_not_allowed(self):
|
||||||
|
"""Scenario: A domain state is not Ready or DNS Needed
|
||||||
|
then setting nameservers is not allowed"""
|
||||||
|
domain, _ = Domain.objects.get_or_create(
|
||||||
|
name="onholdDomain.gov", state=Domain.State.ON_HOLD
|
||||||
|
)
|
||||||
|
with self.assertRaises(ActionNotAllowed):
|
||||||
|
domain.nameservers = [self.nameserver1, self.nameserver2]
|
||||||
|
|
||||||
@skip("not implemented yet")
|
@skip("not implemented yet")
|
||||||
def test_update_is_unsuccessful(self):
|
def test_update_is_unsuccessful(self):
|
||||||
"""
|
"""
|
||||||
|
@ -1391,7 +1395,6 @@ class TestRegistrantNameservers(MockEppLib):
|
||||||
domain.nameservers = [("ns1.failednameserver.gov", ["4.5.6"])]
|
domain.nameservers = [("ns1.failednameserver.gov", ["4.5.6"])]
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
self.threeNS = False
|
|
||||||
Domain.objects.all().delete()
|
Domain.objects.all().delete()
|
||||||
return super().tearDown()
|
return super().tearDown()
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,13 @@ class DomainUnavailableError(ValueError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class ActionNotAllowed(Exception):
|
||||||
|
"""User accessed an action that is not
|
||||||
|
allowed by the current state"""
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class NameserverErrorCodes(IntEnum):
|
class NameserverErrorCodes(IntEnum):
|
||||||
"""Used in the NameserverError class for
|
"""Used in the NameserverError class for
|
||||||
error mapping.
|
error mapping.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue