mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-05-16 09:37:03 +02:00
unit tests for nameserver views
This commit is contained in:
parent
517390cc55
commit
04168419e7
1 changed files with 178 additions and 7 deletions
|
@ -10,6 +10,10 @@ from .common import MockEppLib, completed_application # type: ignore
|
|||
from django_webtest import WebTest # type: ignore
|
||||
import boto3_mocking # type: ignore
|
||||
|
||||
from registrar.utility.errors import (
|
||||
NameserverError,
|
||||
NameserverErrorCodes,
|
||||
)
|
||||
|
||||
from registrar.models import (
|
||||
DomainApplication,
|
||||
|
@ -1393,20 +1397,165 @@ class TestDomainNameservers(TestDomainOverview):
|
|||
)
|
||||
self.assertContains(page, "DNS name servers")
|
||||
|
||||
@skip("Broken by adding registry connection fix in ticket 848")
|
||||
def test_domain_nameservers_form(self):
|
||||
def test_domain_nameservers_form_submit_one_nameserver(self):
|
||||
"""Can change domain's nameservers.
|
||||
|
||||
Uses self.app WebTest because we need to interact with forms.
|
||||
"""
|
||||
# initial nameservers page has one server with two ips
|
||||
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 with only one nameserver, should error
|
||||
# regarding required fields
|
||||
with less_console_noise(): # swallow log warning message
|
||||
result = nameservers_page.form.submit()
|
||||
# form submission was a post, response should be a redirect
|
||||
# form submission was a post with an error, response should be a 200
|
||||
# error text appears twice, once at the top of the page, once around
|
||||
# the required field. form requires a minimum of 2 name servers
|
||||
self.assertContains(result, "This field is required.", count=2, status_code=200)
|
||||
|
||||
def test_domain_nameservers_form_submit_subdomain_missing_ip(self):
|
||||
"""Can change domain's nameservers.
|
||||
|
||||
Uses self.app WebTest because we need to interact with forms.
|
||||
"""
|
||||
# initial nameservers page has one server with two ips
|
||||
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 two hosts, both subdomains,
|
||||
# only one has ips
|
||||
nameservers_page.form["form-1-server"] = "ns2.igorville.gov"
|
||||
with less_console_noise(): # swallow log warning message
|
||||
result = nameservers_page.form.submit()
|
||||
# form submission was a post with an error, response should be a 200
|
||||
# error text appears twice, once at the top of the page, once around
|
||||
# the required field. subdomain missing an ip
|
||||
self.assertContains(
|
||||
result,
|
||||
str(NameserverError(code=NameserverErrorCodes.MISSING_IP)),
|
||||
count=2,
|
||||
status_code=200
|
||||
)
|
||||
|
||||
def test_domain_nameservers_form_submit_missing_host(self):
|
||||
"""Can change domain's nameservers.
|
||||
|
||||
Uses self.app WebTest because we need to interact with forms.
|
||||
"""
|
||||
# initial nameservers page has one server with two ips
|
||||
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 two hosts, both subdomains,
|
||||
# only one has ips
|
||||
nameservers_page.form["form-1-ip"] = "127.0.0.1"
|
||||
with less_console_noise(): # swallow log warning message
|
||||
result = nameservers_page.form.submit()
|
||||
# form submission was a post with an error, response should be a 200
|
||||
# error text appears twice, once at the top of the page, once around
|
||||
# the required field. nameserver has ip but missing host
|
||||
self.assertContains(
|
||||
result,
|
||||
str(NameserverError(code=NameserverErrorCodes.MISSING_HOST)),
|
||||
count=2,
|
||||
status_code=200
|
||||
)
|
||||
|
||||
def test_domain_nameservers_form_submit_glue_record_not_allowed(self):
|
||||
"""Can change domain's nameservers.
|
||||
|
||||
Uses self.app WebTest because we need to interact with forms.
|
||||
"""
|
||||
nameserver1 = "ns1.igorville.gov"
|
||||
nameserver2 = "ns2.igorville.com"
|
||||
valid_ip = "127.0.0.1"
|
||||
# initial nameservers page has one server with two ips
|
||||
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 two hosts, both subdomains,
|
||||
# only one has ips
|
||||
nameservers_page.form["form-0-server"] = nameserver1
|
||||
nameservers_page.form["form-1-server"] = nameserver2
|
||||
nameservers_page.form["form-1-ip"] = valid_ip
|
||||
with less_console_noise(): # swallow log warning message
|
||||
result = nameservers_page.form.submit()
|
||||
# form submission was a post with an error, response should be a 200
|
||||
# error text appears twice, once at the top of the page, once around
|
||||
# the required field. nameserver has ip but missing host
|
||||
self.assertContains(
|
||||
result,
|
||||
str(NameserverError(
|
||||
code=NameserverErrorCodes.GLUE_RECORD_NOT_ALLOWED
|
||||
)),
|
||||
count=2,
|
||||
status_code=200
|
||||
)
|
||||
|
||||
def test_domain_nameservers_form_submit_invalid_ip(self):
|
||||
"""Can change domain's nameservers.
|
||||
|
||||
Uses self.app WebTest because we need to interact with forms.
|
||||
"""
|
||||
nameserver = "ns2.igorville.gov"
|
||||
invalid_ip = "123"
|
||||
# initial nameservers page has one server with two ips
|
||||
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 two hosts, both subdomains,
|
||||
# only one has ips
|
||||
nameservers_page.form["form-1-server"] = nameserver
|
||||
nameservers_page.form["form-1-ip"] = invalid_ip
|
||||
with less_console_noise(): # swallow log warning message
|
||||
result = nameservers_page.form.submit()
|
||||
# form submission was a post with an error, response should be a 200
|
||||
# error text appears twice, once at the top of the page, once around
|
||||
# the required field. nameserver has ip but missing host
|
||||
self.assertContains(
|
||||
result,
|
||||
str(NameserverError(
|
||||
code=NameserverErrorCodes.INVALID_IP,
|
||||
nameserver=nameserver
|
||||
)),
|
||||
count=2,
|
||||
status_code=200
|
||||
)
|
||||
|
||||
def test_domain_nameservers_form_submits_successfully(self):
|
||||
"""Can change domain's nameservers.
|
||||
|
||||
Uses self.app WebTest because we need to interact with forms.
|
||||
"""
|
||||
nameserver1 = "ns1.igorville.gov"
|
||||
nameserver2 = "ns2.igorville.gov"
|
||||
invalid_ip = "127.0.0.1"
|
||||
# initial nameservers page has one server with two ips
|
||||
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 two hosts, both subdomains,
|
||||
# only one has ips
|
||||
nameservers_page.form["form-0-server"] = nameserver1
|
||||
nameservers_page.form["form-1-server"] = nameserver2
|
||||
nameservers_page.form["form-1-ip"] = invalid_ip
|
||||
with less_console_noise(): # swallow log warning message
|
||||
result = nameservers_page.form.submit()
|
||||
# form submission was a successful post, response should be a 302
|
||||
self.assertEqual(result.status_code, 302)
|
||||
self.assertEqual(
|
||||
result["Location"],
|
||||
|
@ -1416,7 +1565,29 @@ class TestDomainNameservers(TestDomainOverview):
|
|||
page = result.follow()
|
||||
self.assertContains(page, "The name servers for this domain have been updated")
|
||||
|
||||
@skip("Broken by adding registry connection fix in ticket 848")
|
||||
# self.assertContains(result, "This field is required.", count=2, status_code=200)
|
||||
# add a second name server, which is a subdomain, but don't
|
||||
# submit the required ip
|
||||
# nameservers_page.form["form-1-server"] = "ns1.igorville.gov"
|
||||
# with less_console_noise(): # swallow log warning message
|
||||
# result = nameservers_page.form.submit()
|
||||
# # form submission was a post with an error, response should be a 200
|
||||
# self.assertContains(
|
||||
# result,
|
||||
# str(NameserverError(code=NameserverErrorCodes.MISSING_IP)),
|
||||
# count=2,
|
||||
# status_code=200
|
||||
# )
|
||||
# form submission was a post, response should be a redirect
|
||||
# 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()
|
||||
# self.assertContains(page, "The name servers for this domain have been updated")
|
||||
|
||||
def test_domain_nameservers_form_invalid(self):
|
||||
"""Can change domain's nameservers.
|
||||
|
||||
|
@ -1433,9 +1604,9 @@ class TestDomainNameservers(TestDomainOverview):
|
|||
with less_console_noise(): # swallow logged warning message
|
||||
result = nameservers_page.form.submit()
|
||||
# form submission was a post with an error, response should be a 200
|
||||
# error text appears twice, once at the top of the page, once around
|
||||
# the field.
|
||||
self.assertContains(result, "This field is required", count=2, status_code=200)
|
||||
# error text appears four times, twice at the top of the page,
|
||||
# once around each required field.
|
||||
self.assertContains(result, "This field is required", count=4, status_code=200)
|
||||
|
||||
|
||||
class TestDomainAuthorizingOfficial(TestDomainOverview):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue