mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-08-13 21:19:42 +02:00
Merge pull request #1398 from cisagov/dk/1381-nameserver-whitespace
Issue #1381 - whitespace bug in IP field in nameserver form (STAGED IN ES SANDBOX)
This commit is contained in:
commit
9877a9e635
3 changed files with 59 additions and 10 deletions
|
@ -67,6 +67,7 @@ class DomainNameserverForm(forms.Form):
|
||||||
ip = cleaned_data.get("ip", None)
|
ip = cleaned_data.get("ip", None)
|
||||||
# remove ANY spaces in the ip field
|
# remove ANY spaces in the ip field
|
||||||
ip = ip.replace(" ", "")
|
ip = ip.replace(" ", "")
|
||||||
|
cleaned_data["ip"] = ip
|
||||||
domain = cleaned_data.get("domain", "")
|
domain = cleaned_data.get("domain", "")
|
||||||
|
|
||||||
ip_list = self.extract_ip_list(ip)
|
ip_list = self.extract_ip_list(ip)
|
||||||
|
|
|
@ -860,15 +860,9 @@ class MockEppLib(TestCase):
|
||||||
case commands.UpdateDomain:
|
case commands.UpdateDomain:
|
||||||
return self.mockUpdateDomainCommands(_request, cleaned)
|
return self.mockUpdateDomainCommands(_request, cleaned)
|
||||||
case commands.CreateHost:
|
case commands.CreateHost:
|
||||||
return MagicMock(
|
return self.mockCreateHostCommands(_request, cleaned)
|
||||||
res_data=[self.mockDataHostChange],
|
|
||||||
code=ErrorCode.COMMAND_COMPLETED_SUCCESSFULLY,
|
|
||||||
)
|
|
||||||
case commands.UpdateHost:
|
case commands.UpdateHost:
|
||||||
return MagicMock(
|
return self.mockUpdateHostCommands(_request, cleaned)
|
||||||
res_data=[self.mockDataHostChange],
|
|
||||||
code=ErrorCode.COMMAND_COMPLETED_SUCCESSFULLY,
|
|
||||||
)
|
|
||||||
case commands.DeleteHost:
|
case commands.DeleteHost:
|
||||||
return MagicMock(
|
return MagicMock(
|
||||||
res_data=[self.mockDataHostChange],
|
res_data=[self.mockDataHostChange],
|
||||||
|
@ -883,6 +877,28 @@ class MockEppLib(TestCase):
|
||||||
case _:
|
case _:
|
||||||
return MagicMock(res_data=[self.mockDataInfoHosts])
|
return MagicMock(res_data=[self.mockDataInfoHosts])
|
||||||
|
|
||||||
|
def mockCreateHostCommands(self, _request, cleaned):
|
||||||
|
test_ws_ip = common.Ip(addr="1.1. 1.1")
|
||||||
|
addrs_submitted = getattr(_request, "addrs", [])
|
||||||
|
if test_ws_ip in addrs_submitted:
|
||||||
|
raise RegistryError(code=ErrorCode.PARAMETER_VALUE_RANGE_ERROR)
|
||||||
|
else:
|
||||||
|
return MagicMock(
|
||||||
|
res_data=[self.mockDataHostChange],
|
||||||
|
code=ErrorCode.COMMAND_COMPLETED_SUCCESSFULLY,
|
||||||
|
)
|
||||||
|
|
||||||
|
def mockUpdateHostCommands(self, _request, cleaned):
|
||||||
|
test_ws_ip = common.Ip(addr="1.1. 1.1")
|
||||||
|
addrs_submitted = getattr(_request, "addrs", [])
|
||||||
|
if test_ws_ip in addrs_submitted:
|
||||||
|
raise RegistryError(code=ErrorCode.PARAMETER_VALUE_RANGE_ERROR)
|
||||||
|
else:
|
||||||
|
return MagicMock(
|
||||||
|
res_data=[self.mockDataHostChange],
|
||||||
|
code=ErrorCode.COMMAND_COMPLETED_SUCCESSFULLY,
|
||||||
|
)
|
||||||
|
|
||||||
def mockUpdateDomainCommands(self, _request, cleaned):
|
def mockUpdateDomainCommands(self, _request, cleaned):
|
||||||
if getattr(_request, "name", None) == "dnssec-invalid.gov":
|
if getattr(_request, "name", None) == "dnssec-invalid.gov":
|
||||||
raise RegistryError(code=ErrorCode.PARAMETER_VALUE_RANGE_ERROR)
|
raise RegistryError(code=ErrorCode.PARAMETER_VALUE_RANGE_ERROR)
|
||||||
|
|
|
@ -1506,6 +1506,38 @@ class TestDomainNameservers(TestDomainOverview):
|
||||||
status_code=200,
|
status_code=200,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_domain_nameservers_form_submit_whitespace(self):
|
||||||
|
"""Nameserver form removes whitespace from ip.
|
||||||
|
|
||||||
|
Uses self.app WebTest because we need to interact with forms.
|
||||||
|
"""
|
||||||
|
nameserver1 = "ns1.igorville.gov"
|
||||||
|
nameserver2 = "ns2.igorville.gov"
|
||||||
|
valid_ip = "1.1. 1.1"
|
||||||
|
# initial nameservers page has one server with two ips
|
||||||
|
# have to throw an error in order to test that the whitespace has been stripped from ip
|
||||||
|
nameservers_page = self.app.get(reverse("domain-dns-nameservers", kwargs={"pk": self.domain.id}))
|
||||||
|
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||||
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
# attempt to submit the form without one host and an ip with whitespace
|
||||||
|
nameservers_page.form["form-0-server"] = nameserver1
|
||||||
|
nameservers_page.form["form-1-ip"] = valid_ip
|
||||||
|
nameservers_page.form["form-1-server"] = nameserver2
|
||||||
|
with less_console_noise(): # swallow log warning message
|
||||||
|
result = nameservers_page.form.submit()
|
||||||
|
# form submission was a post with an ip address which has been stripped of whitespace,
|
||||||
|
# response should be a 302 to success page
|
||||||
|
self.assertEqual(result.status_code, 302)
|
||||||
|
self.assertEqual(
|
||||||
|
result["Location"],
|
||||||
|
reverse("domain-dns-nameservers", kwargs={"pk": self.domain.id}),
|
||||||
|
)
|
||||||
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
page = result.follow()
|
||||||
|
# in the event of a generic nameserver error from registry error, there will be a 302
|
||||||
|
# with an error message displayed, so need to follow 302 and test for success message
|
||||||
|
self.assertContains(page, "The name servers for this domain have been updated")
|
||||||
|
|
||||||
def test_domain_nameservers_form_submit_glue_record_not_allowed(self):
|
def test_domain_nameservers_form_submit_glue_record_not_allowed(self):
|
||||||
"""Nameserver form catches error when IP is present
|
"""Nameserver form catches error when IP is present
|
||||||
but host not subdomain.
|
but host not subdomain.
|
||||||
|
@ -1597,7 +1629,7 @@ class TestDomainNameservers(TestDomainOverview):
|
||||||
"""
|
"""
|
||||||
nameserver1 = "ns1.igorville.gov"
|
nameserver1 = "ns1.igorville.gov"
|
||||||
nameserver2 = "ns2.igorville.gov"
|
nameserver2 = "ns2.igorville.gov"
|
||||||
invalid_ip = "127.0.0.1"
|
valid_ip = "127.0.0.1"
|
||||||
# initial nameservers page has one server with two ips
|
# initial nameservers page has one server with two ips
|
||||||
nameservers_page = self.app.get(reverse("domain-dns-nameservers", kwargs={"pk": self.domain.id}))
|
nameservers_page = self.app.get(reverse("domain-dns-nameservers", kwargs={"pk": self.domain.id}))
|
||||||
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||||
|
@ -1606,7 +1638,7 @@ class TestDomainNameservers(TestDomainOverview):
|
||||||
# only one has ips
|
# only one has ips
|
||||||
nameservers_page.form["form-0-server"] = nameserver1
|
nameservers_page.form["form-0-server"] = nameserver1
|
||||||
nameservers_page.form["form-1-server"] = nameserver2
|
nameservers_page.form["form-1-server"] = nameserver2
|
||||||
nameservers_page.form["form-1-ip"] = invalid_ip
|
nameservers_page.form["form-1-ip"] = valid_ip
|
||||||
with less_console_noise(): # swallow log warning message
|
with less_console_noise(): # swallow log warning message
|
||||||
result = nameservers_page.form.submit()
|
result = nameservers_page.form.submit()
|
||||||
# form submission was a successful post, response should be a 302
|
# form submission was a successful post, response should be a 302
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue