message store: Report type confusion errors.

We also complain if the caller sends us
`undefined`.
This commit is contained in:
Steve Howell 2020-04-09 21:12:03 +00:00 committed by Tim Abbott
parent 5d58590f14
commit 80489843ee
2 changed files with 25 additions and 1 deletions

View File

@ -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();
});

View File

@ -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);
};