diff --git a/src/registrar/tests/test_views_domain.py b/src/registrar/tests/test_views_domain.py index 8aca75682..e24085b30 100644 --- a/src/registrar/tests/test_views_domain.py +++ b/src/registrar/tests/test_views_domain.py @@ -6,6 +6,7 @@ from django.urls import reverse from django.contrib.auth import get_user_model from api.tests.common import less_console_noise_decorator +from registrar.models.portfolio import Portfolio from .common import MockEppLib, MockSESClient, create_user # type: ignore from django_webtest import WebTest # type: ignore import boto3_mocking # type: ignore @@ -138,6 +139,7 @@ class TestWithDomainPermissions(TestWithUser): Host.objects.all().delete() Domain.objects.all().delete() UserDomainRole.objects.all().delete() + Portfolio.objects.all().delete() except ValueError: # pass if already deleted pass super().tearDown() @@ -310,6 +312,33 @@ class TestDomainDetail(TestDomainOverview): self.assertContains(detail_page, "noinformation.gov") self.assertContains(detail_page, "Domain missing domain information") + @less_console_noise_decorator + def test_domain_readonly_on_detail_page(self): + """Test that a domain, which is part of a portfolio, but for which the user is not a domain manager, + properly displays read only""" + + portfolio, _ = Portfolio.objects.get_or_create(organization_name="Test org", creator=self.user) + # need to create a different user than self.user because the user needs permission assignments + user = get_user_model().objects.create( + first_name="Test", + last_name="User", + email="bogus@example.gov", + phone="8003111234", + title="test title", + portfolio=portfolio, + portfolio_roles=[User.UserPortfolioRoleChoices.ORGANIZATION_ADMIN], + ) + domain, _ = Domain.objects.get_or_create(name="bogusdomain.gov") + DomainInformation.objects.get_or_create(creator=user, domain=domain, portfolio=portfolio) + self.client.force_login(user) + detail_page = self.client.get(f"/domain/{domain.id}") + # Check that alert message displays properly + self.assertContains( + detail_page, "To manage information for this domain, you must add yourself as a domain manager." + ) + # Check that user does not have option to Edit domain + self.assertNotContains(detail_page, "Edit") + class TestDomainManagers(TestDomainOverview): def tearDown(self):