40 lines
1.7 KiB
Python
40 lines
1.7 KiB
Python
import django.http
|
|
from django.test import TestCase
|
|
import json
|
|
|
|
import lms.lib.comment_client
|
|
import django_comment_client.middleware as middleware
|
|
|
|
|
|
class AjaxExceptionTestCase(TestCase):
|
|
def setUp(self):
|
|
self.a = middleware.AjaxExceptionMiddleware()
|
|
self.request1 = django.http.HttpRequest()
|
|
self.request0 = django.http.HttpRequest()
|
|
self.exception1 = lms.lib.comment_client.CommentClientRequestError('{}', 401)
|
|
self.exception2 = lms.lib.comment_client.CommentClientRequestError('Foo!', 404)
|
|
self.exception0 = lms.lib.comment_client.CommentClient500Error("Holy crap the server broke!")
|
|
self.request1.META['HTTP_X_REQUESTED_WITH'] = "XMLHttpRequest"
|
|
self.request0.META['HTTP_X_REQUESTED_WITH'] = "SHADOWFAX"
|
|
|
|
def test_process_exception(self):
|
|
response1 = self.a.process_exception(self.request1, self.exception1)
|
|
self.assertIsInstance(response1, middleware.JsonError)
|
|
self.assertEqual(self.exception1.status_code, response1.status_code)
|
|
self.assertEqual(
|
|
{"errors": json.loads(self.exception1.message)},
|
|
json.loads(response1.content)
|
|
)
|
|
|
|
response2 = self.a.process_exception(self.request1, self.exception2)
|
|
self.assertIsInstance(response2, middleware.JsonError)
|
|
self.assertEqual(self.exception2.status_code, response2.status_code)
|
|
self.assertEqual(
|
|
{"errors": [self.exception2.message]},
|
|
json.loads(response2.content)
|
|
)
|
|
|
|
self.assertIsNone(self.a.process_exception(self.request1, self.exception0))
|
|
self.assertIsNone(self.a.process_exception(self.request0, self.exception1))
|
|
self.assertIsNone(self.a.process_exception(self.request0, self.exception0))
|