diff --git a/src/registrar/tests/test_admin.py b/src/registrar/tests/test_admin.py index f14259dd1..c9f7a9032 100644 --- a/src/registrar/tests/test_admin.py +++ b/src/registrar/tests/test_admin.py @@ -28,7 +28,6 @@ from registrar.admin import ( TransitionDomainAdmin, UserGroupAdmin, PortfolioAdmin, - UserPortfolioPermissionAdmin, ) from registrar.models import ( Domain, @@ -70,8 +69,6 @@ from django.contrib.auth import get_user_model from django.contrib import messages from unittest.mock import ANY, call, patch, Mock -from django.forms import ValidationError - import logging @@ -199,7 +196,9 @@ class TestDomainInvitationAdmin(TestCase): @patch("registrar.admin.send_domain_invitation_email") @patch("registrar.admin.send_portfolio_invitation_email") @patch("django.contrib.messages.success") - def test_add_domain_invitation_success_when_user_not_portfolio_member(self, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email): + def test_add_domain_invitation_success_when_user_not_portfolio_member( + self, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email + ): """Test saving a domain invitation when the user exists and is not a portfolio member. Should send out domain and portfolio invites. @@ -235,10 +234,12 @@ class TestDomainInvitationAdmin(TestCase): ) # Assert success message - mock_messages_success.assert_has_calls([ - call(request, "test@example.com has been invited to the organization: new portfolio"), - call(request, "test@example.com has been invited to the domain: example.com"), - ]) + mock_messages_success.assert_has_calls( + [ + call(request, "test@example.com has been invited to the organization: new portfolio"), + call(request, "test@example.com has been invited to the domain: example.com"), + ] + ) # Assert the invitations were saved self.assertEqual(DomainInvitation.objects.count(), 1) @@ -262,7 +263,9 @@ class TestDomainInvitationAdmin(TestCase): @patch("registrar.admin.send_domain_invitation_email") @patch("registrar.admin.send_portfolio_invitation_email") @patch("django.contrib.messages.success") - def test_add_domain_invitation_success_when_user_not_portfolio_member_and_organization_feature_off(self, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email): + def test_add_domain_invitation_success_when_user_not_portfolio_member_and_organization_feature_off( + self, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email + ): """Test saving a domain invitation when the user exists and organization_feature flag is off. Should send out a domain invitation. @@ -270,7 +273,7 @@ class TestDomainInvitationAdmin(TestCase): Should trigger success message for the domain invitation. Should retrieve the domain invitation. Should not create a portfolio invitation.""" - + user = User.objects.create_user(email="test@example.com", username="username") # Create a domain invitation instance @@ -322,7 +325,9 @@ class TestDomainInvitationAdmin(TestCase): @patch("registrar.admin.send_domain_invitation_email") @patch("registrar.admin.send_portfolio_invitation_email") @patch("django.contrib.messages.success") - def test_add_domain_invitation_success_when_user_not_portfolio_member_and_multiple_portfolio_feature_on(self, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email): + def test_add_domain_invitation_success_when_user_not_portfolio_member_and_multiple_portfolio_feature_on( + self, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email + ): """Test saving a domain invitation when the user exists and multiple_portfolio flag is on. Should send out a domain invitation. @@ -330,7 +335,7 @@ class TestDomainInvitationAdmin(TestCase): Should trigger success message for the domain invitation. Should retrieve the domain invitation. Should not create a portfolio invitation.""" - + user = User.objects.create_user(email="test@example.com", username="username") # Create a domain invitation instance @@ -381,7 +386,9 @@ class TestDomainInvitationAdmin(TestCase): @patch("registrar.admin.send_domain_invitation_email") @patch("registrar.admin.send_portfolio_invitation_email") @patch("django.contrib.messages.success") - def test_add_domain_invitation_success_when_user_existing_portfolio_member(self, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email): + def test_add_domain_invitation_success_when_user_existing_portfolio_member( + self, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email + ): """Test saving a domain invitation when the user exists and a portfolio invitation exists. Should send out domain invitation only. @@ -393,7 +400,9 @@ class TestDomainInvitationAdmin(TestCase): # Create a domain invitation instance invitation = DomainInvitation(email="test@example.com", domain=self.domain) - UserPortfolioPermission.objects.create(user=user, portfolio=self.portfolio, roles=[UserPortfolioRoleChoices.ORGANIZATION_MEMBER]) + UserPortfolioPermission.objects.create( + user=user, portfolio=self.portfolio, roles=[UserPortfolioRoleChoices.ORGANIZATION_MEMBER] + ) admin_instance = DomainInvitationAdmin(DomainInvitation, admin_site=None) @@ -429,14 +438,17 @@ class TestDomainInvitationAdmin(TestCase): self.assertEqual(DomainInvitation.objects.count(), 1) self.assertEqual(DomainInvitation.objects.first().email, "test@example.com") self.assertEqual(PortfolioInvitation.objects.count(), 0) - + @less_console_noise_decorator @override_flag("organization_feature", active=True) @patch("registrar.admin.send_domain_invitation_email") @patch("registrar.admin.send_portfolio_invitation_email") @patch("django.contrib.messages.error") - def test_add_domain_invitation_when_user_not_portfolio_member_raises_exception_sending_portfolio_email(self, mock_messages_error, mock_send_portfolio_email, mock_send_domain_email): - """Test saving a domain invitation when the user exists and is not a portfolio member raises sending portfolio email exception. + def test_add_domain_invitation_when_user_not_portfolio_member_raises_exception_sending_portfolio_email( + self, mock_messages_error, mock_send_portfolio_email, mock_send_domain_email + ): + """Test saving a domain invitation when the user exists and is not a portfolio member raises + sending portfolio email exception. Should only attempt to send the portfolio invitation. Should trigger error message on portfolio invitation. @@ -455,7 +467,7 @@ class TestDomainInvitationAdmin(TestCase): request = self.factory.post("/admin/registrar/DomainInvitation/add/") request.user = self.superuser - # Patch the retrieve method to ensure it is not called + # Patch the retrieve method to ensure it is not called with patch.object(DomainInvitation, "retrieve") as domain_invitation_mock_retrieve: with patch.object(PortfolioInvitation, "retrieve") as portfolio_invitation_mock_retrieve: admin_instance.save_model(request, invitation, form=None, change=False) @@ -487,8 +499,11 @@ class TestDomainInvitationAdmin(TestCase): @patch("registrar.admin.send_portfolio_invitation_email") @patch("django.contrib.messages.success") @patch("django.contrib.messages.error") - def test_add_domain_invitation_when_user_not_portfolio_member_raises_exception_sending_domain_email(self, mock_messages_error, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email): - """Test saving a domain invitation when the user exists and is not a portfolio member raises sending domain email exception. + def test_add_domain_invitation_when_user_not_portfolio_member_raises_exception_sending_domain_email( + self, mock_messages_error, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email + ): + """Test saving a domain invitation when the user exists and is not a portfolio member raises + sending domain email exception. Should send out the portfolio invitation and attempt to send the domain invitation. Should trigger portfolio invitation success message. @@ -552,8 +567,11 @@ class TestDomainInvitationAdmin(TestCase): @patch("registrar.admin.send_portfolio_invitation_email") @patch("django.contrib.messages.success") @patch("django.contrib.messages.error") - def test_add_domain_invitation_when_user_existing_portfolio_member_raises_exception_sending_domain_email(self, mock_messages_error, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email): - """Test saving a domain invitation when the user exists and is not a portfolio member raises sending domain email exception. + def test_add_domain_invitation_when_user_existing_portfolio_member_raises_exception_sending_domain_email( + self, mock_messages_error, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email + ): + """Test saving a domain invitation when the user exists and is not a portfolio member raises + sending domain email exception. Should send out the portfolio invitation and attempt to send the domain invitation. Should trigger portfolio invitation success message. @@ -614,7 +632,9 @@ class TestDomainInvitationAdmin(TestCase): @patch("registrar.admin.send_domain_invitation_email") @patch("registrar.admin.send_portfolio_invitation_email") @patch("django.contrib.messages.success") - def test_add_domain_invitation_success_when_email_not_portfolio_member(self, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email): + def test_add_domain_invitation_success_when_email_not_portfolio_member( + self, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email + ): """Test saving a domain invitation when the user does not exist. Should send out domain and portfolio invitations. @@ -654,10 +674,12 @@ class TestDomainInvitationAdmin(TestCase): portfolio_invitation_mock_retrieve.assert_not_called() # Assert success message - mock_messages_success.assert_has_calls([ - call(request, "nonexistent@example.com has been invited to the organization: new portfolio"), - call(request, "nonexistent@example.com has been invited to the domain: example.com"), - ]) + mock_messages_success.assert_has_calls( + [ + call(request, "nonexistent@example.com has been invited to the organization: new portfolio"), + call(request, "nonexistent@example.com has been invited to the domain: example.com"), + ] + ) # Assert the invitations were saved self.assertEqual(DomainInvitation.objects.count(), 1) @@ -670,7 +692,9 @@ class TestDomainInvitationAdmin(TestCase): @patch("registrar.admin.send_domain_invitation_email") @patch("registrar.admin.send_portfolio_invitation_email") @patch("django.contrib.messages.success") - def test_add_domain_invitation_success_when_email_not_portfolio_member_and_organization_feature_off(self, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email): + def test_add_domain_invitation_success_when_email_not_portfolio_member_and_organization_feature_off( + self, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email + ): """Test saving a domain invitation when the user does not exist and organization_feature flag is off. Should send out a domain invitation. @@ -722,7 +746,9 @@ class TestDomainInvitationAdmin(TestCase): @patch("registrar.admin.send_domain_invitation_email") @patch("registrar.admin.send_portfolio_invitation_email") @patch("django.contrib.messages.success") - def test_add_domain_invitation_success_when_email_not_portfolio_member_and_multiple_portfolio_feature_on(self, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email): + def test_add_domain_invitation_success_when_email_not_portfolio_member_and_multiple_portfolio_feature_on( + self, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email + ): """Test saving a domain invitation when the user does not exist and multiple_portfolio flag is on. Should send out a domain invitation. @@ -773,7 +799,9 @@ class TestDomainInvitationAdmin(TestCase): @patch("registrar.admin.send_domain_invitation_email") @patch("registrar.admin.send_portfolio_invitation_email") @patch("django.contrib.messages.success") - def test_add_domain_invitation_success_when_email_existing_portfolio_invitation(self, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email): + def test_add_domain_invitation_success_when_email_existing_portfolio_invitation( + self, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email + ): """Test saving a domain invitation when the user does not exist and a portfolio invitation exists. Should send out domain invitation only. @@ -781,7 +809,11 @@ class TestDomainInvitationAdmin(TestCase): Should not attempt to retrieve the domain invitation. Should not attempt to retrieve the portfolio invitation.""" - PortfolioInvitation.objects.create(email="nonexistent@example.com", portfolio=self.portfolio, roles=[UserPortfolioRoleChoices.ORGANIZATION_MEMBER]) + PortfolioInvitation.objects.create( + email="nonexistent@example.com", + portfolio=self.portfolio, + roles=[UserPortfolioRoleChoices.ORGANIZATION_MEMBER], + ) # Create a domain invitation instance invitation = DomainInvitation(email="nonexistent@example.com", domain=self.domain) @@ -827,8 +859,11 @@ class TestDomainInvitationAdmin(TestCase): @patch("registrar.admin.send_domain_invitation_email") @patch("registrar.admin.send_portfolio_invitation_email") @patch("django.contrib.messages.error") - def test_add_domain_invitation_when_user_not_portfolio_email_raises_exception_sending_portfolio_email(self, mock_messages_error, mock_send_portfolio_email, mock_send_domain_email): - """Test saving a domain invitation when the user exists and is not a portfolio member raises sending portfolio email exception. + def test_add_domain_invitation_when_user_not_portfolio_email_raises_exception_sending_portfolio_email( + self, mock_messages_error, mock_send_portfolio_email, mock_send_domain_email + ): + """Test saving a domain invitation when the user exists and is not a portfolio member raises + sending portfolio email exception. Should only attempt to send the portfolio invitation. Should trigger error message on portfolio invitation. @@ -846,7 +881,7 @@ class TestDomainInvitationAdmin(TestCase): request = self.factory.post("/admin/registrar/DomainInvitation/add/") request.user = self.superuser - # Patch the retrieve method to ensure it is not called + # Patch the retrieve method to ensure it is not called with patch.object(DomainInvitation, "retrieve") as domain_invitation_mock_retrieve: with patch.object(PortfolioInvitation, "retrieve") as portfolio_invitation_mock_retrieve: admin_instance.save_model(request, invitation, form=None, change=False) @@ -878,8 +913,11 @@ class TestDomainInvitationAdmin(TestCase): @patch("registrar.admin.send_portfolio_invitation_email") @patch("django.contrib.messages.success") @patch("django.contrib.messages.error") - def test_add_domain_invitation_when_user_not_portfolio_email_raises_exception_sending_domain_email(self, mock_messages_error, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email): - """Test saving a domain invitation when the user exists and is not a portfolio member raises sending domain email exception. + def test_add_domain_invitation_when_user_not_portfolio_email_raises_exception_sending_domain_email( + self, mock_messages_error, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email + ): + """Test saving a domain invitation when the user exists and is not a portfolio member + raises sending domain email exception. Should send out the portfolio invitation and attempt to send the domain invitation. Should trigger portfolio invitation success message. @@ -941,8 +979,11 @@ class TestDomainInvitationAdmin(TestCase): @patch("registrar.admin.send_portfolio_invitation_email") @patch("django.contrib.messages.success") @patch("django.contrib.messages.error") - def test_add_domain_invitation_when_user_existing_portfolio_email_raises_exception_sending_domain_email(self, mock_messages_error, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email): - """Test saving a domain invitation when the user exists and is not a portfolio member raises sending domain email exception. + def test_add_domain_invitation_when_user_existing_portfolio_email_raises_exception_sending_domain_email( + self, mock_messages_error, mock_messages_success, mock_send_portfolio_email, mock_send_domain_email + ): + """Test saving a domain invitation when the user exists and is not a portfolio member + raises sending domain email exception. Should send out the portfolio invitation and attempt to send the domain invitation. Should trigger portfolio invitation success message. @@ -953,7 +994,9 @@ class TestDomainInvitationAdmin(TestCase): mock_send_domain_email.side_effect = MissingEmailError("craving a burger") PortfolioInvitation.objects.create( - email="nonexistent@example.com", portfolio=self.portfolio, roles=[UserPortfolioRoleChoices.ORGANIZATION_MEMBER] + email="nonexistent@example.com", + portfolio=self.portfolio, + roles=[UserPortfolioRoleChoices.ORGANIZATION_MEMBER], ) # Create a domain invitation instance @@ -1208,7 +1251,9 @@ class TestPortfolioInvitationAdmin(TestCase): @less_console_noise_decorator @patch("registrar.admin.send_portfolio_invitation_email") @patch("django.contrib.messages.success") # Mock the `messages.warning` call - def test_add_portfolio_invitation_auto_retrieves_invitation_when_user_exists(self, mock_messages_success, mock_send_email): + def test_add_portfolio_invitation_auto_retrieves_invitation_when_user_exists( + self, mock_messages_success, mock_send_email + ): """On save_model, we create and retrieve a portfolio invitation if the user exists.""" # Create an instance of the admin class @@ -1247,11 +1292,13 @@ class TestPortfolioInvitationAdmin(TestCase): # The invitation is not retrieved portfolio_invitation_mock_retrieve.assert_called_once() - + @less_console_noise_decorator @patch("registrar.admin.send_portfolio_invitation_email") @patch("django.contrib.messages.success") # Mock the `messages.warning` call - def test_add_portfolio_invitation_does_not_retrieve_invitation_when_no_user(self, mock_messages_success, mock_send_email): + def test_add_portfolio_invitation_does_not_retrieve_invitation_when_no_user( + self, mock_messages_success, mock_send_email + ): """On save_model, we create but do not retrieve a portfolio invitation if the user does not exist.""" # Create an instance of the admin class @@ -1317,9 +1364,7 @@ class TestPortfolioInvitationAdmin(TestCase): admin_instance.save_model(request, portfolio_invitation, None, None) # Assert that messages.error was called with the correct message - mock_messages_error.assert_called_once_with( - request, "Email service unavailable" - ) + mock_messages_error.assert_called_once_with(request, "Email service unavailable") @less_console_noise_decorator @patch("registrar.admin.send_portfolio_invitation_email") @@ -1382,9 +1427,7 @@ class TestPortfolioInvitationAdmin(TestCase): admin_instance.save_model(request, portfolio_invitation, None, None) # Assert that messages.error was called with the correct message - mock_messages_error.assert_called_once_with( - request, "Could not send email invitation." - ) + mock_messages_error.assert_called_once_with(request, "Could not send email invitation.") class TestHostAdmin(TestCase): diff --git a/src/registrar/tests/test_models.py b/src/registrar/tests/test_models.py index 31af8462a..d8db0f043 100644 --- a/src/registrar/tests/test_models.py +++ b/src/registrar/tests/test_models.py @@ -361,7 +361,7 @@ class TestPortfolioInvitations(TestCase): portfolio=third_portfolio, ).exists() ) - + @less_console_noise_decorator def test_clean_portfolio_invitation(self): """Tests validation of portfolio invitation permissions""" @@ -407,7 +407,7 @@ class TestPortfolioInvitations(TestCase): def test_clean_user_portfolio_permission_multiple_portfolios_flag_off_and_duplicate_permission(self): """MISSING TEST: Test validation of multiple_portfolios flag. Scenario 1: Flag is inactive, and the user has existing portfolio permissions - + NOTE: Refer to the same test under TestUserPortfolioPermission""" pass @@ -417,7 +417,7 @@ class TestPortfolioInvitations(TestCase): def test_clean_user_portfolio_permission_multiple_portfolios_flag_off_and_existing_invitation(self): """MISSING TEST: Test validation of multiple_portfolios flag. Scenario 2: Flag is inactive, and the user has existing portfolio invitation to another portfolio - + NOTE: Refer to the same test under TestUserPortfolioPermission""" pass @@ -427,18 +427,17 @@ class TestPortfolioInvitations(TestCase): def test_clean_user_portfolio_permission_multiple_portfolios_flag_on_and_duplicate_permission(self): """MISSING TEST: Test validation of multiple_portfolios flag. Scenario 3: Flag is active, and the user has existing portfolio invitation - + NOTE: Refer to the same test under TestUserPortfolioPermission""" pass - @less_console_noise_decorator @override_flag("multiple_portfolios", active=True) def test_clean_user_portfolio_permission_multiple_portfolios_flag_on_and_existing_invitation(self): """MISSING TEST: Test validation of multiple_portfolios flag. Scenario 4: Flag is active, and the user has existing portfolio invitation to another portfolio - + NOTE: Refer to the same test under TestUserPortfolioPermission""" pass @@ -625,7 +624,7 @@ class TestUserPortfolioPermission(TestCase): """Test validation of multiple_portfolios flag. Scenario 1: Flag is inactive, and the user has existing portfolio permissions""" - #existing permission + # existing permission UserPortfolioPermission.objects.create( user=self.superuser, roles=[UserPortfolioRoleChoices.ORGANIZATION_ADMIN], @@ -699,7 +698,6 @@ class TestUserPortfolioPermission(TestCase): except ValidationError: self.fail("ValidationError was raised unexpectedly when flag is active.") - @less_console_noise_decorator @override_flag("multiple_portfolios", active=True) def test_clean_user_portfolio_permission_multiple_portfolios_flag_on_and_existing_invitation(self): diff --git a/src/registrar/tests/test_views_domain.py b/src/registrar/tests/test_views_domain.py index 56cac91a1..5a1dbbf82 100644 --- a/src/registrar/tests/test_views_domain.py +++ b/src/registrar/tests/test_views_domain.py @@ -665,7 +665,7 @@ class TestDomainManagers(TestDomainOverview): self.assertEqual(portfolio_invitation.portfolio, self.portfolio) self.assertEqual(portfolio_invitation.status, PortfolioInvitation.PortfolioInvitationStatus.RETRIEVED) - #Assert that the UserPortfolioPermission is created + # Assert that the UserPortfolioPermission is created user_portfolio_permission = UserPortfolioPermission.objects.filter( user=self.user, portfolio=self.portfolio ).first() @@ -680,7 +680,9 @@ class TestDomainManagers(TestDomainOverview): @less_console_noise_decorator @patch("registrar.views.domain.send_portfolio_invitation_email") @patch("registrar.views.domain.send_domain_invitation_email") - def test_domain_user_add_form_sends_portfolio_invitation_to_new_email(self, mock_send_domain_email, mock_send_portfolio_email): + def test_domain_user_add_form_sends_portfolio_invitation_to_new_email( + self, mock_send_domain_email, mock_send_portfolio_email + ): """Adding an email not associated with a user works and sends portfolio invitation.""" add_page = self.app.get(reverse("domain-users-add", kwargs={"pk": self.domain.id})) session_id = self.app.cookies[settings.SESSION_COOKIE_NAME] @@ -720,7 +722,7 @@ class TestDomainManagers(TestDomainOverview): self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id) success_page = success_result.follow() self.assertContains(success_page, "notauser@igorville.gov") - + @boto3_mocking.patching @override_flag("organization_feature", active=True) @less_console_noise_decorator diff --git a/src/registrar/tests/test_views_portfolio.py b/src/registrar/tests/test_views_portfolio.py index a6edb710d..fd1a1331d 100644 --- a/src/registrar/tests/test_views_portfolio.py +++ b/src/registrar/tests/test_views_portfolio.py @@ -2324,7 +2324,10 @@ class TestPortfolioMemberDomainsEditView(TestPortfolioMemberDomainsView): self.assertRedirects(response, reverse("member-domains-edit", kwargs={"pk": self.portfolio_permission.pk})) messages = list(response.wsgi_request._messages) self.assertEqual(len(messages), 1) - self.assertEqual(str(messages[0]), "An unexpected error occurred: Failed to send email. If the issue persists, please contact help@get.gov.") + self.assertEqual( + str(messages[0]), + "An unexpected error occurred: Failed to send email. If the issue persists, please contact help@get.gov.", + ) class TestPortfolioInvitedMemberEditDomainsView(TestPortfolioInvitedMemberDomainsView): @@ -2433,7 +2436,6 @@ class TestPortfolioInvitedMemberEditDomainsView(TestPortfolioInvitedMemberDomain self.assertEqual(list(call_args["domains"]), list(expected_domains)) self.assertFalse(call_args.get("is_member_of_different_org")) - @less_console_noise_decorator @override_flag("organization_feature", active=True) @override_flag("organization_members", active=True) @@ -2607,7 +2609,10 @@ class TestPortfolioInvitedMemberEditDomainsView(TestPortfolioInvitedMemberDomain self.assertRedirects(response, reverse("invitedmember-domains-edit", kwargs={"pk": self.invitation.pk})) messages = list(response.wsgi_request._messages) self.assertEqual(len(messages), 1) - self.assertEqual(str(messages[0]), "An unexpected error occurred: Failed to send email. If the issue persists, please contact help@get.gov.") + self.assertEqual( + str(messages[0]), + "An unexpected error occurred: Failed to send email. If the issue persists, please contact help@get.gov.", + ) class TestRequestingEntity(WebTest): @@ -3321,8 +3326,6 @@ class TestPortfolioInviteNewMemberView(TestWithUser, WebTest): session_id = self.client.session.session_key self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id) - invite_count_before = PortfolioInvitation.objects.count() - new_user = User.objects.create(email="newuser@example.com") # Simulate submission of member invite for the newly created user