mirror of
https://github.com/zulip/zulip.git
synced 2025-11-14 10:57:58 +00:00
Actually test callbacks in GetUpdatesTest.
The tests in GetUpdatesTest had some callback logic that has been dead code for at least three months. We now fully exercise the callback codepath and make sure that the callbacks do happen. (imported from commit f5d8fbab28ecc34dc81d3d0c29058b66c10f378f)
This commit is contained in:
@@ -297,7 +297,7 @@ def do_send_messages(messages):
|
||||
cache_save_message(message['message'])
|
||||
|
||||
# We can only publish messages to longpolling clients if the Tornado server is running.
|
||||
if settings.TORNADO_SERVER:
|
||||
if True:
|
||||
for message in messages:
|
||||
# Render Markdown etc. here and store (automatically) in
|
||||
# memcached, so that the single-threaded Tornado server
|
||||
|
||||
@@ -1555,10 +1555,22 @@ class S3Test(AuthedTestCase):
|
||||
self.test_uris.remove(uri)
|
||||
|
||||
|
||||
class DummyStream:
|
||||
def closed(self):
|
||||
return False
|
||||
|
||||
class DummyObject:
|
||||
pass
|
||||
|
||||
class DummyTornadoRequest:
|
||||
def __init__(self):
|
||||
self.connection = DummyObject()
|
||||
self.connection.stream = DummyStream()
|
||||
|
||||
class DummyHandler(object):
|
||||
def __init__(self, assert_callback):
|
||||
self.assert_callback = assert_callback
|
||||
self.request = DummyTornadoRequest()
|
||||
|
||||
# Mocks RequestHandler.async_callback, which wraps a callback to
|
||||
# handle exceptions. We return the callback as-is.
|
||||
@@ -1568,10 +1580,11 @@ class DummyHandler(object):
|
||||
def write(self, response):
|
||||
raise NotImplemented
|
||||
|
||||
def finish(self, response):
|
||||
def humbug_finish(self, response, *ignore):
|
||||
if self.assert_callback:
|
||||
self.assert_callback(response)
|
||||
|
||||
|
||||
class DummySession(object):
|
||||
session_key = "0"
|
||||
|
||||
@@ -1589,18 +1602,25 @@ class GetUpdatesTest(AuthedTestCase):
|
||||
|
||||
def common_test_get_updates(self, view_func, extra_post_data = {}):
|
||||
user_profile = self.get_user_profile("hamlet@humbughq.com")
|
||||
message_content = 'tornado test message'
|
||||
self.got_callback = False
|
||||
|
||||
def callback(response):
|
||||
correct_message_ids = [m.id for m in
|
||||
filter_by_subscriptions(Message.objects.all(), user_profile)]
|
||||
for message in response['messages']:
|
||||
self.assertGreater(message['id'], 1)
|
||||
self.assertIn(message['id'], correct_message_ids)
|
||||
self.got_callback = True
|
||||
msg = response['messages'][0]
|
||||
if str(msg['content_type']) == 'text/html':
|
||||
self.assertEqual('<p>%s</p>' % message_content, msg['content'])
|
||||
else:
|
||||
self.assertEqual(message_content, msg['content'])
|
||||
|
||||
post_data = {}
|
||||
post_data.update(extra_post_data)
|
||||
request = POSTRequestMock(post_data, user_profile, callback)
|
||||
self.assertEqual(view_func(request), RespondAsynchronously)
|
||||
self.send_message("hamlet@humbughq.com", "hamlet@humbughq.com",
|
||||
Recipient.PERSONAL, message_content)
|
||||
self.assertTrue(self.got_callback)
|
||||
|
||||
|
||||
def test_json_get_updates(self):
|
||||
"""
|
||||
|
||||
@@ -120,7 +120,7 @@ def initialize_user_messages():
|
||||
stream = streams[m.recipient.type_id]
|
||||
add_stream_message(stream.realm.id, stream.name, m.id)
|
||||
|
||||
if not settings.DEPLOYED:
|
||||
if not settings.DEPLOYED and not settings.TEST_SUITE:
|
||||
# Filling the memcached cache is a little slow, so do it in a child process.
|
||||
# For DEPLOYED cases, we run this from restart_server.
|
||||
subprocess.Popen(["python", os.path.join(os.path.dirname(__file__), "..", "manage.py"),
|
||||
@@ -352,6 +352,8 @@ def send_notification_http(data):
|
||||
requests.post(settings.TORNADO_SERVER + '/notify_tornado', data=dict(
|
||||
data = ujson.dumps(data),
|
||||
secret = settings.SHARED_SECRET))
|
||||
else:
|
||||
process_notification(data)
|
||||
|
||||
def send_notification(data):
|
||||
return queue_json_publish("notify_tornado", data, send_notification_http)
|
||||
|
||||
Reference in New Issue
Block a user