mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-03 01:33:32 +02:00
Add unit tests, fix bug
This commit is contained in:
parent
089763c578
commit
d14dbd082d
3 changed files with 105 additions and 2 deletions
|
@ -49,3 +49,17 @@ def less_console_noise():
|
|||
handler.setStream(restore[handler.name])
|
||||
# close the file we opened
|
||||
devnull.close()
|
||||
|
||||
|
||||
def less_console_noise_decorator(func):
|
||||
"""
|
||||
Decorator to silence console logging using the less_console_noise() function.
|
||||
"""
|
||||
|
||||
# "Wrap" the original function in the less_console_noise with clause,
|
||||
# then just return this wrapper.
|
||||
def wrapper(*args, **kwargs):
|
||||
with less_console_noise():
|
||||
return func(*args, **kwargs)
|
||||
|
||||
return wrapper
|
||||
|
|
|
@ -325,7 +325,6 @@ class Domain(TimeStampedModel, DomainHelper):
|
|||
Subordinate hosts (something.your-domain.gov) MUST have IP addresses,
|
||||
while non-subordinate hosts MUST NOT.
|
||||
"""
|
||||
raise ValueError("test")
|
||||
try:
|
||||
# attempt to retrieve hosts from registry and store in cache and db
|
||||
hosts = self._get_property("hosts")
|
||||
|
|
|
@ -1,8 +1,14 @@
|
|||
from django.test import Client, TestCase, override_settings
|
||||
from django.contrib.auth import get_user_model
|
||||
|
||||
from .common import MockEppLib # type: ignore
|
||||
from api.tests.common import less_console_noise_decorator
|
||||
from registrar.models.domain import Domain
|
||||
from registrar.models.user_domain_role import UserDomainRole
|
||||
from registrar.views.domain import DomainNameserversView
|
||||
|
||||
from .common import MockEppLib, less_console_noise # type: ignore
|
||||
from unittest.mock import patch
|
||||
from django.urls import reverse
|
||||
|
||||
from registrar.models import (
|
||||
DomainRequest,
|
||||
|
@ -66,6 +72,7 @@ class TestEnvironmentVariablesEffects(TestCase):
|
|||
|
||||
def tearDown(self):
|
||||
super().tearDown()
|
||||
Domain.objects.all().delete()
|
||||
self.user.delete()
|
||||
|
||||
@override_settings(IS_PRODUCTION=True)
|
||||
|
@ -79,3 +86,86 @@ class TestEnvironmentVariablesEffects(TestCase):
|
|||
"""Banner on non-prod."""
|
||||
home_page = self.client.get("/")
|
||||
self.assertContains(home_page, "You are on a test site.")
|
||||
|
||||
def side_effect_raise_value_error(self):
|
||||
"""Side effect that raises a 500 error"""
|
||||
raise ValueError("Some error")
|
||||
|
||||
@less_console_noise_decorator
|
||||
@override_settings(IS_PRODUCTION=False)
|
||||
def test_non_production_environment_raises_500_and_shows_banner(self):
|
||||
"""Tests if the non-prod banner is still shown on a 500"""
|
||||
fake_domain, _ = Domain.objects.get_or_create(name="igorville.gov")
|
||||
|
||||
# Add a role
|
||||
fake_role, _ = UserDomainRole.objects.get_or_create(
|
||||
user=self.user, domain=fake_domain, role=UserDomainRole.Roles.MANAGER
|
||||
)
|
||||
|
||||
with patch.object(DomainNameserversView, "get_initial", side_effect=self.side_effect_raise_value_error):
|
||||
with self.assertRaises(ValueError):
|
||||
contact_page_500 = self.client.get(
|
||||
reverse("domain-dns-nameservers", kwargs={"pk": fake_domain.id}),
|
||||
)
|
||||
|
||||
# Check that a 500 response is returned
|
||||
self.assertEqual(contact_page_500.status_code, 500)
|
||||
|
||||
self.assertContains(contact_page_500, "You are on a test site.")
|
||||
|
||||
@less_console_noise_decorator
|
||||
@override_settings(IS_PRODUCTION=True)
|
||||
def test_production_environment_raises_500_and_doesnt_show_banner(self):
|
||||
"""Test if the non-prod banner is not shown on production when a 500 is raised"""
|
||||
|
||||
fake_domain, _ = Domain.objects.get_or_create(name="igorville.gov")
|
||||
|
||||
# Add a role
|
||||
fake_role, _ = UserDomainRole.objects.get_or_create(
|
||||
user=self.user, domain=fake_domain, role=UserDomainRole.Roles.MANAGER
|
||||
)
|
||||
|
||||
with patch.object(DomainNameserversView, "get_initial", side_effect=self.side_effect_raise_value_error):
|
||||
with self.assertRaises(ValueError):
|
||||
contact_page_500 = self.client.get(
|
||||
reverse("domain-dns-nameservers", kwargs={"pk": fake_domain.id}),
|
||||
)
|
||||
|
||||
# Check that a 500 response is returned
|
||||
self.assertEqual(contact_page_500.status_code, 500)
|
||||
|
||||
self.assertNotContains(contact_page_500, "You are on a test site.")
|
||||
|
||||
@less_console_noise_decorator
|
||||
@override_settings(IS_PRODUCTION=False)
|
||||
def test_non_production_environment_raises_403_and_shows_banner(self):
|
||||
"""Test if the non-prod banner is shown when a 403 is raised"""
|
||||
|
||||
fake_domain, _ = Domain.objects.get_or_create(name="igorville.gov")
|
||||
|
||||
# Test navigating to the contact page. Should return a 403,
|
||||
# but the banner should still appear.
|
||||
contact_page_403 = self.client.get(
|
||||
reverse("domain-dns-nameservers", kwargs={"pk": fake_domain.id}),
|
||||
)
|
||||
|
||||
self.assertEqual(contact_page_403.status_code, 403)
|
||||
|
||||
self.assertContains(contact_page_403, "You are on a test site.", status_code=403)
|
||||
|
||||
@less_console_noise_decorator
|
||||
@override_settings(IS_PRODUCTION=True)
|
||||
def test_production_environment_raises_403_and_doesnt_show_banner(self):
|
||||
"""Test if the non-prod banner is not shown on production when a 403 is raised"""
|
||||
|
||||
fake_domain, _ = Domain.objects.get_or_create(name="igorville.gov")
|
||||
|
||||
# Test navigating to the contact page. Should return a 403,
|
||||
# but the banner should still appear.
|
||||
contact_page_403 = self.client.get(
|
||||
reverse("domain-dns-nameservers", kwargs={"pk": fake_domain.id}),
|
||||
)
|
||||
|
||||
self.assertEqual(contact_page_403.status_code, 403)
|
||||
|
||||
self.assertNotContains(contact_page_403, "You are on a test site.", status_code=403)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue