aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2012-10-11 11:21:50 +0100
committerTom Christie2012-10-11 11:21:50 +0100
commit9094f93d188859f5db9198a170bbb65d5b9e9286 (patch)
tree449e9b91f10fdebb02ad3726a90b57c59f9f60b3
parent83f39b3dce4028ff6b2ebe0be55c2a00d67ede00 (diff)
downloaddjango-rest-framework-9094f93d188859f5db9198a170bbb65d5b9e9286.tar.bz2
Sanitise JSON error messages
-rw-r--r--rest_framework/tests/views.py20
1 files changed, 16 insertions, 4 deletions
diff --git a/rest_framework/tests/views.py b/rest_framework/tests/views.py
index 3746d7c8..43365e07 100644
--- a/rest_framework/tests/views.py
+++ b/rest_framework/tests/views.py
@@ -1,3 +1,4 @@
+import copy
from django.test import TestCase
from django.test.client import RequestFactory
from rest_framework import status
@@ -27,6 +28,17 @@ def basic_view(request):
return {'method': 'PUT', 'data': request.DATA}
+def sanitise_json_error(error_dict):
+ """
+ Exact contents of JSON error messages depend on the installed version
+ of json.
+ """
+ ret = copy.copy(error_dict)
+ chop = len('JSON parse error - No JSON object could be decoded')
+ ret['detail'] = ret['detail'][:chop]
+ return ret
+
+
class ClassBasedViewIntegrationTests(TestCase):
def setUp(self):
self.view = BasicView.as_view()
@@ -38,7 +50,7 @@ class ClassBasedViewIntegrationTests(TestCase):
'detail': u'JSON parse error - No JSON object could be decoded'
}
self.assertEquals(response.status_code, status.HTTP_400_BAD_REQUEST)
- self.assertEquals(response.data, expected)
+ self.assertEquals(sanitise_json_error(response.data), expected)
def test_400_parse_error_tunneled_content(self):
content = 'f00bar'
@@ -53,7 +65,7 @@ class ClassBasedViewIntegrationTests(TestCase):
'detail': u'JSON parse error - No JSON object could be decoded'
}
self.assertEquals(response.status_code, status.HTTP_400_BAD_REQUEST)
- self.assertEquals(response.data, expected)
+ self.assertEquals(sanitise_json_error(response.data), expected)
class FunctionBasedViewIntegrationTests(TestCase):
@@ -67,7 +79,7 @@ class FunctionBasedViewIntegrationTests(TestCase):
'detail': u'JSON parse error - No JSON object could be decoded'
}
self.assertEquals(response.status_code, status.HTTP_400_BAD_REQUEST)
- self.assertEquals(response.data, expected)
+ self.assertEquals(sanitise_json_error(response.data), expected)
def test_400_parse_error_tunneled_content(self):
content = 'f00bar'
@@ -82,4 +94,4 @@ class FunctionBasedViewIntegrationTests(TestCase):
'detail': u'JSON parse error - No JSON object could be decoded'
}
self.assertEquals(response.status_code, status.HTTP_400_BAD_REQUEST)
- self.assertEquals(response.data, expected)
+ self.assertEquals(sanitise_json_error(response.data), expected)