Skip to content

Commit

Permalink
Merge pull request #2464 from cisagov/dk/2250-test-suite
Browse files Browse the repository at this point in the history
Issue #2250: improvements to test suite
  • Loading branch information
dave-kennedy-ecs authored Jul 29, 2024
2 parents 279fca4 + bb9fe81 commit 44bd242
Show file tree
Hide file tree
Showing 18 changed files with 4,349 additions and 3,703 deletions.
397 changes: 201 additions & 196 deletions src/epplibwrapper/tests/test_client.py

Large diffs are not rendered by default.

244 changes: 143 additions & 101 deletions src/registrar/tests/common.py

Large diffs are not rendered by default.

3,231 changes: 324 additions & 2,907 deletions src/registrar/tests/test_admin.py

Large diffs are not rendered by default.

824 changes: 824 additions & 0 deletions src/registrar/tests/test_admin_domain.py

Large diffs are not rendered by default.

2,064 changes: 2,064 additions & 0 deletions src/registrar/tests/test_admin_request.py

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions src/registrar/tests/test_admin_views.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
from django.test import TestCase, Client
from django.urls import reverse
from registrar.tests.common import create_superuser
from api.tests.common import less_console_noise_decorator


class TestAdminViews(TestCase):
def setUp(self):
self.client = Client(HTTP_HOST="localhost:8080")
self.superuser = create_superuser()

@less_console_noise_decorator
def test_export_data_view(self):
self.client.force_login(self.superuser)

Expand Down
49 changes: 26 additions & 23 deletions src/registrar/tests/test_emails.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@
from waffle.testutils import override_flag
from registrar.utility import email
from registrar.utility.email import send_templated_email
from .common import completed_domain_request, less_console_noise
from .common import completed_domain_request

from api.tests.common import less_console_noise_decorator
from datetime import datetime
import boto3_mocking # type: ignore

Expand All @@ -19,6 +20,7 @@ def setUp(self):

@boto3_mocking.patching
@override_flag("disable_email_sending", active=True)
@less_console_noise_decorator
def test_disable_email_flag(self):
"""Test if the 'disable_email_sending' stops emails from being sent"""
with boto3_mocking.clients.handler_for("sesv2", self.mock_client_class):
Expand All @@ -36,13 +38,13 @@ def test_disable_email_flag(self):
self.assertFalse(self.mock_client.send_email.called)

@boto3_mocking.patching
@less_console_noise_decorator
def test_submission_confirmation(self):
"""Submission confirmation email works."""
domain_request = completed_domain_request()

with boto3_mocking.clients.handler_for("sesv2", self.mock_client_class):
with less_console_noise():
domain_request.submit()
domain_request.submit()

# check that an email was sent
self.assertTrue(self.mock_client.send_email.called)
Expand Down Expand Up @@ -74,25 +76,25 @@ def test_submission_confirmation(self):
self.assertIn("Anything else", body)

@boto3_mocking.patching
@less_console_noise_decorator
def test_submission_confirmation_no_current_website_spacing(self):
"""Test line spacing without current_website."""
domain_request = completed_domain_request(has_current_website=False)
with boto3_mocking.clients.handler_for("sesv2", self.mock_client_class):
with less_console_noise():
domain_request.submit()
domain_request.submit()
_, kwargs = self.mock_client.send_email.call_args
body = kwargs["Content"]["Simple"]["Body"]["Text"]["Data"]
self.assertNotIn("Current websites:", body)
# spacing should be right between adjacent elements
self.assertRegex(body, r"5555\n\n.gov domain:")

@boto3_mocking.patching
@less_console_noise_decorator
def test_submission_confirmation_current_website_spacing(self):
"""Test line spacing with current_website."""
domain_request = completed_domain_request(has_current_website=True)
with boto3_mocking.clients.handler_for("sesv2", self.mock_client_class):
with less_console_noise():
domain_request.submit()
domain_request.submit()
_, kwargs = self.mock_client.send_email.call_args
body = kwargs["Content"]["Simple"]["Body"]["Text"]["Data"]
self.assertIn("Current websites:", body)
Expand All @@ -101,12 +103,12 @@ def test_submission_confirmation_current_website_spacing(self):
self.assertRegex(body, r"city.com\n\n.gov domain:")

@boto3_mocking.patching
@less_console_noise_decorator
def test_submission_confirmation_other_contacts_spacing(self):
"""Test line spacing with other contacts."""
domain_request = completed_domain_request(has_other_contacts=True)
with boto3_mocking.clients.handler_for("sesv2", self.mock_client_class):
with less_console_noise():
domain_request.submit()
domain_request.submit()
_, kwargs = self.mock_client.send_email.call_args
body = kwargs["Content"]["Simple"]["Body"]["Text"]["Data"]
self.assertIn("Other employees from your organization:", body)
Expand All @@ -115,96 +117,97 @@ def test_submission_confirmation_other_contacts_spacing(self):
self.assertRegex(body, r"5557\n\nAnything else")

@boto3_mocking.patching
@less_console_noise_decorator
def test_submission_confirmation_no_other_contacts_spacing(self):
"""Test line spacing without other contacts."""
domain_request = completed_domain_request(has_other_contacts=False)
with boto3_mocking.clients.handler_for("sesv2", self.mock_client_class):
with less_console_noise():
domain_request.submit()
domain_request.submit()
_, kwargs = self.mock_client.send_email.call_args
body = kwargs["Content"]["Simple"]["Body"]["Text"]["Data"]
# spacing should be right between adjacent elements
self.assertRegex(body, r"5556\n\nOther employees")
self.assertRegex(body, r"None\n\nAnything else")

@boto3_mocking.patching
@less_console_noise_decorator
def test_submission_confirmation_alternative_govdomain_spacing(self):
"""Test line spacing with alternative .gov domain."""
domain_request = completed_domain_request(has_alternative_gov_domain=True)
with boto3_mocking.clients.handler_for("sesv2", self.mock_client_class):
with less_console_noise():
domain_request.submit()
domain_request.submit()
_, kwargs = self.mock_client.send_email.call_args
body = kwargs["Content"]["Simple"]["Body"]["Text"]["Data"]
self.assertIn("city1.gov", body)
# spacing should be right between adjacent elements
self.assertRegex(body, r"city.gov\n\nAlternative domains:\ncity1.gov\n\nPurpose of your domain:")

@boto3_mocking.patching
@less_console_noise_decorator
def test_submission_confirmation_no_alternative_govdomain_spacing(self):
"""Test line spacing without alternative .gov domain."""
domain_request = completed_domain_request(has_alternative_gov_domain=False)
with boto3_mocking.clients.handler_for("sesv2", self.mock_client_class):
with less_console_noise():
domain_request.submit()
domain_request.submit()
_, kwargs = self.mock_client.send_email.call_args
body = kwargs["Content"]["Simple"]["Body"]["Text"]["Data"]
self.assertNotIn("city1.gov", body)
# spacing should be right between adjacent elements
self.assertRegex(body, r"city.gov\n\nPurpose of your domain:")

@boto3_mocking.patching
@less_console_noise_decorator
def test_submission_confirmation_about_your_organization_spacing(self):
"""Test line spacing with about your organization."""
domain_request = completed_domain_request(has_about_your_organization=True)
with boto3_mocking.clients.handler_for("sesv2", self.mock_client_class):
with less_console_noise():
domain_request.submit()
domain_request.submit()
_, kwargs = self.mock_client.send_email.call_args
body = kwargs["Content"]["Simple"]["Body"]["Text"]["Data"]
self.assertIn("About your organization:", body)
# spacing should be right between adjacent elements
self.assertRegex(body, r"10002\n\nAbout your organization:")

@boto3_mocking.patching
@less_console_noise_decorator
def test_submission_confirmation_no_about_your_organization_spacing(self):
"""Test line spacing without about your organization."""
domain_request = completed_domain_request(has_about_your_organization=False)
with boto3_mocking.clients.handler_for("sesv2", self.mock_client_class):
with less_console_noise():
domain_request.submit()
domain_request.submit()
_, kwargs = self.mock_client.send_email.call_args
body = kwargs["Content"]["Simple"]["Body"]["Text"]["Data"]
self.assertNotIn("About your organization:", body)
# spacing should be right between adjacent elements
self.assertRegex(body, r"10002\n\nSenior official:")

@boto3_mocking.patching
@less_console_noise_decorator
def test_submission_confirmation_anything_else_spacing(self):
"""Test line spacing with anything else."""
domain_request = completed_domain_request(has_anything_else=True)
with boto3_mocking.clients.handler_for("sesv2", self.mock_client_class):
with less_console_noise():
domain_request.submit()
domain_request.submit()
_, kwargs = self.mock_client.send_email.call_args
body = kwargs["Content"]["Simple"]["Body"]["Text"]["Data"]
# spacing should be right between adjacent elements
self.assertRegex(body, r"5557\n\nAnything else?")

@boto3_mocking.patching
@less_console_noise_decorator
def test_submission_confirmation_no_anything_else_spacing(self):
"""Test line spacing without anything else."""
domain_request = completed_domain_request(has_anything_else=False)
with boto3_mocking.clients.handler_for("sesv2", self.mock_client_class):
with less_console_noise():
domain_request.submit()
domain_request.submit()
_, kwargs = self.mock_client.send_email.call_args
body = kwargs["Content"]["Simple"]["Body"]["Text"]["Data"]
self.assertNotIn("Anything else", body)
# spacing should be right between adjacent elements
self.assertRegex(body, r"5557\n\n----")

