mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-06-12 15:34:50 +02:00
Add registrar_middleware session tests and the Test for withdraw redirect test
This commit is contained in:
parent
39834fde8a
commit
3d27199854
2 changed files with 89 additions and 5 deletions
|
@ -17,7 +17,7 @@ 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 boto3_mocking # type: ignore
|
||||||
|
from django.test import Client
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
@ -26,6 +26,7 @@ logger = logging.getLogger(__name__)
|
||||||
class TestPortfolio(WebTest):
|
class TestPortfolio(WebTest):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
self.client = Client()
|
||||||
self.user = create_test_user()
|
self.user = create_test_user()
|
||||||
self.domain, _ = Domain.objects.get_or_create(name="igorville.gov")
|
self.domain, _ = Domain.objects.get_or_create(name="igorville.gov")
|
||||||
self.portfolio, _ = Portfolio.objects.get_or_create(creator=self.user, organization_name="Hotel California")
|
self.portfolio, _ = Portfolio.objects.get_or_create(creator=self.user, organization_name="Hotel California")
|
||||||
|
@ -644,6 +645,52 @@ class TestPortfolio(WebTest):
|
||||||
# create new request btn
|
# create new request btn
|
||||||
self.assertNotContains(requests_page, 'Start a new domain request')
|
self.assertNotContains(requests_page, 'Start a new domain request')
|
||||||
|
|
||||||
@skip("TODO")
|
@less_console_noise_decorator
|
||||||
def test_portfolio_cache_updates_when_modified(self):
|
def test_portfolio_cache_updates_when_modified(self):
|
||||||
pass
|
"""Test that the portfolio in session updates when the portfolio is modified"""
|
||||||
|
self.client.force_login(self.user)
|
||||||
|
portfolio_roles = [UserPortfolioRoleChoices.ORGANIZATION_ADMIN]
|
||||||
|
UserPortfolioPermission.objects.get_or_create(user=self.user, portfolio=self.portfolio, roles=portfolio_roles)
|
||||||
|
|
||||||
|
with override_flag("organization_feature", active=True):
|
||||||
|
# Initial request to set the portfolio in session
|
||||||
|
response = self.client.get(reverse("home"), follow=True)
|
||||||
|
|
||||||
|
portfolio = self.client.session.get("portfolio")
|
||||||
|
self.assertEqual(portfolio.organization_name, "Hotel California")
|
||||||
|
self.assertContains(response, "Hotel California")
|
||||||
|
|
||||||
|
# Modify the portfolio
|
||||||
|
self.portfolio.organization_name = "Updated Hotel California"
|
||||||
|
self.portfolio.save()
|
||||||
|
|
||||||
|
# Make another request
|
||||||
|
response = self.client.get(reverse("home"), follow=True)
|
||||||
|
|
||||||
|
# Check if the updated portfolio name is in the response
|
||||||
|
self.assertContains(response, "Updated Hotel California")
|
||||||
|
|
||||||
|
# Verify that the session contains the updated portfolio
|
||||||
|
portfolio = self.client.session.get("portfolio")
|
||||||
|
self.assertEqual(portfolio.organization_name, "Updated Hotel California")
|
||||||
|
|
||||||
|
@less_console_noise_decorator
|
||||||
|
def test_portfolio_cache_updates_when_flag_disabled_while_logged_in(self):
|
||||||
|
"""Test that the portfolio in session is set to None when the organization_feature flag is disabled"""
|
||||||
|
self.client.force_login(self.user)
|
||||||
|
portfolio_roles = [UserPortfolioRoleChoices.ORGANIZATION_ADMIN]
|
||||||
|
UserPortfolioPermission.objects.get_or_create(user=self.user, portfolio=self.portfolio, roles=portfolio_roles)
|
||||||
|
|
||||||
|
with override_flag("organization_feature", active=True):
|
||||||
|
# Initial request to set the portfolio in session
|
||||||
|
response = self.client.get(reverse("home"), follow=True)
|
||||||
|
portfolio = self.client.session.get("portfolio")
|
||||||
|
self.assertEqual(portfolio.organization_name, "Hotel California")
|
||||||
|
self.assertContains(response, "Hotel California")
|
||||||
|
|
||||||
|
# Disable the organization_feature flag
|
||||||
|
with override_flag("organization_feature", active=False):
|
||||||
|
# Make another request
|
||||||
|
response = self.client.get(reverse("home"))
|
||||||
|
self.assertIsNone(self.client.session.get("portfolio"))
|
||||||
|
self.assertNotContains(response, "Hotel California")
|
||||||
|
|
|
@ -7,7 +7,7 @@ from api.tests.common import less_console_noise_decorator
|
||||||
from .common import MockSESClient, completed_domain_request # type: ignore
|
from .common import MockSESClient, completed_domain_request # type: ignore
|
||||||
from django_webtest import WebTest # type: ignore
|
from django_webtest import WebTest # type: ignore
|
||||||
import boto3_mocking # type: ignore
|
import boto3_mocking # type: ignore
|
||||||
|
from waffle.testutils import override_flag
|
||||||
from registrar.models import (
|
from registrar.models import (
|
||||||
DomainRequest,
|
DomainRequest,
|
||||||
DraftDomain,
|
DraftDomain,
|
||||||
|
@ -17,12 +17,14 @@ from registrar.models import (
|
||||||
User,
|
User,
|
||||||
Website,
|
Website,
|
||||||
FederalAgency,
|
FederalAgency,
|
||||||
|
Portfolio,
|
||||||
|
UserPortfolioPermission
|
||||||
)
|
)
|
||||||
from registrar.views.domain_request import DomainRequestWizard, Step
|
from registrar.views.domain_request import DomainRequestWizard, Step
|
||||||
|
|
||||||
from .common import less_console_noise
|
from .common import less_console_noise
|
||||||
from .test_views import TestWithUser
|
from .test_views import TestWithUser
|
||||||
|
from registrar.models.utility.portfolio_helper import UserPortfolioRoleChoices
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
@ -2925,6 +2927,41 @@ class DomainRequestTestDifferentStatuses(TestWithUser, WebTest):
|
||||||
response = self.client.get("/get-domain-requests-json/")
|
response = self.client.get("/get-domain-requests-json/")
|
||||||
self.assertContains(response, "Withdrawn")
|
self.assertContains(response, "Withdrawn")
|
||||||
|
|
||||||
|
@less_console_noise_decorator
|
||||||
|
@override_flag("organization_feature", active=True)
|
||||||
|
def test_domain_request_withdraw_portfolio_redirects_correctly(self):
|
||||||
|
"""Tests that the withdraw button on portfolio redirects to the portfolio domain requests page"""
|
||||||
|
portfolio, _ = Portfolio.objects.get_or_create(creator=self.user, organization_name="Test Portfolio")
|
||||||
|
UserPortfolioPermission.objects.get_or_create(
|
||||||
|
user=self.user,
|
||||||
|
portfolio=portfolio,
|
||||||
|
roles=[UserPortfolioRoleChoices.ORGANIZATION_ADMIN]
|
||||||
|
)
|
||||||
|
domain_request = completed_domain_request(status=DomainRequest.DomainRequestStatus.SUBMITTED, user=self.user)
|
||||||
|
domain_request.save()
|
||||||
|
|
||||||
|
detail_page = self.app.get(f"/domain-request/{domain_request.id}")
|
||||||
|
self.assertContains(detail_page, "city.gov")
|
||||||
|
self.assertContains(detail_page, "city1.gov")
|
||||||
|
self.assertContains(detail_page, "Chief Tester")
|
||||||
|
self.assertContains(detail_page, "testy@town.com")
|
||||||
|
self.assertContains(detail_page, "Admin Tester")
|
||||||
|
self.assertContains(detail_page, "Status:")
|
||||||
|
# click the "Withdraw request" button
|
||||||
|
mock_client = MockSESClient()
|
||||||
|
with boto3_mocking.clients.handler_for("sesv2", mock_client):
|
||||||
|
with less_console_noise():
|
||||||
|
withdraw_page = detail_page.click("Withdraw request")
|
||||||
|
self.assertContains(withdraw_page, "Withdraw request for")
|
||||||
|
home_page = withdraw_page.click("Withdraw request")
|
||||||
|
|
||||||
|
# Assert that it redirects to the portfolio requests page and the status has been updated to withdrawn
|
||||||
|
self.assertEqual(home_page.status_code, 302)
|
||||||
|
self.assertEqual(home_page.location, reverse("domain-requests"))
|
||||||
|
|
||||||
|
response = self.client.get("/get-domain-requests-json/")
|
||||||
|
self.assertContains(response, "Withdrawn")
|
||||||
|
|
||||||
@less_console_noise_decorator
|
@less_console_noise_decorator
|
||||||
def test_domain_request_withdraw_no_permissions(self):
|
def test_domain_request_withdraw_no_permissions(self):
|
||||||
"""Can't withdraw domain requests as a restricted user."""
|
"""Can't withdraw domain requests as a restricted user."""
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue