Update discussion api tests.
json doesn't do any magic with byte strings in python 3. In python 2 it used to convert str objects to unicode automatically.
This commit is contained in:
@@ -83,7 +83,7 @@ class DiscussionAPIViewTestMixin(ForumsEnableMixin, CommentsServiceMockMixin, Ur
|
||||
Assert that the response has the given status code and parsed content
|
||||
"""
|
||||
self.assertEqual(response.status_code, expected_status)
|
||||
parsed_content = json.loads(response.content)
|
||||
parsed_content = json.loads(response.content.decode('utf-8'))
|
||||
self.assertEqual(parsed_content, expected_content)
|
||||
|
||||
def register_thread(self, overrides=None):
|
||||
@@ -211,7 +211,7 @@ class RetireViewTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase):
|
||||
headers = self.build_jwt_headers(self.superuser)
|
||||
data = {'username': self.user.username}
|
||||
response = self.client.post(self.url, data, **headers)
|
||||
self.assert_response_correct(response, 204, "")
|
||||
self.assert_response_correct(response, 204, b"")
|
||||
|
||||
def test_downstream_forums_error(self):
|
||||
"""
|
||||
@@ -799,7 +799,7 @@ class ThreadViewSetListTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase, Pro
|
||||
{"course_id": text_type(self.course.id), "requested_fields": "profile_image"},
|
||||
)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response_threads = json.loads(response.content)['results']
|
||||
response_threads = json.loads(response.content.decode('utf-8'))['results']
|
||||
|
||||
for response_thread in response_threads:
|
||||
expected_profile_data = self.get_expected_user_profile(response_thread['author'])
|
||||
@@ -824,7 +824,7 @@ class ThreadViewSetListTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase, Pro
|
||||
{"course_id": text_type(self.course.id), "requested_fields": "profile_image"},
|
||||
)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response_thread = json.loads(response.content)['results'][0]
|
||||
response_thread = json.loads(response.content.decode('utf-8'))['results'][0]
|
||||
self.assertIsNone(response_thread['author'])
|
||||
self.assertEqual({}, response_thread['users'])
|
||||
|
||||
@@ -859,7 +859,7 @@ class ThreadViewSetCreateTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase):
|
||||
content_type="application/json"
|
||||
)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response_data = json.loads(response.content)
|
||||
response_data = json.loads(response.content.decode('utf-8'))
|
||||
self.assertEqual(response_data, self.expected_thread_data({"read": True}))
|
||||
self.assertEqual(
|
||||
httpretty.last_request().parsed_body,
|
||||
@@ -889,7 +889,7 @@ class ThreadViewSetCreateTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase):
|
||||
"field_errors": {"course_id": {"developer_message": "This field is required."}}
|
||||
}
|
||||
self.assertEqual(response.status_code, 400)
|
||||
response_data = json.loads(response.content)
|
||||
response_data = json.loads(response.content.decode('utf-8'))
|
||||
self.assertEqual(response_data, expected_response_data)
|
||||
|
||||
|
||||
@@ -915,7 +915,7 @@ class ThreadViewSetPartialUpdateTest(DiscussionAPIViewTestMixin, ModuleStoreTest
|
||||
request_data = {"raw_body": "Edited body"}
|
||||
response = self.request_patch(request_data)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response_data = json.loads(response.content)
|
||||
response_data = json.loads(response.content.decode('utf-8'))
|
||||
self.assertEqual(
|
||||
response_data,
|
||||
self.expected_thread_data({
|
||||
@@ -957,7 +957,7 @@ class ThreadViewSetPartialUpdateTest(DiscussionAPIViewTestMixin, ModuleStoreTest
|
||||
"field_errors": {"title": {"developer_message": "This field may not be blank."}}
|
||||
}
|
||||
self.assertEqual(response.status_code, 400)
|
||||
response_data = json.loads(response.content)
|
||||
response_data = json.loads(response.content.decode('utf-8'))
|
||||
self.assertEqual(response_data, expected_response_data)
|
||||
|
||||
@ddt.data(
|
||||
@@ -972,7 +972,7 @@ class ThreadViewSetPartialUpdateTest(DiscussionAPIViewTestMixin, ModuleStoreTest
|
||||
request_data = {field: value}
|
||||
response = self.request_patch(request_data)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response_data = json.loads(response.content)
|
||||
response_data = json.loads(response.content.decode('utf-8'))
|
||||
self.assertEqual(
|
||||
response_data,
|
||||
self.expected_thread_data({
|
||||
@@ -1007,7 +1007,7 @@ class ThreadViewSetPartialUpdateTest(DiscussionAPIViewTestMixin, ModuleStoreTest
|
||||
|
||||
response = self.request_patch(request_data)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response_data = json.loads(response.content)
|
||||
response_data = json.loads(response.content.decode('utf-8'))
|
||||
self.assertEqual(
|
||||
response_data,
|
||||
self.expected_thread_data({
|
||||
@@ -1035,7 +1035,7 @@ class ThreadViewSetPartialUpdateTest(DiscussionAPIViewTestMixin, ModuleStoreTest
|
||||
request_data = {"read": True}
|
||||
response = self.request_patch(request_data)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response_data = json.loads(response.content)
|
||||
response_data = json.loads(response.content.decode('utf-8'))
|
||||
self.assertEqual(
|
||||
response_data,
|
||||
self.expected_thread_data({
|
||||
@@ -1072,7 +1072,7 @@ class ThreadViewSetDeleteTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase):
|
||||
self.register_delete_thread_response(self.thread_id)
|
||||
response = self.client.delete(self.url)
|
||||
self.assertEqual(response.status_code, 204)
|
||||
self.assertEqual(response.content, "")
|
||||
self.assertEqual(response.content, b"")
|
||||
self.assertEqual(
|
||||
urlparse(httpretty.last_request().path).path,
|
||||
"/api/v1/threads/{}".format(self.thread_id)
|
||||
@@ -1276,7 +1276,7 @@ class CommentViewSetListTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase, Pr
|
||||
"thread_id": thread["id"],
|
||||
"endorsed": endorsed,
|
||||
})
|
||||
parsed_content = json.loads(response.content)
|
||||
parsed_content = json.loads(response.content.decode('utf-8'))
|
||||
self.assertEqual(parsed_content["results"][0]["id"], comment_id)
|
||||
|
||||
def test_question_invalid_endorsed(self):
|
||||
@@ -1375,7 +1375,7 @@ class CommentViewSetListTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase, Pr
|
||||
|
||||
response = self.client.get(self.url, {"thread_id": self.thread_id, "requested_fields": "profile_image"})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response_comments = json.loads(response.content)['results']
|
||||
response_comments = json.loads(response.content.decode('utf-8'))['results']
|
||||
for response_comment in response_comments:
|
||||
expected_profile_data = self.get_expected_user_profile(response_comment['author'])
|
||||
response_users = response_comment['users']
|
||||
@@ -1418,7 +1418,7 @@ class CommentViewSetListTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase, Pr
|
||||
"requested_fields": "profile_image",
|
||||
})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response_comments = json.loads(response.content)['results']
|
||||
response_comments = json.loads(response.content.decode('utf-8'))['results']
|
||||
for response_comment in response_comments:
|
||||
expected_author_profile_data = self.get_expected_user_profile(response_comment['author'])
|
||||
expected_endorser_profile_data = self.get_expected_user_profile(response_comment['endorsed_by'])
|
||||
@@ -1451,7 +1451,7 @@ class CommentViewSetListTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase, Pr
|
||||
"requested_fields": "profile_image",
|
||||
})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response_comments = json.loads(response.content)['results']
|
||||
response_comments = json.loads(response.content.decode('utf-8'))['results']
|
||||
for response_comment in response_comments:
|
||||
expected_author_profile_data = self.get_expected_user_profile(response_comment['author'])
|
||||
response_users = response_comment['users']
|
||||
@@ -1488,7 +1488,7 @@ class CommentViewSetDeleteTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase):
|
||||
self.register_delete_comment_response(self.comment_id)
|
||||
response = self.client.delete(self.url)
|
||||
self.assertEqual(response.status_code, 204)
|
||||
self.assertEqual(response.content, "")
|
||||
self.assertEqual(response.content, b"")
|
||||
self.assertEqual(
|
||||
urlparse(httpretty.last_request().path).path,
|
||||
"/api/v1/comments/{}".format(self.comment_id)
|
||||
@@ -1545,7 +1545,7 @@ class CommentViewSetCreateTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase):
|
||||
content_type="application/json"
|
||||
)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response_data = json.loads(response.content)
|
||||
response_data = json.loads(response.content.decode('utf-8'))
|
||||
self.assertEqual(response_data, expected_response_data)
|
||||
self.assertEqual(
|
||||
urlparse(httpretty.last_request().path).path,
|
||||
@@ -1570,7 +1570,7 @@ class CommentViewSetCreateTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase):
|
||||
"field_errors": {"thread_id": {"developer_message": "This field is required."}}
|
||||
}
|
||||
self.assertEqual(response.status_code, 400)
|
||||
response_data = json.loads(response.content)
|
||||
response_data = json.loads(response.content.decode('utf-8'))
|
||||
self.assertEqual(response_data, expected_response_data)
|
||||
|
||||
def test_closed_thread(self):
|
||||
@@ -1638,7 +1638,7 @@ class CommentViewSetPartialUpdateTest(DiscussionAPIViewTestMixin, ModuleStoreTes
|
||||
request_data = {"raw_body": "Edited body"}
|
||||
response = self.request_patch(request_data)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response_data = json.loads(response.content)
|
||||
response_data = json.loads(response.content.decode('utf-8'))
|
||||
self.assertEqual(
|
||||
response_data,
|
||||
self.expected_response_data({
|
||||
@@ -1670,7 +1670,7 @@ class CommentViewSetPartialUpdateTest(DiscussionAPIViewTestMixin, ModuleStoreTes
|
||||
"field_errors": {"raw_body": {"developer_message": "This field may not be blank."}}
|
||||
}
|
||||
self.assertEqual(response.status_code, 400)
|
||||
response_data = json.loads(response.content)
|
||||
response_data = json.loads(response.content.decode('utf-8'))
|
||||
self.assertEqual(response_data, expected_response_data)
|
||||
|
||||
@ddt.data(
|
||||
@@ -1685,7 +1685,7 @@ class CommentViewSetPartialUpdateTest(DiscussionAPIViewTestMixin, ModuleStoreTes
|
||||
request_data = {field: value}
|
||||
response = self.request_patch(request_data)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response_data = json.loads(response.content)
|
||||
response_data = json.loads(response.content.decode('utf-8'))
|
||||
self.assertEqual(
|
||||
response_data,
|
||||
self.expected_response_data({
|
||||
@@ -1731,7 +1731,7 @@ class ThreadViewSetRetrieveTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase,
|
||||
self.register_get_thread_response(cs_thread)
|
||||
response = self.client.get(self.url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(json.loads(response.content), self.expected_thread_data({"unread_comment_count": 1}))
|
||||
self.assertEqual(json.loads(response.content.decode('utf-8')), self.expected_thread_data({"unread_comment_count": 1}))
|
||||
self.assertEqual(httpretty.last_request().method, "GET")
|
||||
|
||||
def test_retrieve_nonexistent_thread(self):
|
||||
@@ -1755,7 +1755,7 @@ class ThreadViewSetRetrieveTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase,
|
||||
response = self.client.get(self.url, {"requested_fields": "profile_image"})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
expected_profile_data = self.get_expected_user_profile(self.user.username)
|
||||
response_users = json.loads(response.content)['users']
|
||||
response_users = json.loads(response.content.decode('utf-8'))['users']
|
||||
self.assertEqual(expected_profile_data, response_users[self.user.username])
|
||||
|
||||
|
||||
@@ -1823,7 +1823,7 @@ class CommentViewSetRetrieveTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase
|
||||
|
||||
response = self.client.get(self.url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(json.loads(response.content)['results'][0], expected_response_data)
|
||||
self.assertEqual(json.loads(response.content.decode('utf-8'))['results'][0], expected_response_data)
|
||||
|
||||
def test_retrieve_nonexistent_comment(self):
|
||||
self.register_get_comment_error_response(self.comment_id, 404)
|
||||
@@ -1874,7 +1874,7 @@ class CommentViewSetRetrieveTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase
|
||||
|
||||
response = self.client.get(self.url, {'requested_fields': 'profile_image'})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response_comments = json.loads(response.content)['results']
|
||||
response_comments = json.loads(response.content.decode('utf-8'))['results']
|
||||
|
||||
for response_comment in response_comments:
|
||||
expected_profile_data = self.get_expected_user_profile(response_comment['author'])
|
||||
@@ -1957,7 +1957,7 @@ class CourseDiscussionSettingsAPIViewTest(APITestCase, UrlResetMixin, ModuleStor
|
||||
"""Validate the current discussion settings against the expected response."""
|
||||
response = self.client.get(self.path)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
content = json.loads(response.content)
|
||||
content = json.loads(response.content.decode('utf-8'))
|
||||
self.assertEqual(content, expected_response)
|
||||
|
||||
def _assert_patched_settings(self, data, expected_response):
|
||||
@@ -2015,7 +2015,7 @@ class CourseDiscussionSettingsAPIViewTest(APITestCase, UrlResetMixin, ModuleStor
|
||||
expected_response['divided_inline_discussions'] = [
|
||||
topic_name_to_id(self.course, name) for name in divided_inline_discussions
|
||||
]
|
||||
content = json.loads(response.content)
|
||||
content = json.loads(response.content.decode('utf-8'))
|
||||
self.assertEqual(content, expected_response)
|
||||
|
||||
def test_available_schemes(self):
|
||||
@@ -2041,7 +2041,7 @@ class CourseDiscussionSettingsAPIViewTest(APITestCase, UrlResetMixin, ModuleStor
|
||||
def test_empty_body_patch_request(self):
|
||||
"""Test the response status code on sending a PATCH request with an empty body or missing fields."""
|
||||
self._login_as_staff()
|
||||
response = self.patch_request("")
|
||||
response = self.patch_request(b"")
|
||||
self.assertEqual(response.status_code, 400)
|
||||
|
||||
response = self.patch_request({})
|
||||
@@ -2258,7 +2258,7 @@ class CourseDiscussionRolesAPIViewTest(APITestCase, UrlResetMixin, ModuleStoreTe
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
content = json.loads(response.content)
|
||||
content = json.loads(response.content.decode('utf-8'))
|
||||
self.assertEqual(content['course_id'], 'x/y/z')
|
||||
self.assertEqual(len(content['results']), count)
|
||||
expected_fields = ('username', 'email', 'first_name', 'last_name', 'group_name')
|
||||
@@ -2307,6 +2307,6 @@ class CourseDiscussionRolesAPIViewTest(APITestCase, UrlResetMixin, ModuleStoreTe
|
||||
|
||||
response = self.post(role, user.username, action)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
content = json.loads(response.content)
|
||||
content = json.loads(response.content.decode('utf-8'))
|
||||
assertion = self.assertTrue if action == 'allow' else self.assertFalse
|
||||
assertion(any(user.username in x['username'] for x in content['results']))
|
||||
|
||||
Reference in New Issue
Block a user