mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-05-16 09:37:03 +02:00
Address PR feedback
This commit is contained in:
parent
b5ea6c8e39
commit
828051854e
4 changed files with 26 additions and 28 deletions
|
@ -28,7 +28,7 @@ Secrets (for example, if you'd like to have a working Login.gov authentication)
|
||||||
DJANGO_SECRET_LOGIN_KEY="<...>"
|
DJANGO_SECRET_LOGIN_KEY="<...>"
|
||||||
```
|
```
|
||||||
|
|
||||||
You'll need to create the `.env` file yourself. Get the secrets from Cloud.gov by running `cf env getgov-unstable`.
|
You'll need to create the `.env` file yourself. Get the secrets from Cloud.gov by running `cf env getgov-unstable`. More information is available in [rotate_application_secrets.md](../operations/runbooks/rotate_application_secrets.md).
|
||||||
|
|
||||||
## Viewing Logs
|
## Viewing Logs
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import os
|
import os
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
from contextlib import contextmanager
|
||||||
|
|
||||||
def get_handlers():
|
def get_handlers():
|
||||||
"""Obtain pointers to all StreamHandlers."""
|
"""Obtain pointers to all StreamHandlers."""
|
||||||
|
@ -20,17 +21,16 @@ def get_handlers():
|
||||||
return handlers
|
return handlers
|
||||||
|
|
||||||
|
|
||||||
def dont_print_garbage(f):
|
@contextmanager
|
||||||
|
def less_console_noise():
|
||||||
"""
|
"""
|
||||||
Decorator to place on tests to silence console logging.
|
Context manager to use in tests to silence console logging.
|
||||||
|
|
||||||
This is helpful on tests which trigger console messages
|
This is helpful on tests which trigger console messages
|
||||||
(such as errors) which are normal and expected.
|
(such as errors) which are normal and expected.
|
||||||
|
|
||||||
It can easily be removed to debug a failing test.
|
It can easily be removed to debug a failing test.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def wrapper(*args, **kwargs):
|
|
||||||
restore = {}
|
restore = {}
|
||||||
handlers = get_handlers()
|
handlers = get_handlers()
|
||||||
devnull = open(os.devnull, "w")
|
devnull = open(os.devnull, "w")
|
||||||
|
@ -39,12 +39,11 @@ def dont_print_garbage(f):
|
||||||
for handler in handlers.values():
|
for handler in handlers.values():
|
||||||
prior = handler.setStream(devnull)
|
prior = handler.setStream(devnull)
|
||||||
restore[handler.name] = prior
|
restore[handler.name] = prior
|
||||||
|
try:
|
||||||
# run the test
|
# run the test
|
||||||
result = f(*args, **kwargs)
|
yield
|
||||||
|
finally:
|
||||||
# restore the streams
|
# restore the streams
|
||||||
for handler in handlers.values():
|
for handler in handlers.values():
|
||||||
handler.setStream(restore[handler.name])
|
handler.setStream(restore[handler.name])
|
||||||
|
|
||||||
return result
|
|
||||||
|
|
||||||
return wrapper
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ from django.http import HttpResponse
|
||||||
from django.test import Client, TestCase
|
from django.test import Client, TestCase
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
from .common import dont_print_garbage
|
from .common import less_console_noise
|
||||||
|
|
||||||
|
|
||||||
@patch("djangooidc.views.CLIENT", autospec=True)
|
@patch("djangooidc.views.CLIENT", autospec=True)
|
||||||
|
@ -40,18 +40,17 @@ class ViewsTest(TestCase):
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
self.assertContains(response, "Hi")
|
self.assertContains(response, "Hi")
|
||||||
|
|
||||||
@dont_print_garbage
|
|
||||||
def test_openid_raises(self, mock_client):
|
def test_openid_raises(self, mock_client):
|
||||||
# mock
|
# mock
|
||||||
mock_client.create_authn_request.side_effect = Exception("Test")
|
mock_client.create_authn_request.side_effect = Exception("Test")
|
||||||
# test
|
# test
|
||||||
|
with less_console_noise():
|
||||||
response = self.client.get(reverse("openid"))
|
response = self.client.get(reverse("openid"))
|
||||||
# assert
|
# assert
|
||||||
self.assertEqual(response.status_code, 500)
|
self.assertEqual(response.status_code, 500)
|
||||||
self.assertTemplateUsed(response, "500.html")
|
self.assertTemplateUsed(response, "500.html")
|
||||||
self.assertIn("Server Error", response.content.decode("utf-8"))
|
self.assertIn("Server Error", response.content.decode("utf-8"))
|
||||||
|
|
||||||
@dont_print_garbage
|
|
||||||
def test_login_callback_reads_next(self, mock_client):
|
def test_login_callback_reads_next(self, mock_client):
|
||||||
# setup
|
# setup
|
||||||
session = self.client.session
|
session = self.client.session
|
||||||
|
@ -60,25 +59,25 @@ class ViewsTest(TestCase):
|
||||||
# mock
|
# mock
|
||||||
mock_client.callback.side_effect = self.user_info
|
mock_client.callback.side_effect = self.user_info
|
||||||
# test
|
# test
|
||||||
|
with less_console_noise():
|
||||||
response = self.client.get(reverse("openid_login_callback"))
|
response = self.client.get(reverse("openid_login_callback"))
|
||||||
# assert
|
# assert
|
||||||
self.assertEqual(response.status_code, 302)
|
self.assertEqual(response.status_code, 302)
|
||||||
self.assertEqual(response.url, reverse("logout"))
|
self.assertEqual(response.url, reverse("logout"))
|
||||||
|
|
||||||
@patch("djangooidc.views.authenticate")
|
@patch("djangooidc.views.authenticate")
|
||||||
@dont_print_garbage
|
|
||||||
def test_login_callback_raises(self, mock_auth, mock_client):
|
def test_login_callback_raises(self, mock_auth, mock_client):
|
||||||
# mock
|
# mock
|
||||||
mock_client.callback.side_effect = self.user_info
|
mock_client.callback.side_effect = self.user_info
|
||||||
mock_auth.return_value = None
|
mock_auth.return_value = None
|
||||||
# test
|
# test
|
||||||
|
with less_console_noise():
|
||||||
response = self.client.get(reverse("openid_login_callback"))
|
response = self.client.get(reverse("openid_login_callback"))
|
||||||
# assert
|
# assert
|
||||||
self.assertEqual(response.status_code, 401)
|
self.assertEqual(response.status_code, 401)
|
||||||
self.assertTemplateUsed(response, "401.html")
|
self.assertTemplateUsed(response, "401.html")
|
||||||
self.assertIn("Unauthorized", response.content.decode("utf-8"))
|
self.assertIn("Unauthorized", response.content.decode("utf-8"))
|
||||||
|
|
||||||
@dont_print_garbage
|
|
||||||
def test_logout_redirect_url(self, mock_client):
|
def test_logout_redirect_url(self, mock_client):
|
||||||
# setup
|
# setup
|
||||||
session = self.client.session
|
session = self.client.session
|
||||||
|
@ -94,6 +93,7 @@ class ViewsTest(TestCase):
|
||||||
"end_session_endpoint": "http://example.com/log_me_out"
|
"end_session_endpoint": "http://example.com/log_me_out"
|
||||||
}
|
}
|
||||||
# test
|
# test
|
||||||
|
with less_console_noise():
|
||||||
response = self.client.get(reverse("logout"))
|
response = self.client.get(reverse("logout"))
|
||||||
# assert
|
# assert
|
||||||
expected = (
|
expected = (
|
||||||
|
@ -105,10 +105,10 @@ class ViewsTest(TestCase):
|
||||||
self.assertEqual(actual, expected)
|
self.assertEqual(actual, expected)
|
||||||
|
|
||||||
@patch("djangooidc.views.auth_logout")
|
@patch("djangooidc.views.auth_logout")
|
||||||
@dont_print_garbage
|
|
||||||
def test_logout_always_logs_out(self, mock_logout, _):
|
def test_logout_always_logs_out(self, mock_logout, _):
|
||||||
# Without additional mocking, logout will always fail.
|
# Without additional mocking, logout will always fail.
|
||||||
# Here we test that auth_logout is called regardless
|
# Here we test that auth_logout is called regardless
|
||||||
|
with less_console_noise():
|
||||||
self.client.get(reverse("logout"))
|
self.client.get(reverse("logout"))
|
||||||
self.assertTrue(mock_logout.called)
|
self.assertTrue(mock_logout.called)
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,6 @@ env_base_url = env.str("DJANGO_BASE_URL")
|
||||||
secret_login_key = b64decode(secret("DJANGO_SECRET_LOGIN_KEY", ""))
|
secret_login_key = b64decode(secret("DJANGO_SECRET_LOGIN_KEY", ""))
|
||||||
secret_key = secret("DJANGO_SECRET_KEY")
|
secret_key = secret("DJANGO_SECRET_KEY")
|
||||||
|
|
||||||
cli_testing_mode = True if "test" in sys_argv else False
|
|
||||||
|
|
||||||
# region: Basic Django Config-----------------------------------------------###
|
# region: Basic Django Config-----------------------------------------------###
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue