diff --git a/src/registrar/tests/test_views.py b/src/registrar/tests/test_views.py index 77b256eed..2238a7ae5 100644 --- a/src/registrar/tests/test_views.py +++ b/src/registrar/tests/test_views.py @@ -1429,6 +1429,9 @@ class TestDomainManagers(TestDomainOverview): email_address = "mayor@igorville.gov" User.objects.filter(email=email_address).delete() + self.user.is_staff = False + self.user.save() + self.domain_information, _ = DomainInformation.objects.get_or_create(creator=self.user, domain=self.domain) mock_client = MagicMock() @@ -1467,6 +1470,9 @@ class TestDomainManagers(TestDomainOverview): email_address = "mayor@igorville.gov" User.objects.get_or_create(email=email_address, username="fakeuser@fakeymail.com") + self.user.is_staff = False + self.user.save() + self.domain_information, _ = DomainInformation.objects.get_or_create(creator=self.user, domain=self.domain) mock_client = MagicMock() @@ -1497,6 +1503,44 @@ class TestDomainManagers(TestDomainOverview): self.assertNotIn("First", email_content) self.assertNotIn("Last", email_content) self.assertNotIn("First Last", email_content) + + @boto3_mocking.patching + def test_domain_invitation_email_has_email_as_requester_staff(self): + """Inviting a user sends them an email, with email as the name.""" + # Create a fake user object + email_address = "mayor@igorville.gov" + User.objects.get_or_create(email=email_address, username="fakeuser@fakeymail.com") + + self.domain_information, _ = DomainInformation.objects.get_or_create(creator=self.user, domain=self.domain) + + mock_client = MagicMock() + mock_client_instance = mock_client.return_value + + with boto3_mocking.clients.handler_for("sesv2", mock_client): + add_page = self.app.get(reverse("domain-users-add", kwargs={"pk": self.domain.id})) + session_id = self.app.cookies[settings.SESSION_COOKIE_NAME] + add_page.form["email"] = email_address + self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id) + add_page.form.submit() + + # check the mock instance to see if `send_email` was called right + mock_client_instance.send_email.assert_called_once_with( + FromEmailAddress=settings.DEFAULT_FROM_EMAIL, + Destination={"ToAddresses": [email_address]}, + Content=ANY, + ) + + # Check the arguments passed to send_email method + _, kwargs = mock_client_instance.send_email.call_args + + # Extract the email content, and check that the message is as we expect + email_content = kwargs["Content"]["Simple"]["Body"]["Text"]["Data"] + self.assertIn("help@get.gov", email_content) + + # Check that the requesters first/last name do not exist + self.assertNotIn("First", email_content) + self.assertNotIn("Last", email_content) + self.assertNotIn("First Last", email_content) @boto3_mocking.patching def test_domain_invitation_email_displays_error_non_existent(self): @@ -1507,6 +1551,7 @@ class TestDomainManagers(TestDomainOverview): # Give the user who is sending the email an invalid email address self.user.email = "" + self.user.is_staff = False self.user.save() self.domain_information, _ = DomainInformation.objects.get_or_create(creator=self.user, domain=self.domain) @@ -1539,6 +1584,7 @@ class TestDomainManagers(TestDomainOverview): # Give the user who is sending the email an invalid email address self.user.email = "" + self.user.is_staff = False self.user.save() self.domain_information, _ = DomainInformation.objects.get_or_create(creator=self.user, domain=self.domain) diff --git a/src/registrar/views/domain.py b/src/registrar/views/domain.py index c0f4cc5b1..3bc11e920 100644 --- a/src/registrar/views/domain.py +++ b/src/registrar/views/domain.py @@ -650,10 +650,13 @@ class DomainAddUserView(DomainFormBaseView): add_success: bool- default True indicates: adding a success message to the view if the email sending succeeds""" + # Set a default email address to send to for staff + requester_email = "help@get.gov" + # Check if the email requester has a valid email address - if requester.email is not None and requester.email.strip() != "": + if not requester.is_staff and requester.email is not None and requester.email.strip() != "": requester_email = requester.email - else: + elif not requester.is_staff: messages.error(self.request, "Can't send invitation email. No email is associated with your account.") logger.error( f"Can't send email to '{email}' on domain '{self.object}'."