mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-26 04:28:39 +02:00
model and view unit tests
This commit is contained in:
parent
7a67845b6d
commit
1af08a6b48
2 changed files with 178 additions and 1 deletions
|
@ -1385,6 +1385,73 @@ class TestUser(TestCase):
|
||||||
# Test if the user has no roles
|
# Test if the user has no roles
|
||||||
self.assertEqual(self.user.portfolio_role_summary(self.portfolio), [])
|
self.assertEqual(self.user.portfolio_role_summary(self.portfolio), [])
|
||||||
|
|
||||||
|
@patch('registrar.models.User._has_portfolio_permission')
|
||||||
|
def test_has_base_portfolio_permission(self, mock_has_permission):
|
||||||
|
mock_has_permission.return_value = True
|
||||||
|
|
||||||
|
self.assertTrue(self.user.has_base_portfolio_permission(self.portfolio))
|
||||||
|
mock_has_permission.assert_called_once_with(self.portfolio, UserPortfolioPermissionChoices.VIEW_PORTFOLIO)
|
||||||
|
|
||||||
|
@patch('registrar.models.User._has_portfolio_permission')
|
||||||
|
def test_has_edit_org_portfolio_permission(self, mock_has_permission):
|
||||||
|
mock_has_permission.return_value = True
|
||||||
|
|
||||||
|
self.assertTrue(self.user.has_edit_org_portfolio_permission(self.portfolio))
|
||||||
|
mock_has_permission.assert_called_once_with(self.portfolio, UserPortfolioPermissionChoices.EDIT_PORTFOLIO)
|
||||||
|
|
||||||
|
@patch('registrar.models.User._has_portfolio_permission')
|
||||||
|
def test_has_any_domains_portfolio_permission(self, mock_has_permission):
|
||||||
|
mock_has_permission.side_effect = [False, True] # First permission false, second permission true
|
||||||
|
|
||||||
|
self.assertTrue(self.user.has_any_domains_portfolio_permission(self.portfolio))
|
||||||
|
self.assertEqual(mock_has_permission.call_count, 2)
|
||||||
|
mock_has_permission.assert_any_call(self.portfolio, UserPortfolioPermissionChoices.VIEW_ALL_DOMAINS)
|
||||||
|
mock_has_permission.assert_any_call(self.portfolio, UserPortfolioPermissionChoices.VIEW_MANAGED_DOMAINS)
|
||||||
|
|
||||||
|
@patch('registrar.models.User._has_portfolio_permission')
|
||||||
|
def test_has_view_all_domains_portfolio_permission(self, mock_has_permission):
|
||||||
|
mock_has_permission.return_value = True
|
||||||
|
|
||||||
|
self.assertTrue(self.user.has_view_all_domains_portfolio_permission(self.portfolio))
|
||||||
|
mock_has_permission.assert_called_once_with(self.portfolio, UserPortfolioPermissionChoices.VIEW_ALL_DOMAINS)
|
||||||
|
|
||||||
|
@patch('registrar.models.User._has_portfolio_permission')
|
||||||
|
def test_has_any_requests_portfolio_permission(self, mock_has_permission):
|
||||||
|
mock_has_permission.side_effect = [False, True] # First permission false, second permission true
|
||||||
|
|
||||||
|
self.assertTrue(self.user.has_any_requests_portfolio_permission(self.portfolio))
|
||||||
|
self.assertEqual(mock_has_permission.call_count, 2)
|
||||||
|
mock_has_permission.assert_any_call(self.portfolio, UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS)
|
||||||
|
mock_has_permission.assert_any_call(self.portfolio, UserPortfolioPermissionChoices.EDIT_REQUESTS)
|
||||||
|
|
||||||
|
@patch('registrar.models.User._has_portfolio_permission')
|
||||||
|
def test_has_view_all_requests_portfolio_permission(self, mock_has_permission):
|
||||||
|
mock_has_permission.return_value = True
|
||||||
|
|
||||||
|
self.assertTrue(self.user.has_view_all_requests_portfolio_permission(self.portfolio))
|
||||||
|
mock_has_permission.assert_called_once_with(self.portfolio, UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS)
|
||||||
|
|
||||||
|
@patch('registrar.models.User._has_portfolio_permission')
|
||||||
|
def test_has_edit_request_portfolio_permission(self, mock_has_permission):
|
||||||
|
mock_has_permission.return_value = True
|
||||||
|
|
||||||
|
self.assertTrue(self.user.has_edit_request_portfolio_permission(self.portfolio))
|
||||||
|
mock_has_permission.assert_called_once_with(self.portfolio, UserPortfolioPermissionChoices.EDIT_REQUESTS)
|
||||||
|
|
||||||
|
@patch('registrar.models.User._has_portfolio_permission')
|
||||||
|
def test_has_view_suborganization_portfolio_permission(self, mock_has_permission):
|
||||||
|
mock_has_permission.return_value = True
|
||||||
|
|
||||||
|
self.assertTrue(self.user.has_view_suborganization_portfolio_permission(self.portfolio))
|
||||||
|
mock_has_permission.assert_called_once_with(self.portfolio, UserPortfolioPermissionChoices.VIEW_SUBORGANIZATION)
|
||||||
|
|
||||||
|
@patch('registrar.models.User._has_portfolio_permission')
|
||||||
|
def test_has_edit_suborganization_portfolio_permission(self, mock_has_permission):
|
||||||
|
mock_has_permission.return_value = True
|
||||||
|
|
||||||
|
self.assertTrue(self.user.has_edit_suborganization_portfolio_permission(self.portfolio))
|
||||||
|
mock_has_permission.assert_called_once_with(self.portfolio, UserPortfolioPermissionChoices.EDIT_SUBORGANIZATION)
|
||||||
|
|
||||||
@less_console_noise_decorator
|
@less_console_noise_decorator
|
||||||
def test_check_transition_domains_without_domains_on_login(self):
|
def test_check_transition_domains_without_domains_on_login(self):
|
||||||
"""A user's on_each_login callback does not check transition domains.
|
"""A user's on_each_login callback does not check transition domains.
|
||||||
|
|
|
@ -13,9 +13,10 @@ from registrar.models import (
|
||||||
)
|
)
|
||||||
from registrar.models.user_portfolio_permission import UserPortfolioPermission
|
from registrar.models.user_portfolio_permission import UserPortfolioPermission
|
||||||
from registrar.models.utility.portfolio_helper import UserPortfolioPermissionChoices, UserPortfolioRoleChoices
|
from registrar.models.utility.portfolio_helper import UserPortfolioPermissionChoices, UserPortfolioRoleChoices
|
||||||
from .common import create_test_user
|
from .common import MockSESClient, completed_domain_request, create_test_user
|
||||||
from waffle.testutils import override_flag
|
from waffle.testutils import override_flag
|
||||||
from django.contrib.sessions.middleware import SessionMiddleware
|
from django.contrib.sessions.middleware import SessionMiddleware
|
||||||
|
import boto3_mocking # type: ignore
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
@ -534,6 +535,115 @@ class TestPortfolio(WebTest):
|
||||||
self.assertContains(response, "Domain name")
|
self.assertContains(response, "Domain name")
|
||||||
permission.delete()
|
permission.delete()
|
||||||
|
|
||||||
|
@less_console_noise_decorator
|
||||||
|
@override_flag("organization_feature", active=True)
|
||||||
|
def test_portfolio_domain_requests_page_when_user_has_no_permissions(self):
|
||||||
|
"""Test the no requests page"""
|
||||||
|
UserPortfolioPermission.objects.get_or_create(
|
||||||
|
user=self.user, portfolio=self.portfolio, roles=[UserPortfolioRoleChoices.ORGANIZATION_MEMBER]
|
||||||
|
)
|
||||||
|
self.client.force_login(self.user)
|
||||||
|
# create and submit a domain request
|
||||||
|
domain_request = completed_domain_request(user=self.user)
|
||||||
|
mock_client = MockSESClient()
|
||||||
|
with boto3_mocking.clients.handler_for("sesv2", mock_client):
|
||||||
|
domain_request.submit()
|
||||||
|
domain_request.save()
|
||||||
|
|
||||||
|
requests_page = self.client.get(reverse("no-portfolio-requests"), follow=True)
|
||||||
|
|
||||||
|
self.assertContains(requests_page, "You don’t have access to domain requests.")
|
||||||
|
|
||||||
|
@less_console_noise_decorator
|
||||||
|
@override_flag("organization_feature", active=True)
|
||||||
|
def test_main_nav_when_user_has_no_permissions(self):
|
||||||
|
"""Test the nav contains a link to the no requests page"""
|
||||||
|
UserPortfolioPermission.objects.get_or_create(
|
||||||
|
user=self.user, portfolio=self.portfolio, roles=[UserPortfolioRoleChoices.ORGANIZATION_MEMBER]
|
||||||
|
)
|
||||||
|
self.client.force_login(self.user)
|
||||||
|
# create and submit a domain request
|
||||||
|
domain_request = completed_domain_request(user=self.user)
|
||||||
|
mock_client = MockSESClient()
|
||||||
|
with boto3_mocking.clients.handler_for("sesv2", mock_client):
|
||||||
|
domain_request.submit()
|
||||||
|
domain_request.save()
|
||||||
|
|
||||||
|
portfolio_landing_page = self.client.get(reverse("home"), follow=True)
|
||||||
|
|
||||||
|
# link to no requests
|
||||||
|
self.assertContains(portfolio_landing_page, "no-organization-requests/")
|
||||||
|
# dropdown
|
||||||
|
self.assertNotContains(portfolio_landing_page, "basic-nav-section-two")
|
||||||
|
# link to requests
|
||||||
|
self.assertNotContains(portfolio_landing_page, 'href="/requests/')
|
||||||
|
# link to create
|
||||||
|
self.assertNotContains(portfolio_landing_page, 'href="/request/')
|
||||||
|
|
||||||
|
@less_console_noise_decorator
|
||||||
|
@override_flag("organization_feature", active=True)
|
||||||
|
def test_main_nav_when_user_has_all_permissions(self):
|
||||||
|
"""Test the nav contains a dropdown with a link to create and another link to view requests
|
||||||
|
Also test for the existence of the Create a new request btn on the requests page"""
|
||||||
|
UserPortfolioPermission.objects.get_or_create(
|
||||||
|
user=self.user, portfolio=self.portfolio, roles=[UserPortfolioRoleChoices.ORGANIZATION_ADMIN]
|
||||||
|
)
|
||||||
|
self.client.force_login(self.user)
|
||||||
|
# create and submit a domain request
|
||||||
|
domain_request = completed_domain_request(user=self.user)
|
||||||
|
mock_client = MockSESClient()
|
||||||
|
with boto3_mocking.clients.handler_for("sesv2", mock_client):
|
||||||
|
domain_request.submit()
|
||||||
|
domain_request.save()
|
||||||
|
|
||||||
|
portfolio_landing_page = self.client.get(reverse("home"), follow=True)
|
||||||
|
|
||||||
|
# link to no requests
|
||||||
|
self.assertNotContains(portfolio_landing_page, "no-organization-requests/")
|
||||||
|
# dropdown
|
||||||
|
self.assertContains(portfolio_landing_page, "basic-nav-section-two")
|
||||||
|
# link to requests
|
||||||
|
self.assertContains(portfolio_landing_page, 'href="/requests/')
|
||||||
|
# link to create
|
||||||
|
self.assertContains(portfolio_landing_page, 'href="/request/')
|
||||||
|
|
||||||
|
requests_page = self.client.get(reverse("domain-requests"))
|
||||||
|
|
||||||
|
# create new request btn
|
||||||
|
self.assertContains(requests_page, 'Start a new domain request')
|
||||||
|
|
||||||
|
@less_console_noise_decorator
|
||||||
|
@override_flag("organization_feature", active=True)
|
||||||
|
def test_main_nav_when_user_has_view_but_not_edit_permissions(self):
|
||||||
|
"""Test the nav contains a simple link to view requests
|
||||||
|
Also test for the existence of the Create a new request btn on the requests page"""
|
||||||
|
UserPortfolioPermission.objects.get_or_create(
|
||||||
|
user=self.user, portfolio=self.portfolio, roles=[UserPortfolioPermissionChoices.VIEW_PORTFOLIO, UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS]
|
||||||
|
)
|
||||||
|
self.client.force_login(self.user)
|
||||||
|
# create and submit a domain request
|
||||||
|
domain_request = completed_domain_request(user=self.user)
|
||||||
|
mock_client = MockSESClient()
|
||||||
|
with boto3_mocking.clients.handler_for("sesv2", mock_client):
|
||||||
|
domain_request.submit()
|
||||||
|
domain_request.save()
|
||||||
|
|
||||||
|
portfolio_landing_page = self.client.get(reverse("home"), follow=True)
|
||||||
|
|
||||||
|
# link to no requests
|
||||||
|
self.assertNotContains(portfolio_landing_page, "no-organization-requests/")
|
||||||
|
# dropdown
|
||||||
|
self.assertNotContains(portfolio_landing_page, "basic-nav-section-two")
|
||||||
|
# link to requests
|
||||||
|
self.assertContains(portfolio_landing_page, 'href="/requests/')
|
||||||
|
# link to create
|
||||||
|
self.assertNotContains(portfolio_landing_page, 'href="/request/')
|
||||||
|
|
||||||
|
requests_page = self.client.get(reverse("domain-requests"))
|
||||||
|
|
||||||
|
# create new request btn
|
||||||
|
self.assertNotContains(requests_page, 'Start a new domain request')
|
||||||
|
|
||||||
@skip("TODO")
|
@skip("TODO")
|
||||||
def test_portfolio_cache_updates_when_modified(self):
|
def test_portfolio_cache_updates_when_modified(self):
|
||||||
pass
|
pass
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue