mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-05-17 18:09:25 +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
|
from django_webtest import WebTest # type: ignore
|
||||||
import boto3_mocking # type: ignore
|
import boto3_mocking # type: ignore
|
||||||
|
|
||||||
|
from registrar.utility.errors import (
|
||||||
|
NameserverError,
|
||||||
|
NameserverErrorCodes,
|
||||||
|
)
|
||||||
|
|
||||||
from registrar.models import (
|
from registrar.models import (
|
||||||
DomainApplication,
|
DomainApplication,
|
||||||
|
@ -1393,20 +1397,165 @@ class TestDomainNameservers(TestDomainOverview):
|
||||||
)
|
)
|
||||||
self.assertContains(page, "DNS name servers")
|
self.assertContains(page, "DNS name servers")
|
||||||
|
|
||||||
@skip("Broken by adding registry connection fix in ticket 848")
|
def test_domain_nameservers_form_submit_one_nameserver(self):
|
||||||
def test_domain_nameservers_form(self):
|
|
||||||
"""Can change domain's nameservers.
|
"""Can change domain's nameservers.
|
||||||
|
|
||||||
Uses self.app WebTest because we need to interact with forms.
|
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(
|
nameservers_page = self.app.get(
|
||||||
reverse("domain-dns-nameservers", kwargs={"pk": self.domain.id})
|
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]
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
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
|
with less_console_noise(): # swallow log warning message
|
||||||
result = nameservers_page.form.submit()
|
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.status_code, 302)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
result["Location"],
|
result["Location"],
|
||||||
|
@ -1416,7 +1565,29 @@ class TestDomainNameservers(TestDomainOverview):
|
||||||
page = result.follow()
|
page = result.follow()
|
||||||
self.assertContains(page, "The name servers for this domain have been updated")
|
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):
|
def test_domain_nameservers_form_invalid(self):
|
||||||
"""Can change domain's nameservers.
|
"""Can change domain's nameservers.
|
||||||
|
|
||||||
|
@ -1433,9 +1604,9 @@ class TestDomainNameservers(TestDomainOverview):
|
||||||
with less_console_noise(): # swallow logged warning message
|
with less_console_noise(): # swallow logged warning message
|
||||||
result = nameservers_page.form.submit()
|
result = nameservers_page.form.submit()
|
||||||
# form submission was a post with an error, response should be a 200
|
# 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
|
# error text appears four times, twice at the top of the page,
|
||||||
# the field.
|
# once around each required field.
|
||||||
self.assertContains(result, "This field is required", count=2, status_code=200)
|
self.assertContains(result, "This field is required", count=4, status_code=200)
|
||||||
|
|
||||||
|
|
||||||
class TestDomainAuthorizingOfficial(TestDomainOverview):
|
class TestDomainAuthorizingOfficial(TestDomainOverview):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue