mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-29 14:06:32 +02:00
updated code for readability
This commit is contained in:
parent
86fbac8249
commit
51dc7797b0
12 changed files with 167 additions and 125 deletions
|
@ -5,14 +5,12 @@ import logging
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth import logout as auth_logout
|
from django.contrib.auth import logout as auth_logout
|
||||||
from django.contrib.auth import authenticate, login
|
from django.contrib.auth import authenticate, login
|
||||||
from login_required import login_not_required
|
|
||||||
from django.http import HttpResponseRedirect
|
from django.http import HttpResponseRedirect
|
||||||
from django.shortcuts import redirect
|
from django.shortcuts import redirect
|
||||||
from urllib.parse import parse_qs, urlencode
|
from urllib.parse import parse_qs, urlencode
|
||||||
|
|
||||||
from djangooidc.oidc import Client
|
from djangooidc.oidc import Client
|
||||||
from djangooidc import exceptions as o_e
|
from djangooidc import exceptions as o_e
|
||||||
from registrar.decorators import grant_access
|
|
||||||
from registrar.models import User
|
from registrar.models import User
|
||||||
from registrar.views.utility.error_views import custom_500_error_view, custom_401_error_view
|
from registrar.views.utility.error_views import custom_500_error_view, custom_401_error_view
|
||||||
|
|
||||||
|
|
|
@ -74,91 +74,74 @@ def _user_has_permission(user, request, rules, **kwargs):
|
||||||
if ALL in rules:
|
if ALL in rules:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
# Ensure user is authenticated
|
# Ensure user is authenticated and not restricted
|
||||||
if not user.is_authenticated:
|
if not user.is_authenticated or user.is_restricted():
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# Ensure user is not restricted
|
# Define permission checks
|
||||||
if user.is_restricted():
|
permission_checks = [
|
||||||
return False
|
(IS_STAFF, lambda: user.is_staff),
|
||||||
|
(IS_DOMAIN_MANAGER, lambda: _is_domain_manager(user, **kwargs)),
|
||||||
|
(IS_STAFF_MANAGING_DOMAIN, lambda: _is_staff_managing_domain(request, **kwargs)),
|
||||||
|
(IS_PORTFOLIO_MEMBER, lambda: user.is_org_user(request)),
|
||||||
|
(
|
||||||
|
HAS_PORTFOLIO_DOMAINS_VIEW_ALL,
|
||||||
|
lambda: _can_access_domain_via_portfolio_view_all_domains(request, kwargs.get("domain_pk")),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
HAS_PORTFOLIO_DOMAINS_ANY_PERM,
|
||||||
|
lambda: user.is_org_user(request)
|
||||||
|
and user.has_any_domains_portfolio_permission(request.session.get("portfolio")),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
IS_PORTFOLIO_MEMBER_AND_DOMAIN_MANAGER,
|
||||||
|
lambda: _is_domain_manager(user, **kwargs) and _is_portfolio_member(request),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
IS_DOMAIN_MANAGER_AND_NOT_PORTFOLIO_MEMBER,
|
||||||
|
lambda: _is_domain_manager(user, **kwargs) and not _is_portfolio_member(request),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
IS_DOMAIN_REQUEST_CREATOR,
|
||||||
|
lambda: _is_domain_request_creator(user, kwargs.get("domain_request_pk"))
|
||||||
|
and not _is_portfolio_member(request),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
HAS_PORTFOLIO_DOMAIN_REQUESTS_ANY_PERM,
|
||||||
|
lambda: user.is_org_user(request)
|
||||||
|
and user.has_any_requests_portfolio_permission(request.session.get("portfolio")),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
HAS_PORTFOLIO_DOMAIN_REQUESTS_VIEW_ALL,
|
||||||
|
lambda: user.is_org_user(request)
|
||||||
|
and user.has_view_all_domain_requests_portfolio_permission(request.session.get("portfolio")),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
HAS_PORTFOLIO_DOMAIN_REQUESTS_EDIT,
|
||||||
|
lambda: _has_portfolio_domain_requests_edit(user, request, kwargs.get("domain_request_pk")),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
HAS_PORTFOLIO_MEMBERS_ANY_PERM,
|
||||||
|
lambda: user.is_org_user(request)
|
||||||
|
and (
|
||||||
|
user.has_view_members_portfolio_permission(request.session.get("portfolio"))
|
||||||
|
or user.has_edit_members_portfolio_permission(request.session.get("portfolio"))
|
||||||
|
),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
HAS_PORTFOLIO_MEMBERS_EDIT,
|
||||||
|
lambda: user.is_org_user(request)
|
||||||
|
and user.has_edit_members_portfolio_permission(request.session.get("portfolio")),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
HAS_PORTFOLIO_MEMBERS_VIEW,
|
||||||
|
lambda: user.is_org_user(request)
|
||||||
|
and user.has_view_members_portfolio_permission(request.session.get("portfolio")),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
||||||
conditions_met = []
|
# Check conditions iteratively
|
||||||
|
return any(check() for rule, check in permission_checks if rule in rules)
|
||||||
if IS_STAFF in rules:
|
|
||||||
conditions_met.append(user.is_staff)
|
|
||||||
|
|
||||||
if not any(conditions_met) and IS_DOMAIN_MANAGER in rules:
|
|
||||||
has_permission = _is_domain_manager(user, **kwargs)
|
|
||||||
conditions_met.append(has_permission)
|
|
||||||
|
|
||||||
if not any(conditions_met) and IS_STAFF_MANAGING_DOMAIN in rules:
|
|
||||||
has_permission = _is_staff_managing_domain(request, **kwargs)
|
|
||||||
conditions_met.append(has_permission)
|
|
||||||
|
|
||||||
if not any(conditions_met) and IS_PORTFOLIO_MEMBER in rules:
|
|
||||||
has_permission = user.is_org_user(request)
|
|
||||||
conditions_met.append(has_permission)
|
|
||||||
|
|
||||||
if not any(conditions_met) and HAS_PORTFOLIO_DOMAINS_VIEW_ALL in rules:
|
|
||||||
domain_id = kwargs.get("domain_pk")
|
|
||||||
has_permission = _can_access_domain_via_portfolio_view_all_domains(request, domain_id)
|
|
||||||
conditions_met.append(has_permission)
|
|
||||||
|
|
||||||
if not any(conditions_met) and HAS_PORTFOLIO_DOMAINS_ANY_PERM in rules:
|
|
||||||
has_permission = user.is_org_user(request) and user.has_any_domains_portfolio_permission(
|
|
||||||
request.session.get("portfolio")
|
|
||||||
)
|
|
||||||
conditions_met.append(has_permission)
|
|
||||||
|
|
||||||
if not any(conditions_met) and IS_PORTFOLIO_MEMBER_AND_DOMAIN_MANAGER in rules:
|
|
||||||
has_permission = _is_domain_manager(user, **kwargs) and _is_portfolio_member(request)
|
|
||||||
conditions_met.append(has_permission)
|
|
||||||
|
|
||||||
if not any(conditions_met) and IS_DOMAIN_MANAGER_AND_NOT_PORTFOLIO_MEMBER in rules:
|
|
||||||
has_permission = _is_domain_manager(user, **kwargs) and not _is_portfolio_member(request)
|
|
||||||
conditions_met.append(has_permission)
|
|
||||||
|
|
||||||
if not any(conditions_met) and IS_DOMAIN_REQUEST_CREATOR in rules:
|
|
||||||
domain_request_id = kwargs.get("domain_request_pk")
|
|
||||||
has_permission = _is_domain_request_creator(user, domain_request_id) and not _is_portfolio_member(request)
|
|
||||||
conditions_met.append(has_permission)
|
|
||||||
|
|
||||||
if not any(conditions_met) and HAS_PORTFOLIO_DOMAIN_REQUESTS_ANY_PERM in rules:
|
|
||||||
has_permission = user.is_org_user(request) and user.has_any_requests_portfolio_permission(
|
|
||||||
request.session.get("portfolio")
|
|
||||||
)
|
|
||||||
conditions_met.append(has_permission)
|
|
||||||
|
|
||||||
if not any(conditions_met) and HAS_PORTFOLIO_DOMAIN_REQUESTS_VIEW_ALL in rules:
|
|
||||||
has_permission = user.is_org_user(request) and user.has_view_all_domain_requests_portfolio_permission(
|
|
||||||
request.session.get("portfolio")
|
|
||||||
)
|
|
||||||
conditions_met.append(has_permission)
|
|
||||||
|
|
||||||
if not any(conditions_met) and HAS_PORTFOLIO_DOMAIN_REQUESTS_EDIT in rules:
|
|
||||||
domain_request_id = kwargs.get("domain_request_pk")
|
|
||||||
has_permission = _has_portfolio_domain_requests_edit(user, request, domain_request_id)
|
|
||||||
conditions_met.append(has_permission)
|
|
||||||
|
|
||||||
if not any(conditions_met) and HAS_PORTFOLIO_MEMBERS_ANY_PERM in rules:
|
|
||||||
portfolio = request.session.get("portfolio")
|
|
||||||
has_permission = user.is_org_user(request) and (
|
|
||||||
user.has_view_members_portfolio_permission(portfolio)
|
|
||||||
or user.has_edit_members_portfolio_permission(portfolio)
|
|
||||||
)
|
|
||||||
conditions_met.append(has_permission)
|
|
||||||
|
|
||||||
if not any(conditions_met) and HAS_PORTFOLIO_MEMBERS_EDIT in rules:
|
|
||||||
portfolio = request.session.get("portfolio")
|
|
||||||
has_permission = user.is_org_user(request) and user.has_edit_members_portfolio_permission(portfolio)
|
|
||||||
conditions_met.append(has_permission)
|
|
||||||
|
|
||||||
if not any(conditions_met) and HAS_PORTFOLIO_MEMBERS_VIEW in rules:
|
|
||||||
portfolio = request.session.get("portfolio")
|
|
||||||
has_permission = user.is_org_user(request) and user.has_view_members_portfolio_permission(portfolio)
|
|
||||||
conditions_met.append(has_permission)
|
|
||||||
|
|
||||||
return any(conditions_met)
|
|
||||||
|
|
||||||
|
|
||||||
def _has_portfolio_domain_requests_edit(user, request, domain_request_id):
|
def _has_portfolio_domain_requests_edit(user, request, domain_request_id):
|
||||||
|
@ -173,7 +156,8 @@ def _is_domain_manager(user, **kwargs):
|
||||||
|
|
||||||
- First, it checks if 'domain_pk' is present in the URL parameters.
|
- First, it checks if 'domain_pk' is present in the URL parameters.
|
||||||
- If 'domain_pk' exists, it verifies if the user has a domain role for that domain.
|
- If 'domain_pk' exists, it verifies if the user has a domain role for that domain.
|
||||||
- If 'domain_pk' is absent, it checks for 'domain_invitation_pk' to determine if the user has domain permissions through an invitation.
|
- If 'domain_pk' is absent, it checks for 'domain_invitation_pk' to determine if the user
|
||||||
|
has domain permissions through an invitation.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: True if the user is a domain manager, False otherwise.
|
bool: True if the user is a domain manager, False otherwise.
|
||||||
|
|
|
@ -37,7 +37,6 @@ from epplibwrapper import commands, common
|
||||||
|
|
||||||
from .common import (
|
from .common import (
|
||||||
MockEppLib,
|
MockEppLib,
|
||||||
less_console_noise,
|
|
||||||
completed_domain_request,
|
completed_domain_request,
|
||||||
MockSESClient,
|
MockSESClient,
|
||||||
MockDbForIndividualTests,
|
MockDbForIndividualTests,
|
||||||
|
|
|
@ -292,7 +292,9 @@ class HomeTests(TestWithUser):
|
||||||
)
|
)
|
||||||
|
|
||||||
# Trigger the delete logic
|
# Trigger the delete logic
|
||||||
response = self.client.post(reverse("domain-request-delete", kwargs={"domain_request_pk": domain_request.pk}), follow=True)
|
response = self.client.post(
|
||||||
|
reverse("domain-request-delete", kwargs={"domain_request_pk": domain_request.pk}), follow=True
|
||||||
|
)
|
||||||
|
|
||||||
self.assertNotContains(response, "igorville.gov")
|
self.assertNotContains(response, "igorville.gov")
|
||||||
|
|
||||||
|
@ -309,7 +311,9 @@ class HomeTests(TestWithUser):
|
||||||
)
|
)
|
||||||
|
|
||||||
# Trigger the delete logic
|
# Trigger the delete logic
|
||||||
response = self.client.post(reverse("domain-request-delete", kwargs={"domain_request_pk": domain_request.pk}), follow=True)
|
response = self.client.post(
|
||||||
|
reverse("domain-request-delete", kwargs={"domain_request_pk": domain_request.pk}), follow=True
|
||||||
|
)
|
||||||
|
|
||||||
self.assertNotContains(response, "igorville.gov")
|
self.assertNotContains(response, "igorville.gov")
|
||||||
|
|
||||||
|
@ -335,7 +339,8 @@ class HomeTests(TestWithUser):
|
||||||
|
|
||||||
# Trigger the delete logic
|
# Trigger the delete logic
|
||||||
response = self.client.post(
|
response = self.client.post(
|
||||||
reverse("domain-request-delete", kwargs={"domain_request_pk": domain_request.pk}), follow=True
|
reverse("domain-request-delete", kwargs={"domain_request_pk": domain_request.pk}),
|
||||||
|
follow=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Check for a 403 error - the end user should not be allowed to do this
|
# Check for a 403 error - the end user should not be allowed to do this
|
||||||
|
|
|
@ -692,7 +692,9 @@ class TestDomainDetailDomainRenewal(TestDomainOverview):
|
||||||
with patch.object(Domain, "is_expired", self.custom_is_expired_true), patch.object(
|
with patch.object(Domain, "is_expired", self.custom_is_expired_true), patch.object(
|
||||||
Domain, "is_expired", self.custom_is_expired_true
|
Domain, "is_expired", self.custom_is_expired_true
|
||||||
):
|
):
|
||||||
renewal_page = self.client.get(reverse("domain-renewal", kwargs={"domain_pk": self.domain_no_domain_manager.id}))
|
renewal_page = self.client.get(
|
||||||
|
reverse("domain-renewal", kwargs={"domain_pk": self.domain_no_domain_manager.id})
|
||||||
|
)
|
||||||
self.assertEqual(renewal_page.status_code, 403)
|
self.assertEqual(renewal_page.status_code, 403)
|
||||||
|
|
||||||
@override_flag("domain_renewal", active=True)
|
@override_flag("domain_renewal", active=True)
|
||||||
|
@ -723,7 +725,9 @@ class TestDomainDetailDomainRenewal(TestDomainOverview):
|
||||||
|
|
||||||
# Check for the updated expiration
|
# Check for the updated expiration
|
||||||
formatted_new_expiration_date = self.expiration_date_one_year_out().strftime("%b. %-d, %Y")
|
formatted_new_expiration_date = self.expiration_date_one_year_out().strftime("%b. %-d, %Y")
|
||||||
redirect_response = self.client.get(reverse("domain", kwargs={"domain_pk": self.domain_with_ip.id}), follow=True)
|
redirect_response = self.client.get(
|
||||||
|
reverse("domain", kwargs={"domain_pk": self.domain_with_ip.id}), follow=True
|
||||||
|
)
|
||||||
self.assertContains(redirect_response, formatted_new_expiration_date)
|
self.assertContains(redirect_response, formatted_new_expiration_date)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1070,7 +1074,9 @@ class TestDomainManagers(TestDomainOverview):
|
||||||
"""Removing a domain manager sends notification email to other domain managers."""
|
"""Removing a domain manager sends notification email to other domain managers."""
|
||||||
self.manager, _ = User.objects.get_or_create(email="mayor@igorville.com", first_name="Hello", last_name="World")
|
self.manager, _ = User.objects.get_or_create(email="mayor@igorville.com", first_name="Hello", last_name="World")
|
||||||
self.manager_domain_permission, _ = UserDomainRole.objects.get_or_create(user=self.manager, domain=self.domain)
|
self.manager_domain_permission, _ = UserDomainRole.objects.get_or_create(user=self.manager, domain=self.domain)
|
||||||
self.client.post(reverse("domain-user-delete", kwargs={"domain_pk": self.domain.id, "user_pk": self.manager.id}))
|
self.client.post(
|
||||||
|
reverse("domain-user-delete", kwargs={"domain_pk": self.domain.id, "user_pk": self.manager.id})
|
||||||
|
)
|
||||||
|
|
||||||
# Verify that the notification emails were sent to domain manager
|
# Verify that the notification emails were sent to domain manager
|
||||||
mock_send_templated_email.assert_called_once_with(
|
mock_send_templated_email.assert_called_once_with(
|
||||||
|
@ -1355,7 +1361,9 @@ class TestDomainManagers(TestDomainOverview):
|
||||||
invitation, _ = DomainInvitation.objects.get_or_create(
|
invitation, _ = DomainInvitation.objects.get_or_create(
|
||||||
domain=self.domain, email=email_address, status=DomainInvitation.DomainInvitationStatus.RETRIEVED
|
domain=self.domain, email=email_address, status=DomainInvitation.DomainInvitationStatus.RETRIEVED
|
||||||
)
|
)
|
||||||
response = self.client.post(reverse("invitation-cancel", kwargs={"domain_invitation_pk": invitation.id}), follow=True)
|
response = self.client.post(
|
||||||
|
reverse("invitation-cancel", kwargs={"domain_invitation_pk": invitation.id}), follow=True
|
||||||
|
)
|
||||||
# Assert that an error message is displayed to the user
|
# Assert that an error message is displayed to the user
|
||||||
self.assertContains(response, f"Invitation to {email_address} has already been retrieved.")
|
self.assertContains(response, f"Invitation to {email_address} has already been retrieved.")
|
||||||
# Assert that the Cancel link (form) is not displayed
|
# Assert that the Cancel link (form) is not displayed
|
||||||
|
@ -2936,7 +2944,9 @@ class TestDomainChangeNotifications(TestDomainOverview):
|
||||||
def test_no_notification_when_dns_needed(self):
|
def test_no_notification_when_dns_needed(self):
|
||||||
"""Test that an email is not sent when nameservers are changed while the state is DNS_NEEDED."""
|
"""Test that an email is not sent when nameservers are changed while the state is DNS_NEEDED."""
|
||||||
|
|
||||||
nameservers_page = self.app.get(reverse("domain-dns-nameservers", kwargs={"domain_pk": self.domain_dns_needed.id}))
|
nameservers_page = self.app.get(
|
||||||
|
reverse("domain-dns-nameservers", kwargs={"domain_pk": self.domain_dns_needed.id})
|
||||||
|
)
|
||||||
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||||
|
|
||||||
# add nameservers
|
# add nameservers
|
||||||
|
|
|
@ -1320,7 +1320,9 @@ class TestPortfolio(WebTest):
|
||||||
|
|
||||||
self.client.force_login(self.user)
|
self.client.force_login(self.user)
|
||||||
# Perform delete
|
# Perform delete
|
||||||
response = self.client.post(reverse("domain-request-delete", kwargs={"domain_request_pk": domain_request.pk}), follow=True)
|
response = self.client.post(
|
||||||
|
reverse("domain-request-delete", kwargs={"domain_request_pk": domain_request.pk}), follow=True
|
||||||
|
)
|
||||||
|
|
||||||
# Check that the response is 200
|
# Check that the response is 200
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
@ -1354,7 +1356,9 @@ class TestPortfolio(WebTest):
|
||||||
|
|
||||||
self.client.force_login(self.user)
|
self.client.force_login(self.user)
|
||||||
# Attempt to delete
|
# Attempt to delete
|
||||||
response = self.client.post(reverse("domain-request-delete", kwargs={"domain_request_pk": domain_request.pk}), follow=True)
|
response = self.client.post(
|
||||||
|
reverse("domain-request-delete", kwargs={"domain_request_pk": domain_request.pk}), follow=True
|
||||||
|
)
|
||||||
|
|
||||||
# Check response is 403 Forbidden
|
# Check response is 403 Forbidden
|
||||||
self.assertEqual(response.status_code, 403)
|
self.assertEqual(response.status_code, 403)
|
||||||
|
@ -1389,7 +1393,9 @@ class TestPortfolio(WebTest):
|
||||||
|
|
||||||
self.client.force_login(self.user)
|
self.client.force_login(self.user)
|
||||||
# Perform delete as self.user
|
# Perform delete as self.user
|
||||||
response = self.client.post(reverse("domain-request-delete", kwargs={"domain_request_pk": domain_request.pk}), follow=True)
|
response = self.client.post(
|
||||||
|
reverse("domain-request-delete", kwargs={"domain_request_pk": domain_request.pk}), follow=True
|
||||||
|
)
|
||||||
|
|
||||||
# Check response is 403 Forbidden
|
# Check response is 403 Forbidden
|
||||||
self.assertEqual(response.status_code, 403)
|
self.assertEqual(response.status_code, 403)
|
||||||
|
@ -3244,7 +3250,9 @@ class TestRequestingEntity(WebTest):
|
||||||
def test_requesting_entity_page_errors(self):
|
def test_requesting_entity_page_errors(self):
|
||||||
"""Tests that we get the expected form errors on requesting entity"""
|
"""Tests that we get the expected form errors on requesting entity"""
|
||||||
domain_request = completed_domain_request(user=self.user, portfolio=self.portfolio)
|
domain_request = completed_domain_request(user=self.user, portfolio=self.portfolio)
|
||||||
response = self.app.get(reverse("edit-domain-request", kwargs={"domain_request_pk": domain_request.pk})).follow()
|
response = self.app.get(
|
||||||
|
reverse("edit-domain-request", kwargs={"domain_request_pk": domain_request.pk})
|
||||||
|
).follow()
|
||||||
form = response.forms[0]
|
form = response.forms[0]
|
||||||
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
@ -3334,7 +3342,9 @@ class TestRequestingEntity(WebTest):
|
||||||
|
|
||||||
domain_request.submit()
|
domain_request.submit()
|
||||||
|
|
||||||
response = self.app.get(reverse("domain-request-status-viewonly", kwargs={"domain_request_pk": domain_request.pk}))
|
response = self.app.get(
|
||||||
|
reverse("domain-request-status-viewonly", kwargs={"domain_request_pk": domain_request.pk})
|
||||||
|
)
|
||||||
self.assertContains(response, "Requesting entity")
|
self.assertContains(response, "Requesting entity")
|
||||||
self.assertContains(response, "moon")
|
self.assertContains(response, "moon")
|
||||||
self.assertContains(response, "kepler, AL")
|
self.assertContains(response, "kepler, AL")
|
||||||
|
|
|
@ -1114,7 +1114,9 @@ class DomainRequestTests(TestWithUser, WebTest):
|
||||||
def test_yes_no_additional_form_inits_blank_for_new_domain_request(self):
|
def test_yes_no_additional_form_inits_blank_for_new_domain_request(self):
|
||||||
"""On the Additional Details page, the yes/no form gets initialized with nothing selected for
|
"""On the Additional Details page, the yes/no form gets initialized with nothing selected for
|
||||||
new domain requests"""
|
new domain requests"""
|
||||||
additional_details_page = self.app.get(reverse("domain-request:additional_details", kwargs={"domain_request_pk": 0}))
|
additional_details_page = self.app.get(
|
||||||
|
reverse("domain-request:additional_details", kwargs={"domain_request_pk": 0})
|
||||||
|
)
|
||||||
additional_form = additional_details_page.forms[0]
|
additional_form = additional_details_page.forms[0]
|
||||||
|
|
||||||
# Check the cisa representative yes/no field
|
# Check the cisa representative yes/no field
|
||||||
|
@ -1138,7 +1140,9 @@ class DomainRequestTests(TestWithUser, WebTest):
|
||||||
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
other_contacts_page = self.app.get(reverse("domain-request:other_contacts", kwargs={"domain_request_pk": domain_request.pk}))
|
other_contacts_page = self.app.get(
|
||||||
|
reverse("domain-request:other_contacts", kwargs={"domain_request_pk": domain_request.pk})
|
||||||
|
)
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
other_contacts_form = other_contacts_page.forms[0]
|
other_contacts_form = other_contacts_page.forms[0]
|
||||||
|
@ -1195,7 +1199,9 @@ class DomainRequestTests(TestWithUser, WebTest):
|
||||||
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
other_contacts_page = self.app.get(reverse("domain-request:other_contacts", kwargs={"domain_request_pk": domain_request.pk}))
|
other_contacts_page = self.app.get(
|
||||||
|
reverse("domain-request:other_contacts", kwargs={"domain_request_pk": domain_request.pk})
|
||||||
|
)
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
other_contacts_form = other_contacts_page.forms[0]
|
other_contacts_form = other_contacts_page.forms[0]
|
||||||
|
@ -1480,7 +1486,9 @@ class DomainRequestTests(TestWithUser, WebTest):
|
||||||
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
other_contacts_page = self.app.get(reverse("domain-request:other_contacts", kwargs={"domain_request_pk": domain_request.pk}))
|
other_contacts_page = self.app.get(
|
||||||
|
reverse("domain-request:other_contacts", kwargs={"domain_request_pk": domain_request.pk})
|
||||||
|
)
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
other_contacts_form = other_contacts_page.forms[0]
|
other_contacts_form = other_contacts_page.forms[0]
|
||||||
|
@ -1528,7 +1536,9 @@ class DomainRequestTests(TestWithUser, WebTest):
|
||||||
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
other_contacts_page = self.app.get(reverse("domain-request:other_contacts", kwargs={"domain_request_pk": domain_request.pk}))
|
other_contacts_page = self.app.get(
|
||||||
|
reverse("domain-request:other_contacts", kwargs={"domain_request_pk": domain_request.pk})
|
||||||
|
)
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
other_contacts_form = other_contacts_page.forms[0]
|
other_contacts_form = other_contacts_page.forms[0]
|
||||||
|
@ -1612,7 +1622,9 @@ class DomainRequestTests(TestWithUser, WebTest):
|
||||||
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
other_contacts_page = self.app.get(reverse("domain-request:other_contacts", kwargs={"domain_request_pk": domain_request.pk}))
|
other_contacts_page = self.app.get(
|
||||||
|
reverse("domain-request:other_contacts", kwargs={"domain_request_pk": domain_request.pk})
|
||||||
|
)
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
other_contacts_form = other_contacts_page.forms[0]
|
other_contacts_form = other_contacts_page.forms[0]
|
||||||
|
@ -1745,7 +1757,9 @@ class DomainRequestTests(TestWithUser, WebTest):
|
||||||
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
other_contacts_page = self.app.get(reverse("domain-request:other_contacts", kwargs={"domain_request_pk": domain_request.id}))
|
other_contacts_page = self.app.get(
|
||||||
|
reverse("domain-request:other_contacts", kwargs={"domain_request_pk": domain_request.id})
|
||||||
|
)
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
other_contacts_form = other_contacts_page.forms[0]
|
other_contacts_form = other_contacts_page.forms[0]
|
||||||
|
@ -1818,7 +1832,9 @@ class DomainRequestTests(TestWithUser, WebTest):
|
||||||
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
other_contacts_page = self.app.get(reverse("domain-request:other_contacts", kwargs={"domain_request_pk": domain_request.id}))
|
other_contacts_page = self.app.get(
|
||||||
|
reverse("domain-request:other_contacts", kwargs={"domain_request_pk": domain_request.id})
|
||||||
|
)
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
other_contacts_form = other_contacts_page.forms[0]
|
other_contacts_form = other_contacts_page.forms[0]
|
||||||
|
@ -1895,7 +1911,9 @@ class DomainRequestTests(TestWithUser, WebTest):
|
||||||
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
other_contacts_page = self.app.get(reverse("domain-request:other_contacts", kwargs={"domain_request_pk": domain_request.id}))
|
other_contacts_page = self.app.get(
|
||||||
|
reverse("domain-request:other_contacts", kwargs={"domain_request_pk": domain_request.id})
|
||||||
|
)
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
other_contacts_form = other_contacts_page.forms[0]
|
other_contacts_form = other_contacts_page.forms[0]
|
||||||
|
@ -1975,7 +1993,9 @@ class DomainRequestTests(TestWithUser, WebTest):
|
||||||
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
other_contacts_page = self.app.get(reverse("domain-request:other_contacts", kwargs={"domain_request_pk": domain_request.pk}))
|
other_contacts_page = self.app.get(
|
||||||
|
reverse("domain-request:other_contacts", kwargs={"domain_request_pk": domain_request.pk})
|
||||||
|
)
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
other_contacts_form = other_contacts_page.forms[0]
|
other_contacts_form = other_contacts_page.forms[0]
|
||||||
|
@ -2051,7 +2071,9 @@ class DomainRequestTests(TestWithUser, WebTest):
|
||||||
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
other_contacts_page = self.app.get(reverse("domain-request:other_contacts", kwargs={"domain_request_pk": domain_request.pk}))
|
other_contacts_page = self.app.get(
|
||||||
|
reverse("domain-request:other_contacts", kwargs={"domain_request_pk": domain_request.pk})
|
||||||
|
)
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
other_contacts_form = other_contacts_page.forms[0]
|
other_contacts_form = other_contacts_page.forms[0]
|
||||||
|
@ -2121,7 +2143,9 @@ class DomainRequestTests(TestWithUser, WebTest):
|
||||||
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
so_page = self.app.get(reverse("domain-request:senior_official", kwargs={"domain_request_pk": domain_request.pk}))
|
so_page = self.app.get(
|
||||||
|
reverse("domain-request:senior_official", kwargs={"domain_request_pk": domain_request.pk})
|
||||||
|
)
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
so_form = so_page.forms[0]
|
so_form = so_page.forms[0]
|
||||||
|
@ -2190,7 +2214,9 @@ class DomainRequestTests(TestWithUser, WebTest):
|
||||||
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
so_page = self.app.get(reverse("domain-request:senior_official", kwargs={"domain_request_pk": domain_request.pk}))
|
so_page = self.app.get(
|
||||||
|
reverse("domain-request:senior_official", kwargs={"domain_request_pk": domain_request.pk})
|
||||||
|
)
|
||||||
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
|
||||||
|
|
||||||
so_form = so_page.forms[0]
|
so_form = so_page.forms[0]
|
||||||
|
@ -2539,7 +2565,9 @@ class DomainRequestTests(TestWithUser, WebTest):
|
||||||
new_domain_request_id = all_domain_requests.first().id
|
new_domain_request_id = all_domain_requests.first().id
|
||||||
|
|
||||||
# Skip to the current sites page
|
# Skip to the current sites page
|
||||||
current_sites_page = self.app.get(reverse("domain-request:current_sites", kwargs={"domain_request_pk": new_domain_request_id}))
|
current_sites_page = self.app.get(
|
||||||
|
reverse("domain-request:current_sites", kwargs={"domain_request_pk": new_domain_request_id})
|
||||||
|
)
|
||||||
# fill in the form field
|
# fill in the form field
|
||||||
current_sites_form = current_sites_page.forms[0]
|
current_sites_form = current_sites_page.forms[0]
|
||||||
self.assertIn("current_sites-0-website", current_sites_form.fields)
|
self.assertIn("current_sites-0-website", current_sites_form.fields)
|
||||||
|
@ -2742,7 +2770,9 @@ class DomainRequestTests(TestWithUser, WebTest):
|
||||||
|
|
||||||
# This user should also be forbidden from editing existing ones
|
# This user should also be forbidden from editing existing ones
|
||||||
domain_request = completed_domain_request(user=self.user)
|
domain_request = completed_domain_request(user=self.user)
|
||||||
edit_page = self.app.get(reverse("edit-domain-request", kwargs={"domain_request_pk": domain_request.pk}), expect_errors=True)
|
edit_page = self.app.get(
|
||||||
|
reverse("edit-domain-request", kwargs={"domain_request_pk": domain_request.pk}), expect_errors=True
|
||||||
|
)
|
||||||
self.assertEqual(edit_page.status_code, 403)
|
self.assertEqual(edit_page.status_code, 403)
|
||||||
|
|
||||||
# Cleanup
|
# Cleanup
|
||||||
|
@ -2767,7 +2797,9 @@ class DomainRequestTests(TestWithUser, WebTest):
|
||||||
|
|
||||||
# This user should also be allowed to edit existing ones
|
# This user should also be allowed to edit existing ones
|
||||||
domain_request = completed_domain_request(user=self.user)
|
domain_request = completed_domain_request(user=self.user)
|
||||||
edit_page = self.app.get(reverse("edit-domain-request", kwargs={"domain_request_pk": domain_request.pk})).follow()
|
edit_page = self.app.get(
|
||||||
|
reverse("edit-domain-request", kwargs={"domain_request_pk": domain_request.pk})
|
||||||
|
).follow()
|
||||||
self.assertEqual(edit_page.status_code, 200)
|
self.assertEqual(edit_page.status_code, 200)
|
||||||
|
|
||||||
def test_non_creator_access(self):
|
def test_non_creator_access(self):
|
||||||
|
@ -2776,14 +2808,18 @@ class DomainRequestTests(TestWithUser, WebTest):
|
||||||
other_user = User.objects.create_user(username="other_user", password=p)
|
other_user = User.objects.create_user(username="other_user", password=p)
|
||||||
domain_request = completed_domain_request(user=other_user)
|
domain_request = completed_domain_request(user=other_user)
|
||||||
|
|
||||||
edit_page = self.app.get(reverse("edit-domain-request", kwargs={"domain_request_pk": domain_request.pk}), expect_errors=True)
|
edit_page = self.app.get(
|
||||||
|
reverse("edit-domain-request", kwargs={"domain_request_pk": domain_request.pk}), expect_errors=True
|
||||||
|
)
|
||||||
self.assertEqual(edit_page.status_code, 403)
|
self.assertEqual(edit_page.status_code, 403)
|
||||||
|
|
||||||
def test_creator_access(self):
|
def test_creator_access(self):
|
||||||
"""Tests that a user can edit a domain request they created"""
|
"""Tests that a user can edit a domain request they created"""
|
||||||
domain_request = completed_domain_request(user=self.user)
|
domain_request = completed_domain_request(user=self.user)
|
||||||
|
|
||||||
edit_page = self.app.get(reverse("edit-domain-request", kwargs={"domain_request_pk": domain_request.pk})).follow()
|
edit_page = self.app.get(
|
||||||
|
reverse("edit-domain-request", kwargs={"domain_request_pk": domain_request.pk})
|
||||||
|
).follow()
|
||||||
self.assertEqual(edit_page.status_code, 200)
|
self.assertEqual(edit_page.status_code, 200)
|
||||||
|
|
||||||
|
|
||||||
|
@ -3202,7 +3238,9 @@ class TestDomainRequestWizard(TestWithUser, WebTest):
|
||||||
self.assertContains(detail_page, "usa-current", count=2)
|
self.assertContains(detail_page, "usa-current", count=2)
|
||||||
|
|
||||||
# We default to the requesting entity page
|
# We default to the requesting entity page
|
||||||
expected_url = reverse("domain-request:portfolio_requesting_entity", kwargs={"domain_request_pk": domain_request.id})
|
expected_url = reverse(
|
||||||
|
"domain-request:portfolio_requesting_entity", kwargs={"domain_request_pk": domain_request.id}
|
||||||
|
)
|
||||||
# This returns the entire url, thus "in"
|
# This returns the entire url, thus "in"
|
||||||
self.assertIn(expected_url, detail_page.request.url)
|
self.assertIn(expected_url, detail_page.request.url)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -342,7 +342,8 @@ class GetRequestsJsonTest(TestWithUser, WebTest):
|
||||||
# Test case where action is View
|
# Test case where action is View
|
||||||
self.assertEqual("View", action_labels[i])
|
self.assertEqual("View", action_labels[i])
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
reverse("domain-request-status-viewonly", kwargs={"domain_request_pk": expected_domain_request.id}), action_urls[i]
|
reverse("domain-request-status-viewonly", kwargs={"domain_request_pk": expected_domain_request.id}),
|
||||||
|
action_urls[i],
|
||||||
)
|
)
|
||||||
self.assertEqual("visibility", svg_icons[i])
|
self.assertEqual("visibility", svg_icons[i])
|
||||||
elif status[i] in [
|
elif status[i] in [
|
||||||
|
@ -360,7 +361,8 @@ class GetRequestsJsonTest(TestWithUser, WebTest):
|
||||||
# Test case where action is Manage
|
# Test case where action is Manage
|
||||||
self.assertEqual("Manage", action_labels[i])
|
self.assertEqual("Manage", action_labels[i])
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
reverse("domain-request-status", kwargs={"domain_request_pk": expected_domain_request.id}), action_urls[i]
|
reverse("domain-request-status", kwargs={"domain_request_pk": expected_domain_request.id}),
|
||||||
|
action_urls[i],
|
||||||
)
|
)
|
||||||
self.assertEqual("settings", svg_icons[i])
|
self.assertEqual("settings", svg_icons[i])
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,6 @@ from django.core.paginator import Paginator
|
||||||
from registrar.decorators import grant_access, ALL
|
from registrar.decorators import grant_access, ALL
|
||||||
from registrar.models import DomainRequest
|
from registrar.models import DomainRequest
|
||||||
from django.utils.dateformat import format
|
from django.utils.dateformat import format
|
||||||
from django.contrib.auth.decorators import login_required
|
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,6 @@ from django.http import JsonResponse
|
||||||
from django.core.paginator import Paginator
|
from django.core.paginator import Paginator
|
||||||
from registrar.decorators import grant_access, ALL
|
from registrar.decorators import grant_access, ALL
|
||||||
from registrar.models import UserDomainRole, Domain, DomainInformation, User
|
from registrar.models import UserDomainRole, Domain, DomainInformation, User
|
||||||
from django.contrib.auth.decorators import login_required
|
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,6 @@ from django.http import JsonResponse
|
||||||
from django.forms.models import model_to_dict
|
from django.forms.models import model_to_dict
|
||||||
from registrar.decorators import IS_STAFF, grant_access
|
from registrar.decorators import IS_STAFF, grant_access
|
||||||
from registrar.models import FederalAgency, SeniorOfficial, DomainRequest
|
from registrar.models import FederalAgency, SeniorOfficial, DomainRequest
|
||||||
from django.contrib.admin.views.decorators import staff_member_required
|
|
||||||
from django.contrib.auth.decorators import login_required
|
|
||||||
from registrar.utility.admin_helpers import get_action_needed_reason_default_email, get_rejection_reason_default_email
|
from registrar.utility.admin_helpers import get_action_needed_reason_default_email, get_rejection_reason_default_email
|
||||||
from registrar.models.portfolio import Portfolio
|
from registrar.models.portfolio import Portfolio
|
||||||
from registrar.utility.constants import BranchChoices
|
from registrar.utility.constants import BranchChoices
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue