From 1bfa575ada8cde4a1dcc2e8ea1c5f7c57a9d0620 Mon Sep 17 00:00:00 2001 From: Feanil Patel Date: Mon, 19 Aug 2019 10:48:17 -0400 Subject: [PATCH] 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. --- .../discussion/rest_api/tests/test_views.py | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/lms/djangoapps/discussion/rest_api/tests/test_views.py b/lms/djangoapps/discussion/rest_api/tests/test_views.py index c753076be9..673f08ca7f 100644 --- a/lms/djangoapps/discussion/rest_api/tests/test_views.py +++ b/lms/djangoapps/discussion/rest_api/tests/test_views.py @@ -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']))