diff --git a/src/registrar/models/domain.py b/src/registrar/models/domain.py index 344ef5a00..12cb8b5db 100644 --- a/src/registrar/models/domain.py +++ b/src/registrar/models/domain.py @@ -256,7 +256,6 @@ class Domain(TimeStampedModel, DomainHelper): hostList = [] for host in hosts: hostList.append((host["name"], host["addrs"])) - return hostList def _create_host(self, host, addrs): diff --git a/src/registrar/templates/domain_detail.html b/src/registrar/templates/domain_detail.html index 4ddbd673a..e220fe1aa 100644 --- a/src/registrar/templates/domain_detail.html +++ b/src/registrar/templates/domain_detail.html @@ -29,7 +29,7 @@ {% url 'domain-dns-nameservers' pk=domain.id as url %} {% if domain.nameservers|length > 0 %} - {% include "includes/summary_item.html" with title='DNS name servers' value=domain.nameservers list='true' edit_link=url %} + {% include "includes/summary_item.html" with title='DNS name servers' domains='true' value=domain.nameservers list='true' edit_link=url %} {% else %}

DNS name servers

No DNS name servers have been added yet. Before your domain can be used we’ll need information about your domain name servers.

diff --git a/src/registrar/templates/includes/summary_item.html b/src/registrar/templates/includes/summary_item.html index 6fcad0650..8a33bb1d5 100644 --- a/src/registrar/templates/includes/summary_item.html +++ b/src/registrar/templates/includes/summary_item.html @@ -43,7 +43,6 @@ {% else %} {% include "includes/contact.html" with contact=value %} {% endif %} - {% elif list %} {% if value|length == 1 %} {% if users %} @@ -56,6 +55,17 @@ {% for item in value %} {% if users %}
  • {{ item.user.email }}
  • + {% elif domains %} +
  • + {{ item.0 }} + {% if item.1 %} + ({% spaceless %} + {% for addr in item.1 %} + {{addr}}{% if not forloop.last %}, {% endif %} + {% endfor %} + {% endspaceless %}) + {% endif %} +
  • {% else %}
  • {{ item }}
  • {% endif %} diff --git a/src/registrar/tests/common.py b/src/registrar/tests/common.py index 2b5b8254a..e66bc7723 100644 --- a/src/registrar/tests/common.py +++ b/src/registrar/tests/common.py @@ -738,6 +738,7 @@ class MockEppLib(TestCase): "ns1.cats-are-superior3.com", ], ) + infoDomainNoHost = fakedEppObject( "my-nameserver.gov", cr_date=datetime.datetime(2023, 5, 25, 19, 45, 35), @@ -793,7 +794,20 @@ class MockEppLib(TestCase): infoDomainHasIP = fakedEppObject( "nameserverwithip.gov", cr_date=datetime.datetime(2023, 5, 25, 19, 45, 35), - contacts=[], + contacts=[ + common.DomainContact( + contact="securityContact", + type=PublicContact.ContactTypeChoices.SECURITY, + ), + common.DomainContact( + contact="technicalContact", + type=PublicContact.ContactTypeChoices.TECHNICAL, + ), + common.DomainContact( + contact="adminContact", + type=PublicContact.ContactTypeChoices.ADMINISTRATIVE, + ), + ], hosts=[ "ns1.nameserverwithip.gov", "ns2.nameserverwithip.gov", @@ -802,6 +816,29 @@ class MockEppLib(TestCase): addrs=["1.2.3.4", "2.3.4.5"], ) + justNameserver = fakedEppObject( + "justnameserver.com", + cr_date=datetime.datetime(2023, 5, 25, 19, 45, 35), + contacts=[ + common.DomainContact( + contact="securityContact", + type=PublicContact.ContactTypeChoices.SECURITY, + ), + common.DomainContact( + contact="technicalContact", + type=PublicContact.ContactTypeChoices.TECHNICAL, + ), + common.DomainContact( + contact="adminContact", + type=PublicContact.ContactTypeChoices.ADMINISTRATIVE, + ), + ], + hosts=[ + "ns1.justnameserver.com", + "ns2.justnameserver.com", + ], + ) + infoDomainCheckHostIPCombo = fakedEppObject( "nameserversubdomain.gov", cr_date=datetime.datetime(2023, 5, 25, 19, 45, 35), @@ -922,6 +959,7 @@ class MockEppLib(TestCase): "threenameserversDomain.gov": (self.infoDomainThreeHosts, None), "defaultsecurity.gov": (self.InfoDomainWithDefaultSecurityContact, None), "defaulttechnical.gov": (self.InfoDomainWithDefaultTechnicalContact, None), + "justnameserver.com": (self.justNameserver, None), } # Retrieve the corresponding values from the dictionary diff --git a/src/registrar/tests/test_views.py b/src/registrar/tests/test_views.py index bff64eb33..0a472b885 100644 --- a/src/registrar/tests/test_views.py +++ b/src/registrar/tests/test_views.py @@ -1095,6 +1095,13 @@ class TestWithDomainPermissions(TestWithUser): def setUp(self): super().setUp() self.domain, _ = Domain.objects.get_or_create(name="igorville.gov") + self.domain_with_ip, _ = Domain.objects.get_or_create( + name="nameserverwithip.gov" + ) + self.domain_just_nameserver, _ = Domain.objects.get_or_create( + name="justnameserver.com" + ) + self.domain_dsdata, _ = Domain.objects.get_or_create(name="dnssec-dsdata.gov") self.domain_multdsdata, _ = Domain.objects.get_or_create( name="dnssec-multdsdata.gov" @@ -1104,9 +1111,11 @@ class TestWithDomainPermissions(TestWithUser): self.domain_dnssec_none, _ = Domain.objects.get_or_create( name="dnssec-none.gov" ) + self.domain_information, _ = DomainInformation.objects.get_or_create( creator=self.user, domain=self.domain ) + DomainInformation.objects.get_or_create( creator=self.user, domain=self.domain_dsdata ) @@ -1116,9 +1125,17 @@ class TestWithDomainPermissions(TestWithUser): DomainInformation.objects.get_or_create( creator=self.user, domain=self.domain_dnssec_none ) + DomainInformation.objects.get_or_create( + creator=self.user, domain=self.domain_with_ip + ) + DomainInformation.objects.get_or_create( + creator=self.user, domain=self.domain_just_nameserver + ) + self.role, _ = UserDomainRole.objects.get_or_create( user=self.user, domain=self.domain, role=UserDomainRole.Roles.MANAGER ) + UserDomainRole.objects.get_or_create( user=self.user, domain=self.domain_dsdata, role=UserDomainRole.Roles.MANAGER ) @@ -1132,6 +1149,16 @@ class TestWithDomainPermissions(TestWithUser): domain=self.domain_dnssec_none, role=UserDomainRole.Roles.MANAGER, ) + UserDomainRole.objects.get_or_create( + user=self.user, + domain=self.domain_with_ip, + role=UserDomainRole.Roles.MANAGER, + ) + UserDomainRole.objects.get_or_create( + user=self.user, + domain=self.domain_just_nameserver, + role=UserDomainRole.Roles.MANAGER, + ) def tearDown(self): try: @@ -1215,6 +1242,37 @@ class TestDomainOverview(TestWithDomainPermissions, WebTest): response = self.client.get(reverse("domain", kwargs={"pk": self.domain.id})) self.assertEqual(response.status_code, 403) + def test_domain_see_just_nameserver(self): + home_page = self.app.get("/") + self.assertContains(home_page, "justnameserver.com") + + # View nameserver on Domain Overview page + detail_page = self.app.get( + reverse("domain", kwargs={"pk": self.domain_just_nameserver.id}) + ) + + self.assertContains(detail_page, "justnameserver.com") + self.assertContains(detail_page, "ns1.justnameserver.com") + self.assertContains(detail_page, "ns2.justnameserver.com") + + def test_domain_see_nameserver_and_ip(self): + home_page = self.app.get("/") + self.assertContains(home_page, "nameserverwithip.gov") + + # View nameserver on Domain Overview page + detail_page = self.app.get( + reverse("domain", kwargs={"pk": self.domain_with_ip.id}) + ) + + self.assertContains(detail_page, "nameserverwithip.gov") + + self.assertContains(detail_page, "ns1.nameserverwithip.gov") + self.assertContains(detail_page, "ns2.nameserverwithip.gov") + self.assertContains(detail_page, "ns3.nameserverwithip.gov") + # Splitting IP addresses bc there is odd whitespace and can't strip text + self.assertContains(detail_page, "(1.2.3.4,") + self.assertContains(detail_page, "2.3.4.5)") + class TestDomainManagers(TestDomainOverview): def test_domain_managers(self):