From 9e1643edf08520383e1a6970bdce09ffb8749edd Mon Sep 17 00:00:00 2001 From: zandercymatics <141044360+zandercymatics@users.noreply.github.com> Date: Tue, 20 Aug 2024 14:49:04 -0600 Subject: [PATCH] Fix (some) test errors --- src/registrar/tests/test_models.py | 53 +++++++++++++-------- src/registrar/tests/test_reports.py | 1 + src/registrar/tests/test_views_domain.py | 5 +- src/registrar/tests/test_views_portfolio.py | 10 ++-- 4 files changed, 42 insertions(+), 27 deletions(-) diff --git a/src/registrar/tests/test_models.py b/src/registrar/tests/test_models.py index 1c95257d3..52e950cdc 100644 --- a/src/registrar/tests/test_models.py +++ b/src/registrar/tests/test_models.py @@ -1149,7 +1149,8 @@ class TestPortfolioInvitations(TestCase): @less_console_noise_decorator def test_retrieval(self): - self.assertFalse(self.user.portfolio) + portfolio_role_exists = UserPortfolioPermission.objects.filter(user=self.user).exists() + self.assertFalse(portfolio_role_exists) self.invitation.retrieve() self.user.refresh_from_db() self.assertEqual(self.user.last_selected_portfolio.organization_name, "Hotel California") @@ -1363,13 +1364,16 @@ class TestUser(TestCase): Note: This tests _get_portfolio_permissions as a side effect """ - portfolio, _ = Portfolio.objects.get_or_create(creator=self.user, organization_name="Hotel California") - self.user.last_selected_portfolio = portfolio - self.user.save() - self.user.refresh_from_db() - user_can_view_all_domains = self.user.has_domains_portfolio_permission() - user_can_view_all_requests = self.user.has_domain_requests_portfolio_permission() + portfolio, _ = Portfolio.objects.get_or_create(creator=self.user, organization_name="Hotel California") + + # Create a dummy request + request = self.factory.get("/") + request.user = self.user + request.session = {} + + user_can_view_all_domains = self.user.has_domains_portfolio_permission(request) + user_can_view_all_requests = self.user.has_domain_requests_portfolio_permission(request) self.assertFalse(user_can_view_all_domains) self.assertFalse(user_can_view_all_requests) @@ -1380,8 +1384,13 @@ class TestUser(TestCase): portfolio_permission.refresh_from_db() self.user.refresh_from_db() - user_can_view_all_domains = self.user.has_domains_portfolio_permission() - user_can_view_all_requests = self.user.has_domain_requests_portfolio_permission() + # Create a dummy request + request = self.factory.get("/") + request.user = self.user + request.session = {} + + user_can_view_all_domains = self.user.has_domains_portfolio_permission(request) + user_can_view_all_requests = self.user.has_domain_requests_portfolio_permission(request) self.assertTrue(user_can_view_all_domains) self.assertFalse(user_can_view_all_requests) @@ -1392,18 +1401,28 @@ class TestUser(TestCase): portfolio_permission.refresh_from_db() self.user.refresh_from_db() - user_can_view_all_domains = self.user.has_domains_portfolio_permission() - user_can_view_all_requests = self.user.has_domain_requests_portfolio_permission() + # Create a dummy request + request = self.factory.get("/") + request.user = self.user + request.session = {} + + user_can_view_all_domains = self.user.has_domains_portfolio_permission(request) + user_can_view_all_requests = self.user.has_domain_requests_portfolio_permission(request) self.assertTrue(user_can_view_all_domains) self.assertTrue(user_can_view_all_requests) - UserDomainRole.objects.all().get_or_create( + UserDomainRole.objects.get_or_create( user=self.user, domain=self.domain, role=UserDomainRole.Roles.MANAGER ) - user_can_view_all_domains = self.user.has_domains_portfolio_permission() - user_can_view_all_requests = self.user.has_domain_requests_portfolio_permission() + # Create a dummy request + request = self.factory.get("/") + request.user = self.user + request.session = {} + + user_can_view_all_domains = self.user.has_domains_portfolio_permission(request) + user_can_view_all_requests = self.user.has_domain_requests_portfolio_permission(request) self.assertTrue(user_can_view_all_domains) self.assertTrue(user_can_view_all_requests) @@ -1431,12 +1450,8 @@ class TestUser(TestCase): @less_console_noise_decorator def test_user_with_portfolio_roles_but_no_portfolio(self): - # Create an instance of User with a portfolio role but no portfolio - self.user.portfolio = None - self.user.portfolio_roles = [UserPortfolioRoleChoices.ORGANIZATION_ADMIN] - portfolio, _ = Portfolio.objects.get_or_create(creator=self.user, organization_name="Hotel California") - portfolio_permission, _ = UserPortfolioPermission.objects.get_or_create(portfolio=portfolio, user=self.user) + portfolio_permission, _ = UserPortfolioPermission.objects.get_or_create(portfolio=portfolio, user=self.user, roles=[UserPortfolioRoleChoices.ORGANIZATION_ADMIN]) # Try to remove the portfolio portfolio_permission.portfolio = None diff --git a/src/registrar/tests/test_reports.py b/src/registrar/tests/test_reports.py index 8440e54e1..eca6bdb8b 100644 --- a/src/registrar/tests/test_reports.py +++ b/src/registrar/tests/test_reports.py @@ -345,6 +345,7 @@ class ExportDataTest(MockDbForIndividualTests, MockEppLib): factory = RequestFactory() request = factory.get("/") request.user = self.user + request.session = {} # Get the csv content csv_content = self._run_domain_data_type_user_export(request) diff --git a/src/registrar/tests/test_views_domain.py b/src/registrar/tests/test_views_domain.py index f3f4d1051..6ce842bc6 100644 --- a/src/registrar/tests/test_views_domain.py +++ b/src/registrar/tests/test_views_domain.py @@ -329,9 +329,8 @@ class TestDomainDetail(TestDomainOverview): email="bogus@example.gov", phone="8003111234", title="test title", - last_selected_portfolio=portfolio, ) - portfolio_permission, _ = UserPortfolioPermission.objects.get_or_create(user=user, portfolio=portfolio, roles=[UserPortfolioRoleChoices.ORGANIZATION_ADMIN]) + UserPortfolioPermission.objects.get_or_create(user=user, portfolio=portfolio, roles=[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) @@ -1572,7 +1571,7 @@ class TestDomainSuborganization(TestDomainOverview): self.domain_information.refresh_from_db() # Add portfolio perms to the user object - portfolio_permission, _ = UserPortfolioPermission.objects.get_or_create(user=self.user, portfolio=portfolio, roles=[UserPortfolioRoleChoices.VIEW_PORTFOLIO]) + portfolio_permission, _ = UserPortfolioPermission.objects.get_or_create(user=self.user, portfolio=portfolio, additional_permissions=[UserPortfolioPermissionChoices.VIEW_PORTFOLIO]) # Navigate to the domain overview page page = self.app.get(reverse("domain", kwargs={"pk": self.domain.id})) diff --git a/src/registrar/tests/test_views_portfolio.py b/src/registrar/tests/test_views_portfolio.py index cb72f29fe..1c4cfcac9 100644 --- a/src/registrar/tests/test_views_portfolio.py +++ b/src/registrar/tests/test_views_portfolio.py @@ -31,6 +31,7 @@ class TestPortfolio(WebTest): ) def tearDown(self): + UserPortfolioPermission.objects.all().delete() Portfolio.objects.all().delete() UserDomainRole.objects.all().delete() DomainRequest.objects.all().delete() @@ -85,7 +86,6 @@ class TestPortfolio(WebTest): def test_middleware_does_not_redirect_if_no_portfolio(self): """Test that user with no assigned portfolio is not redirected when attempting to access home""" self.app.set_user(self.user.username) - portfolio_permission, _ = UserPortfolioPermission.objects.get_or_create(user=self.user, portfolio=self.portfolio, additional_permissions=[UserPortfolioPermissionChoices.VIEW_PORTFOLIO]) with override_flag("organization_feature", active=True): # This will redirect the user to the portfolio page. # Follow implicity checks if our redirect is working. @@ -97,7 +97,7 @@ class TestPortfolio(WebTest): def test_middleware_redirects_to_portfolio_organization_page(self): """Test that user with a portfolio and VIEW_PORTFOLIO is redirected to portfolio organization page""" self.app.set_user(self.user.username) - portfolio_permission, _ = UserPortfolioPermission.objects.get_or_create(user=self.user, portfolio=self.portfolio, additional_permissions=[UserPortfolioPermissionChoices.VIEW_PORTFOLIO]) + UserPortfolioPermission.objects.get_or_create(user=self.user, portfolio=self.portfolio, additional_permissions=[UserPortfolioPermissionChoices.VIEW_PORTFOLIO]) with override_flag("organization_feature", active=True): # This will redirect the user to the portfolio page. # Follow implicity checks if our redirect is working. @@ -111,7 +111,7 @@ class TestPortfolio(WebTest): """Test that user with a portfolio, VIEW_PORTFOLIO, VIEW_ALL_DOMAINS is redirected to portfolio domains page""" self.app.set_user(self.user.username) - portfolio_permission, _ = UserPortfolioPermission.objects.get_or_create(user=self.user, portfolio=self.portfolio, additional_permissions=[UserPortfolioPermissionChoices.VIEW_PORTFOLIO, UserPortfolioPermissionChoices.VIEW_ALL_DOMAINS]) + UserPortfolioPermission.objects.get_or_create(user=self.user, portfolio=self.portfolio, additional_permissions=[UserPortfolioPermissionChoices.VIEW_PORTFOLIO, UserPortfolioPermissionChoices.VIEW_ALL_DOMAINS]) with override_flag("organization_feature", active=True): # This will redirect the user to the portfolio page. # Follow implicity checks if our redirect is working. @@ -125,7 +125,7 @@ class TestPortfolio(WebTest): def test_portfolio_domains_page_403_when_user_not_have_permission(self): """Test that user without proper permission is denied access to portfolio domain view""" self.app.set_user(self.user.username) - portfolio_permission, _ = UserPortfolioPermission.objects.get_or_create(user=self.user, portfolio=self.portfolio, additional_permissions=[]) + UserPortfolioPermission.objects.get_or_create(user=self.user, portfolio=self.portfolio, additional_permissions=[]) with override_flag("organization_feature", active=True): # This will redirect the user to the portfolio page. # Follow implicity checks if our redirect is working. @@ -137,7 +137,7 @@ class TestPortfolio(WebTest): def test_portfolio_domain_requests_page_403_when_user_not_have_permission(self): """Test that user without proper permission is denied access to portfolio domain view""" self.app.set_user(self.user.username) - portfolio_permission, _ = UserPortfolioPermission.objects.get_or_create(user=self.user, portfolio=self.portfolio, additional_permissions=[]) + UserPortfolioPermission.objects.get_or_create(user=self.user, portfolio=self.portfolio, additional_permissions=[]) with override_flag("organization_feature", active=True): # This will redirect the user to the portfolio page. # Follow implicity checks if our redirect is working.