mirror of
https://github.com/django/django.git
synced 2025-08-04 10:59:45 +00:00
Replaced django.test.utils.patch_logger() with assertLogs().
Thanks Tim Graham for the review.
This commit is contained in:
parent
7d3fe36c62
commit
607970f31c
13 changed files with 97 additions and 157 deletions
|
@ -1,4 +1,3 @@
|
|||
import logging
|
||||
import re
|
||||
|
||||
from django.conf import settings
|
||||
|
@ -10,7 +9,6 @@ from django.middleware.csrf import (
|
|||
_compare_salted_tokens as equivalent_tokens, get_token,
|
||||
)
|
||||
from django.test import SimpleTestCase, override_settings
|
||||
from django.test.utils import patch_logger
|
||||
from django.views.decorators.csrf import csrf_exempt, requires_csrf_token
|
||||
|
||||
from .views import (
|
||||
|
@ -98,24 +96,24 @@ class CsrfViewMiddlewareTestMixin:
|
|||
If no CSRF cookies is present, the middleware rejects the incoming
|
||||
request. This will stop login CSRF.
|
||||
"""
|
||||
with patch_logger('django.security.csrf', 'warning') as logger_calls:
|
||||
req = self._get_POST_no_csrf_cookie_request()
|
||||
self.mw.process_request(req)
|
||||
req = self._get_POST_no_csrf_cookie_request()
|
||||
self.mw.process_request(req)
|
||||
with self.assertLogs('django.security.csrf', 'WARNING') as cm:
|
||||
req2 = self.mw.process_view(req, post_form_view, (), {})
|
||||
self.assertEqual(403, req2.status_code)
|
||||
self.assertEqual(logger_calls[0], 'Forbidden (%s): ' % REASON_NO_CSRF_COOKIE)
|
||||
self.assertEqual(403, req2.status_code)
|
||||
self.assertEqual(cm.records[0].getMessage(), 'Forbidden (%s): ' % REASON_NO_CSRF_COOKIE)
|
||||
|
||||
def test_process_request_csrf_cookie_no_token(self):
|
||||
"""
|
||||
If a CSRF cookie is present but no token, the middleware rejects
|
||||
the incoming request.
|
||||
"""
|
||||
with patch_logger('django.security.csrf', 'warning') as logger_calls:
|
||||
req = self._get_POST_csrf_cookie_request()
|
||||
self.mw.process_request(req)
|
||||
req = self._get_POST_csrf_cookie_request()
|
||||
self.mw.process_request(req)
|
||||
with self.assertLogs('django.security.csrf', 'WARNING') as cm:
|
||||
req2 = self.mw.process_view(req, post_form_view, (), {})
|
||||
self.assertEqual(403, req2.status_code)
|
||||
self.assertEqual(logger_calls[0], 'Forbidden (%s): ' % REASON_BAD_TOKEN)
|
||||
self.assertEqual(403, req2.status_code)
|
||||
self.assertEqual(cm.records[0].getMessage(), 'Forbidden (%s): ' % REASON_BAD_TOKEN)
|
||||
|
||||
def test_process_request_csrf_cookie_and_token(self):
|
||||
"""
|
||||
|
@ -163,17 +161,17 @@ class CsrfViewMiddlewareTestMixin:
|
|||
"""
|
||||
req = TestingHttpRequest()
|
||||
req.method = 'PUT'
|
||||
with patch_logger('django.security.csrf', 'warning') as logger_calls:
|
||||
with self.assertLogs('django.security.csrf', 'WARNING') as cm:
|
||||
req2 = self.mw.process_view(req, post_form_view, (), {})
|
||||
self.assertEqual(403, req2.status_code)
|
||||
self.assertEqual(logger_calls[0], 'Forbidden (%s): ' % REASON_NO_CSRF_COOKIE)
|
||||
self.assertEqual(403, req2.status_code)
|
||||
self.assertEqual(cm.records[0].getMessage(), 'Forbidden (%s): ' % REASON_NO_CSRF_COOKIE)
|
||||
|
||||
req = TestingHttpRequest()
|
||||
req.method = 'DELETE'
|
||||
with patch_logger('django.security.csrf', 'warning') as logger_calls:
|
||||
with self.assertLogs('django.security.csrf', 'WARNING') as cm:
|
||||
req2 = self.mw.process_view(req, post_form_view, (), {})
|
||||
self.assertEqual(403, req2.status_code)
|
||||
self.assertEqual(logger_calls[0], 'Forbidden (%s): ' % REASON_NO_CSRF_COOKIE)
|
||||
self.assertEqual(403, req2.status_code)
|
||||
self.assertEqual(cm.records[0].getMessage(), 'Forbidden (%s): ' % REASON_NO_CSRF_COOKIE)
|
||||
|
||||
def test_put_and_delete_allowed(self):
|
||||
"""
|
||||
|
@ -436,22 +434,10 @@ class CsrfViewMiddlewareTestMixin:
|
|||
"""
|
||||
ensure_csrf_cookie() doesn't log warnings (#19436).
|
||||
"""
|
||||
class TestHandler(logging.Handler):
|
||||
def emit(self, record):
|
||||
raise Exception("This shouldn't have happened!")
|
||||
|
||||
logger = logging.getLogger('django.request')
|
||||
test_handler = TestHandler()
|
||||
old_log_level = logger.level
|
||||
try:
|
||||
logger.addHandler(test_handler)
|
||||
logger.setLevel(logging.WARNING)
|
||||
|
||||
req = self._get_GET_no_csrf_cookie_request()
|
||||
ensure_csrf_cookie_view(req)
|
||||
finally:
|
||||
logger.removeHandler(test_handler)
|
||||
logger.setLevel(old_log_level)
|
||||
with self.assertRaisesMessage(AssertionError, 'no logs'):
|
||||
with self.assertLogs('django.request', 'WARNING'):
|
||||
req = self._get_GET_no_csrf_cookie_request()
|
||||
ensure_csrf_cookie_view(req)
|
||||
|
||||
def test_post_data_read_failure(self):
|
||||
"""
|
||||
|
@ -498,11 +484,11 @@ class CsrfViewMiddlewareTestMixin:
|
|||
self.assertIsNone(resp)
|
||||
|
||||
req = CsrfPostRequest(token, raise_error=True)
|
||||
with patch_logger('django.security.csrf', 'warning') as logger_calls:
|
||||
self.mw.process_request(req)
|
||||
self.mw.process_request(req)
|
||||
with self.assertLogs('django.security.csrf', 'WARNING') as cm:
|
||||
resp = self.mw.process_view(req, post_form_view, (), {})
|
||||
self.assertEqual(resp.status_code, 403)
|
||||
self.assertEqual(logger_calls[0], 'Forbidden (%s): ' % REASON_BAD_TOKEN)
|
||||
self.assertEqual(resp.status_code, 403)
|
||||
self.assertEqual(cm.records[0].getMessage(), 'Forbidden (%s): ' % REASON_BAD_TOKEN)
|
||||
|
||||
|
||||
class CsrfViewMiddlewareTests(CsrfViewMiddlewareTestMixin, SimpleTestCase):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue