From df5df769618725fce2fb7fed6ff6d682fe7ce13a Mon Sep 17 00:00:00 2001 From: Vishnu Ks Date: Wed, 5 Jul 2017 22:43:11 +0530 Subject: [PATCH] urls: Use POST for zerver.views.realm_emoji.upload_emoji. The upload_emoji endpoint is changed from PUT to POST because this endpoint is not idempotent. --- static/js/settings_emoji.js | 2 +- zerver/tests/test_reactions.py | 6 +++--- zerver/tests/test_realm_emoji.py | 16 ++++++++-------- zproject/urls.py | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/static/js/settings_emoji.js b/static/js/settings_emoji.js index 8832c53f42..e25eec7005 100644 --- a/static/js/settings_emoji.js +++ b/static/js/settings_emoji.js @@ -91,7 +91,7 @@ exports.set_up = function () { $.each($('#emoji_file_input')[0].files, function (i, file) { formData.append('file-' + i, file); }); - channel.put({ + channel.post({ url: "/json/realm/emoji/" + encodeURIComponent(emoji.name), data: formData, cache: false, diff --git a/zerver/tests/test_reactions.py b/zerver/tests/test_reactions.py index 9c05d48be5..1ea6b3638c 100644 --- a/zerver/tests/test_reactions.py +++ b/zerver/tests/test_reactions.py @@ -50,7 +50,7 @@ class ReactionEmojiTest(ZulipTestCase): self.login(email) with get_test_image_file('img.png') as fp1: emoji_data = {'f1': fp1} - result = self.client_put_multipart('/json/realm/emoji/my_emoji', info=emoji_data) + result = self.client_post('/json/realm/emoji/my_emoji', info=emoji_data) self.assert_json_success(result) emoji = RealmEmoji.objects.get(name="my_emoji") emoji.deactivated = True @@ -119,8 +119,8 @@ class ReactionEmojiTest(ZulipTestCase): emoji_name = 'my_emoji' with get_test_image_file('img.png') as fp1: emoji_data = {'f1': fp1} - result = self.client_put_multipart('/json/realm/emoji/my_emoji', info=emoji_data, - **self.api_auth(sender)) + result = self.client_post('/json/realm/emoji/my_emoji', info=emoji_data, + **self.api_auth(sender)) self.assert_json_success(result) self.assertEqual(200, result.status_code) diff --git a/zerver/tests/test_realm_emoji.py b/zerver/tests/test_realm_emoji.py index a4421276cd..33c3797d41 100644 --- a/zerver/tests/test_realm_emoji.py +++ b/zerver/tests/test_realm_emoji.py @@ -53,7 +53,7 @@ class RealmEmojiTest(ZulipTestCase): self.login(email) with get_test_image_file('img.png') as fp1: emoji_data = {'f1': fp1} - result = self.client_put_multipart('/json/realm/emoji/my_emoji', info=emoji_data) + result = self.client_post('/json/realm/emoji/my_emoji', info=emoji_data) self.assert_json_success(result) self.assertEqual(200, result.status_code) emoji = RealmEmoji.objects.get(name="my_emoji") @@ -79,7 +79,7 @@ class RealmEmojiTest(ZulipTestCase): self.login(email) with get_test_image_file('img.png') as fp1: emoji_data = {'f1': fp1} - result = self.client_put_multipart('/json/realm/emoji/my_em*oji', info=emoji_data) + result = self.client_post('/json/realm/emoji/my_em*oji', info=emoji_data) self.assert_json_error(result, 'Invalid characters in emoji name') def test_upload_uppercase_exception(self): @@ -88,7 +88,7 @@ class RealmEmojiTest(ZulipTestCase): self.login(email) with get_test_image_file('img.png') as fp1: emoji_data = {'f1': fp1} - result = self.client_put_multipart('/json/realm/emoji/my_EMoji', info=emoji_data) + result = self.client_post('/json/realm/emoji/my_EMoji', info=emoji_data) self.assert_json_error(result, 'Invalid characters in emoji name') def test_upload_admins_only(self): @@ -100,7 +100,7 @@ class RealmEmojiTest(ZulipTestCase): realm.save() with get_test_image_file('img.png') as fp1: emoji_data = {'f1': fp1} - result = self.client_put_multipart('/json/realm/emoji/my_emoji', info=emoji_data) + result = self.client_post('/json/realm/emoji/my_emoji', info=emoji_data) self.assert_json_error(result, 'Must be a realm administrator') def test_delete(self): @@ -169,7 +169,7 @@ class RealmEmojiTest(ZulipTestCase): email = self.example_email('iago') self.login(email) with get_test_image_file('img.png') as fp1, get_test_image_file('img.png') as fp2: - result = self.client_put_multipart('/json/realm/emoji/my_emoji', {'f1': fp1, 'f2': fp2}) + result = self.client_post('/json/realm/emoji/my_emoji', {'f1': fp1, 'f2': fp2}) self.assert_json_error(result, 'You must upload exactly one file.') def test_emoji_upload_file_size_error(self): @@ -178,7 +178,7 @@ class RealmEmojiTest(ZulipTestCase): self.login(email) with get_test_image_file('img.png') as fp: with self.settings(MAX_EMOJI_FILE_SIZE=0): - result = self.client_put_multipart('/json/realm/emoji/my_emoji', {'file': fp}) + result = self.client_post('/json/realm/emoji/my_emoji', {'file': fp}) self.assert_json_error(result, 'Uploaded file is larger than the allowed limit of 0 MB') def test_upload_already_existed_emoji(self): @@ -187,8 +187,8 @@ class RealmEmojiTest(ZulipTestCase): self.login(email) with get_test_image_file('img.png') as fp1: emoji_data = {'f1': fp1} - self.client_put_multipart('/json/realm/emoji/my_emoji', info=emoji_data) + self.client_post('/json/realm/emoji/my_emoji', info=emoji_data) with get_test_image_file('img.png') as fp1: emoji_data = {'f1': fp1} - result = self.client_put_multipart('/json/realm/emoji/my_emoji', info=emoji_data) + result = self.client_post('/json/realm/emoji/my_emoji', info=emoji_data) self.assert_json_error(result, 'Realm emoji with this Realm and Name already exists.') diff --git a/zproject/urls.py b/zproject/urls.py index 63b3da2192..2572e9b20c 100644 --- a/zproject/urls.py +++ b/zproject/urls.py @@ -191,7 +191,7 @@ v1_api_and_json_patterns = [ url(r'^realm/emoji$', rest_dispatch, {'GET': 'zerver.views.realm_emoji.list_emoji'}), url(r'^realm/emoji/(?P.*)$', rest_dispatch, - {'PUT': 'zerver.views.realm_emoji.upload_emoji', + {'POST': 'zerver.views.realm_emoji.upload_emoji', 'DELETE': 'zerver.views.realm_emoji.delete_emoji'}), # realm/icon -> zerver.views.realm_icon