@boto3_mocking.patching
@less_console_noise_decorator
def test_send_email_with_attachment(self):
with boto3_mocking.clients.handler_for("ses", self.mock_client_class):
sender_email = "sender@example.com"
Expand Down
16 changes: 15 additions & 1 deletion src/registrar/tests/test_management_scripts.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
class TestPopulateVerificationType(MockEppLib):
"""Tests for the populate_organization_type script"""

@less_console_noise_decorator
def setUp(self):
"""Creates a fake domain object"""
super().setUp()
Expand Down Expand Up @@ -133,6 +134,7 @@ def test_verification_type_script_populates_data(self):
class TestPopulateOrganizationType(MockEppLib):
"""Tests for the populate_organization_type script"""

@less_console_noise_decorator
def setUp(self):
"""Creates a fake domain object"""
super().setUp()
Expand Down Expand Up @@ -205,6 +207,7 @@ def run_populate_organization_type(self):
):
call_command("populate_organization_type", "registrar/tests/data/fake_election_domains.csv")

@less_console_noise_decorator
def assert_expected_org_values_on_request_and_info(
self,
domain_request: DomainRequest,
Expand Down Expand Up @@ -247,6 +250,7 @@ def do_nothing(self):
"""Does nothing for mocking purposes"""
pass

@less_console_noise_decorator
def test_request_and_info_city_not_in_csv(self):
"""
Tests what happens to a city domain that is not defined in the CSV.
Expand Down Expand Up @@ -282,6 +286,7 @@ def test_request_and_info_city_not_in_csv(self):
# All values should be the same
self.assert_expected_org_values_on_request_and_info(city_request, city_info, expected_values)

@less_console_noise_decorator
def test_request_and_info_federal(self):
"""
Tests what happens to a federal domain after the script is run (should be unchanged).
Expand Down Expand Up @@ -316,6 +321,7 @@ def test_request_and_info_federal(self):
# All values should be the same
self.assert_expected_org_values_on_request_and_info(federal_request, federal_info, expected_values)

@less_console_noise_decorator
def test_request_and_info_tribal_add_election_office(self):
"""
Tests if a tribal domain in the election csv changes organization_type to TRIBAL - ELECTION
Expand Down Expand Up @@ -356,6 +362,7 @@ def test_request_and_info_tribal_add_election_office(self):

self.assert_expected_org_values_on_request_and_info(tribal_request, tribal_info, expected_values)

@less_console_noise_decorator
def test_request_and_info_tribal_doesnt_remove_election_office(self):
"""
Tests if a tribal domain in the election csv changes organization_type to TRIBAL_ELECTION
Expand Down Expand Up @@ -409,6 +416,7 @@ def test_request_and_info_tribal_doesnt_remove_election_office(self):
class TestPopulateFirstReady(TestCase):
"""Tests for the populate_first_ready script"""

@less_console_noise_decorator
def setUp(self):
"""Creates a fake domain object"""
super().setUp()
Expand Down Expand Up @@ -537,6 +545,7 @@ def test_populate_first_ready_state_unknown(self):


class TestPatchAgencyInfo(TestCase):
@less_console_noise_decorator
def setUp(self):
self.user, _ = User.objects.get_or_create(username="testuser")
self.domain, _ = Domain.objects.get_or_create(name="testdomain.gov")
Expand All @@ -560,6 +569,7 @@ def call_patch_federal_agency_info(self, mock_prompt):


class TestExtendExpirationDates(MockEppLib):
@less_console_noise_decorator
def setUp(self):
"""Defines the file name of migration_json and the folder its contained in"""
super().setUp()
Expand Down Expand Up @@ -882,6 +892,7 @@ def setUp(self):
def tearDown(self):
self.logger_patcher.stop()

@less_console_noise_decorator
@patch("os.makedirs")
@patch("os.path.exists")
@patch("os.remove")
Expand Down Expand Up @@ -1113,6 +1124,7 @@ def test_handle_zip_file_not_found(self, mock_path_exists, mock_makedirs, mock_l
class TestTransferFederalAgencyType(TestCase):
"""Tests for the transfer_federal_agency_type script"""

@less_console_noise_decorator
def setUp(self):
"""Creates a fake domain object"""
super().setUp()
Expand Down Expand Up @@ -1172,7 +1184,9 @@ def tearDown(self):
User.objects.all().delete()
Contact.objects.all().delete()
Website.objects.all().delete()
FederalAgency.objects.all().delete()
FederalAgency.objects.filter(
id__in=[self.amtrak.id, self.legislative_branch.id, self.library_of_congress.id, self.gov_admin.id]
).delete()

def run_transfer_federal_agency_type(self):
"""
Expand Down
Loading

0 comments on commit 44bd242

Please sign in to comment.