Clean PUT /users/me/pointer to POST /users/me/pointer.

This commit is contained in:
Jackson
2016-12-31 18:54:00 +11:00
committed by Tim Abbott
parent 0a9869868c
commit 29ce856843
5 changed files with 14 additions and 10 deletions

View File

@@ -18,7 +18,7 @@ var pointer_update_in_flight = false;
function update_pointer() { function update_pointer() {
if (!pointer_update_in_flight) { if (!pointer_update_in_flight) {
pointer_update_in_flight = true; pointer_update_in_flight = true;
return channel.put({ return channel.post({
url: '/json/users/me/pointer', url: '/json/users/me/pointer',
idempotent: true, idempotent: true,
data: {pointer: pointer.furthest_read}, data: {pointer: pointer.furthest_read},

View File

@@ -103,6 +103,7 @@ class PublicURLTest(ZulipTestCase):
"/json/subscriptions/exists", "/json/subscriptions/exists",
"/json/subscriptions/property", "/json/subscriptions/property",
"/json/fetch_api_key", "/json/fetch_api_key",
"/json/users/me/pointer",
"/json/users/me/subscriptions", "/json/users/me/subscriptions",
"/api/v1/users/me/subscriptions", "/api/v1/users/me/subscriptions",
], ],

View File

@@ -24,7 +24,7 @@ class PointerTest(ZulipTestCase):
self.login("hamlet@zulip.com") self.login("hamlet@zulip.com")
self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1) self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1)
msg_id = self.send_message("othello@zulip.com", "Verona", Recipient.STREAM) msg_id = self.send_message("othello@zulip.com", "Verona", Recipient.STREAM)
result = self.client_put("/json/users/me/pointer", {"pointer": msg_id}) result = self.client_post("/json/users/me/pointer", {"pointer": msg_id})
self.assert_json_success(result) self.assert_json_success(result)
self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, msg_id) self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, msg_id)
@@ -36,8 +36,8 @@ class PointerTest(ZulipTestCase):
email = "hamlet@zulip.com" email = "hamlet@zulip.com"
self.assertEqual(get_user_profile_by_email(email).pointer, -1) self.assertEqual(get_user_profile_by_email(email).pointer, -1)
msg_id = self.send_message("othello@zulip.com", "Verona", Recipient.STREAM) msg_id = self.send_message("othello@zulip.com", "Verona", Recipient.STREAM)
result = self.client_put("/api/v1/users/me/pointer", {"pointer": msg_id}, result = self.client_post("/api/v1/users/me/pointer", {"pointer": msg_id},
**self.api_auth(email)) **self.api_auth(email))
self.assert_json_success(result) self.assert_json_success(result)
self.assertEqual(get_user_profile_by_email(email).pointer, msg_id) self.assertEqual(get_user_profile_by_email(email).pointer, msg_id)
@@ -49,7 +49,7 @@ class PointerTest(ZulipTestCase):
""" """
self.login("hamlet@zulip.com") self.login("hamlet@zulip.com")
self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1) self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1)
result = self.client_put("/json/users/me/pointer", {"foo": 1}) result = self.client_post("/json/users/me/pointer", {"foo": 1})
self.assert_json_error(result, "Missing 'pointer' argument") self.assert_json_error(result, "Missing 'pointer' argument")
self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1) self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1)
@@ -61,7 +61,7 @@ class PointerTest(ZulipTestCase):
""" """
self.login("hamlet@zulip.com") self.login("hamlet@zulip.com")
self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1) self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1)
result = self.client_put("/json/users/me/pointer", {"pointer": "foo"}) result = self.client_post("/json/users/me/pointer", {"pointer": "foo"})
self.assert_json_error(result, "Bad value for 'pointer': foo") self.assert_json_error(result, "Bad value for 'pointer': foo")
self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1) self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1)
@@ -73,7 +73,7 @@ class PointerTest(ZulipTestCase):
""" """
self.login("hamlet@zulip.com") self.login("hamlet@zulip.com")
self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1) self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1)
result = self.client_put("/json/users/me/pointer", {"pointer": -2}) result = self.client_post("/json/users/me/pointer", {"pointer": -2})
self.assert_json_error(result, "Bad value for 'pointer': -2") self.assert_json_error(result, "Bad value for 'pointer': -2")
self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1) self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1)

View File

@@ -1726,7 +1726,7 @@ class GetProfileTest(ZulipTestCase):
def common_update_pointer(self, email, pointer): def common_update_pointer(self, email, pointer):
# type: (Text, int) -> None # type: (Text, int) -> None
self.login(email) self.login(email)
result = self.client_put("/json/users/me/pointer", {"pointer": pointer}) result = self.client_post("/json/users/me/pointer", {"pointer": pointer})
self.assert_json_success(result) self.assert_json_success(result)
def common_get_profile(self, email): def common_get_profile(self, email):
@@ -1812,7 +1812,7 @@ class GetProfileTest(ZulipTestCase):
json = self.common_get_profile("hamlet@zulip.com") json = self.common_get_profile("hamlet@zulip.com")
self.assertEqual(json["pointer"], id2) # pointer does not move backwards self.assertEqual(json["pointer"], id2) # pointer does not move backwards
result = self.client_put("/json/users/me/pointer", {"pointer": 99999999}) result = self.client_post("/json/users/me/pointer", {"pointer": 99999999})
self.assert_json_error(result, "Invalid message ID") self.assert_json_error(result, "Invalid message ID")
def test_get_all_profiles_avatar_urls(self): def test_get_all_profiles_avatar_urls(self):

View File

@@ -225,9 +225,12 @@ v1_api_and_json_patterns = [
url(r'^users/me$', rest_dispatch, url(r'^users/me$', rest_dispatch,
{'GET': 'zerver.views.users.get_profile_backend', {'GET': 'zerver.views.users.get_profile_backend',
'DELETE': 'zerver.views.users.deactivate_user_own_backend'}), 'DELETE': 'zerver.views.users.deactivate_user_own_backend'}),
# PUT is currently used by mobile apps, we intend to remove the PUT version
# as soon as possible. POST exists to correct the erroneous use of PUT.
url(r'^users/me/pointer$', rest_dispatch, url(r'^users/me/pointer$', rest_dispatch,
{'GET': 'zerver.views.pointer.get_pointer_backend', {'GET': 'zerver.views.pointer.get_pointer_backend',
'PUT': 'zerver.views.pointer.update_pointer_backend'}), 'PUT': 'zerver.views.pointer.update_pointer_backend',
'POST': 'zerver.views.pointer.update_pointer_backend'}),
url(r'^users/me/presence$', rest_dispatch, url(r'^users/me/presence$', rest_dispatch,
{'POST': 'zerver.views.presence.update_active_status_backend'}), {'POST': 'zerver.views.presence.update_active_status_backend'}),
# Endpoint used by mobile devices to register their push # Endpoint used by mobile devices to register their push