mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 05:23:35 +00:00
Replace /json/update_pointer with REST style route.
This commit is contained in:
@@ -29,7 +29,7 @@ class Command(BaseCommand):
|
||||
UserActivity.objects.filter(user_profile__realm=realm,
|
||||
user_profile__is_active=True,
|
||||
last_visit__gt=activity_cutoff,
|
||||
query="/json/update_pointer",
|
||||
query="/json/users/me/pointer",
|
||||
client__name="website")]
|
||||
|
||||
def messages_sent_by(self, user, days_ago):
|
||||
|
||||
@@ -140,7 +140,8 @@ def realm_summary_table(realm_minutes):
|
||||
'/json/send_message',
|
||||
'send_message_backend',
|
||||
'/api/v1/send_message',
|
||||
'/json/update_pointer'
|
||||
'/json/update_pointer',
|
||||
'/json/users/me/pointer'
|
||||
)
|
||||
AND
|
||||
last_visit > now() - interval '1 day'
|
||||
@@ -169,8 +170,9 @@ def realm_summary_table(realm_minutes):
|
||||
ua.query in (
|
||||
'/json/send_message',
|
||||
'send_message_backend',
|
||||
'/api/v1/send_message',
|
||||
'/json/update_pointer'
|
||||
'/api/v1/send_message',
|
||||
'/json/update_pointer',
|
||||
'/json/users/me/pointer'
|
||||
)
|
||||
GROUP by realm.id, up.email
|
||||
HAVING max(last_visit) between
|
||||
@@ -190,7 +192,8 @@ def realm_summary_table(realm_minutes):
|
||||
'/json/send_message',
|
||||
'/api/v1/send_message',
|
||||
'send_message_backend',
|
||||
'/json/update_pointer'
|
||||
'/json/update_pointer',
|
||||
'/json/users/me/pointer'
|
||||
)
|
||||
AND
|
||||
up.realm_id = realm.id
|
||||
@@ -658,7 +661,7 @@ def get_user_activity_summary(records):
|
||||
update('website', record)
|
||||
if ('send_message' in query) or re.search('/api/.*/external/.*', query):
|
||||
update('send', record)
|
||||
if query in ['/json/update_pointer', '/api/v1/update_pointer']:
|
||||
if query in ['/json/update_pointer', '/json/users/me/pointer', '/api/v1/update_pointer']:
|
||||
update('pointer', record)
|
||||
update(client, record)
|
||||
|
||||
|
||||
@@ -222,8 +222,8 @@ function respond_to_message(opts) {
|
||||
function update_pointer() {
|
||||
if (!pointer_update_in_flight) {
|
||||
pointer_update_in_flight = true;
|
||||
return channel.post({
|
||||
url: '/json/update_pointer',
|
||||
return channel.put({
|
||||
url: '/json/users/me/pointer',
|
||||
idempotent: true,
|
||||
data: {pointer: furthest_read},
|
||||
success: function () {
|
||||
|
||||
@@ -38,10 +38,7 @@ class PublicURLTest(TestCase):
|
||||
|
||||
def fetch(self, method, urls, expected_status):
|
||||
for url in urls:
|
||||
if method == "get":
|
||||
response = self.client.get(url)
|
||||
else:
|
||||
response = self.client.post(url)
|
||||
response = getattr(self.client, method)(url) # e.g. self.client.post(url) if method is "post"
|
||||
self.assertEqual(response.status_code, expected_status,
|
||||
msg="Expected %d, received %d for %s to %s" % (
|
||||
expected_status, response.status_code, method, url))
|
||||
@@ -64,7 +61,6 @@ class PublicURLTest(TestCase):
|
||||
302: ["/accounts/logout/"],
|
||||
401: ["/json/get_public_streams",
|
||||
"/json/get_old_messages",
|
||||
"/json/update_pointer",
|
||||
"/json/messages",
|
||||
"/json/invite_users",
|
||||
"/json/settings/change",
|
||||
@@ -81,10 +77,14 @@ class PublicURLTest(TestCase):
|
||||
"/api/v1/fetch_api_key",
|
||||
],
|
||||
}
|
||||
put_urls = {401: ["/json/users/me/pointer"],
|
||||
}
|
||||
for status_code, url_set in six.iteritems(get_urls):
|
||||
self.fetch("get", url_set, status_code)
|
||||
for status_code, url_set in six.iteritems(post_urls):
|
||||
self.fetch("post", url_set, status_code)
|
||||
for status_code, url_set in six.iteritems(put_urls):
|
||||
self.fetch("put", url_set, status_code)
|
||||
|
||||
def test_get_gcid_when_not_configured(self):
|
||||
with self.settings(GOOGLE_CLIENT_ID=None):
|
||||
|
||||
@@ -18,7 +18,7 @@ class PointerTest(AuthedTestCase):
|
||||
self.login("hamlet@zulip.com")
|
||||
self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1)
|
||||
msg_id = self.send_message("othello@zulip.com", "Verona", Recipient.STREAM)
|
||||
result = self.client.post("/json/update_pointer", {"pointer": msg_id})
|
||||
result = self.client_put("/json/users/me/pointer", {"pointer": msg_id})
|
||||
self.assert_json_success(result)
|
||||
self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, msg_id)
|
||||
|
||||
@@ -36,34 +36,34 @@ class PointerTest(AuthedTestCase):
|
||||
|
||||
def test_missing_pointer(self):
|
||||
"""
|
||||
Posting json to /json/update_pointer which does not contain a pointer key/value pair
|
||||
Posting json to /json/users/me/pointer which does not contain a pointer key/value pair
|
||||
returns a 400 and error message.
|
||||
"""
|
||||
self.login("hamlet@zulip.com")
|
||||
self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1)
|
||||
result = self.client.post("/json/update_pointer", {"foo": 1})
|
||||
result = self.client_put("/json/users/me/pointer", {"foo": 1})
|
||||
self.assert_json_error(result, "Missing 'pointer' argument")
|
||||
self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1)
|
||||
|
||||
def test_invalid_pointer(self):
|
||||
"""
|
||||
Posting json to /json/update_pointer with an invalid pointer returns a 400 and error
|
||||
Posting json to /json/users/me/pointer with an invalid pointer returns a 400 and error
|
||||
message.
|
||||
"""
|
||||
self.login("hamlet@zulip.com")
|
||||
self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1)
|
||||
result = self.client.post("/json/update_pointer", {"pointer": "foo"})
|
||||
result = self.client_put("/json/users/me/pointer", {"pointer": "foo"})
|
||||
self.assert_json_error(result, "Bad value for 'pointer': foo")
|
||||
self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1)
|
||||
|
||||
def test_pointer_out_of_range(self):
|
||||
"""
|
||||
Posting json to /json/update_pointer with an out of range (< 0) pointer returns a 400
|
||||
Posting json to /json/users/me/pointer with an out of range (< 0) pointer returns a 400
|
||||
and error message.
|
||||
"""
|
||||
self.login("hamlet@zulip.com")
|
||||
self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1)
|
||||
result = self.client.post("/json/update_pointer", {"pointer": -2})
|
||||
result = self.client_put("/json/users/me/pointer", {"pointer": -2})
|
||||
self.assert_json_error(result, "Bad value for 'pointer': -2")
|
||||
self.assertEqual(get_user_profile_by_email("hamlet@zulip.com").pointer, -1)
|
||||
|
||||
|
||||
@@ -298,7 +298,7 @@ class ActivityTest(AuthedTestCase):
|
||||
def test_activity(self):
|
||||
self.login("hamlet@zulip.com")
|
||||
client, _ = Client.objects.get_or_create(name='website')
|
||||
query = '/json/update_pointer'
|
||||
query = '/json/users/me/pointer'
|
||||
last_visit = datetime.datetime.now()
|
||||
count=150
|
||||
for user_profile in UserProfile.objects.all():
|
||||
@@ -1046,7 +1046,7 @@ class GetProfileTest(AuthedTestCase):
|
||||
|
||||
def common_update_pointer(self, email, pointer):
|
||||
self.login(email)
|
||||
result = self.client.post("/json/update_pointer", {"pointer": pointer})
|
||||
result = self.client_put("/json/users/me/pointer", {"pointer": pointer})
|
||||
self.assert_json_success(result)
|
||||
|
||||
def common_get_profile(self, email):
|
||||
@@ -1101,7 +1101,7 @@ class GetProfileTest(AuthedTestCase):
|
||||
json = self.common_get_profile("hamlet@zulip.com")
|
||||
self.assertEqual(json["pointer"], id2) # pointer does not move backwards
|
||||
|
||||
result = self.client.post("/json/update_pointer", {"pointer": 99999999})
|
||||
result = self.client_put("/json/users/me/pointer", {"pointer": 99999999})
|
||||
self.assert_json_error(result, "Invalid message ID")
|
||||
|
||||
def test_get_all_profiles_avatar_urls(self):
|
||||
|
||||
Reference in New Issue
Block a user