summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2013-09-17 07:46:38 -0400
committerTim Graham <timograham@gmail.com>2013-09-18 09:56:01 -0400
commit778d4da9cc249839b059e45d90e3a947bb76dd6d (patch)
tree1cc08abc54cbe49b2adc520a53e2965975dea3f6 /tests
parentdbad65ded76d571937ce276e15cad2e19e9989fb (diff)
[1.6.x] Fixed #21098 -- Applied sensitive_post_parameters to MultiValueDict
Thanks simonpercivall for the report and bmispelon for the review. Backport of 2daada800f from master
Diffstat (limited to 'tests')
-rw-r--r--tests/mutually_referential/__pycache__/models.cpython-33.pyc.139834563760656bin0 -> 1224 bytes
-rw-r--r--tests/view_tests/tests/test_debug.py16
-rw-r--r--tests/view_tests/views.py13
3 files changed, 28 insertions, 1 deletions
diff --git a/tests/mutually_referential/__pycache__/models.cpython-33.pyc.139834563760656 b/tests/mutually_referential/__pycache__/models.cpython-33.pyc.139834563760656
new file mode 100644
index 0000000000..44ca6c71d0
--- /dev/null
+++ b/tests/mutually_referential/__pycache__/models.cpython-33.pyc.139834563760656
Binary files differ
diff --git a/tests/view_tests/tests/test_debug.py b/tests/view_tests/tests/test_debug.py
index 0baddd2bf8..1ea078bad3 100644
--- a/tests/view_tests/tests/test_debug.py
+++ b/tests/view_tests/tests/test_debug.py
@@ -22,7 +22,8 @@ from django.views.debug import ExceptionReporter
from .. import BrokenException, except_args
from ..views import (sensitive_view, non_sensitive_view, paranoid_view,
custom_exception_reporter_filter_view, sensitive_method_view,
- sensitive_args_function_caller, sensitive_kwargs_function_caller)
+ sensitive_args_function_caller, sensitive_kwargs_function_caller,
+ multivalue_dict_key_error)
from django.utils.unittest import skipIf
@@ -495,6 +496,19 @@ class ExceptionReporterFilterTests(TestCase, ExceptionReportTestMixin):
self.verify_paranoid_response(paranoid_view)
self.verify_paranoid_email(paranoid_view)
+ def test_multivalue_dict_key_error(self):
+ """
+ #21098 -- Ensure that sensitive POST parameters cannot be seen in the
+ error reports for if request.POST['nonexistent_key'] throws an error.
+ """
+ with self.settings(DEBUG=True):
+ self.verify_unsafe_response(multivalue_dict_key_error)
+ self.verify_unsafe_email(multivalue_dict_key_error)
+
+ with self.settings(DEBUG=False):
+ self.verify_safe_response(multivalue_dict_key_error)
+ self.verify_safe_email(multivalue_dict_key_error)
+
def test_custom_exception_reporter_filter(self):
"""
Ensure that it's possible to assign an exception reporter filter to
diff --git a/tests/view_tests/views.py b/tests/view_tests/views.py
index 2db6b09faa..67e95c79c8 100644
--- a/tests/view_tests/views.py
+++ b/tests/view_tests/views.py
@@ -272,3 +272,16 @@ class Klass(object):
def sensitive_method_view(request):
return Klass().method(request)
+
+
+@sensitive_variables('sauce')
+@sensitive_post_parameters('bacon-key', 'sausage-key')
+def multivalue_dict_key_error(request):
+ cooked_eggs = ''.join(['s', 'c', 'r', 'a', 'm', 'b', 'l', 'e', 'd'])
+ sauce = ''.join(['w', 'o', 'r', 'c', 'e', 's', 't', 'e', 'r', 's', 'h', 'i', 'r', 'e'])
+ try:
+ request.POST['bar']
+ except Exception:
+ exc_info = sys.exc_info()
+ send_log(request, exc_info)
+ return technical_500_response(request, *exc_info)