From 80489843eececb588e20c8792fdcdaef8a1669d2 Mon Sep 17 00:00:00 2001 From: Steve Howell Date: Thu, 9 Apr 2020 21:12:03 +0000 Subject: [PATCH] message store: Report type confusion errors. We also complain if the caller sends us `undefined`. --- frontend_tests/node_tests/message_store.js | 13 ++++++++++++- static/js/message_store.js | 13 +++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/frontend_tests/node_tests/message_store.js b/frontend_tests/node_tests/message_store.js index 1f5e22e23f..15129e9add 100644 --- a/frontend_tests/node_tests/message_store.js +++ b/frontend_tests/node_tests/message_store.js @@ -96,7 +96,12 @@ run_test('add_message_metadata', () => { assert.equal(message.alerted, true); assert.equal(message.is_me_message, false); - const retrieved_message = message_store.get(2067); + let retrieved_message = message_store.get(2067); + assert.equal(retrieved_message, message); + + blueslip.expect('error', 'message_store got non-number: 2067'); + retrieved_message = message_store.get('2067'); + blueslip.reset(); assert.equal(retrieved_message, message); // access cached previous message, and test match subject/content @@ -297,3 +302,9 @@ run_test('message_id_change', () => { }); }); + +run_test('errors', () => { + blueslip.expect('error', 'message_store.get got bad value: undefined'); + message_store.get(undefined); + blueslip.reset(); +}); diff --git a/static/js/message_store.js b/static/js/message_store.js index 45ab39d8da..dae7e10a3a 100644 --- a/static/js/message_store.js +++ b/static/js/message_store.js @@ -21,6 +21,19 @@ exports.user_ids = function () { }; exports.get = function get(message_id) { + if (message_id === undefined || message_id === null) { + blueslip.error('message_store.get got bad value: ' + message_id); + return; + } + + if (typeof message_id !== 'number') { + blueslip.error('message_store got non-number: ' + message_id); + + // Try to solider on, assuming the caller treats message + // ids as strings. + message_id = parseFloat(message_id); + } + return stored_messages.get(message_id); };