echo: Fix local echo sending a message to "yourself, ".

Previously, this would incorrectly include a user with name and email
"" in the recipients list shown in the local echo code path.

We fix this and add a test for the issue.
This commit is contained in:
Tim Abbott
2016-11-14 21:40:19 -08:00
parent d655cd1f7f
commit e40e756d47
3 changed files with 13 additions and 3 deletions

View File

@@ -25,6 +25,11 @@ var _ = global._;
}()); }());
(function test_extract_pm_recipients() {
assert.equal(util.extract_pm_recipients('bob@foo.com, alice@foo.com').length, 2);
assert.equal(util.extract_pm_recipients('bob@foo.com, ').length, 1);
}());
(function test_lower_bound() { (function test_lower_bound() {
var arr = [10, 20, 30, 40, 50]; var arr = [10, 20, 30, 40, 50];
assert.equal(util.lower_bound(arr, 5), 0); assert.equal(util.lower_bound(arr, 5), 0);

View File

@@ -146,8 +146,11 @@ function insert_local_message(message_request, local_id) {
if (message.type === 'stream') { if (message.type === 'stream') {
message.display_recipient = message.stream; message.display_recipient = message.stream;
} else { } else {
// Build a display recipient with the full names of each recipient // Build a display recipient with the full names of each
var emails = message_request.private_message_recipient.split(','); // recipient. Note that it's important that use
// util.extract_pm_recipients, which filters out any spurious
// ", " at the end of the recipient list
var emails = util.extract_pm_recipients(message_request.private_message_recipient);
message.display_recipient = _.map(emails, function (email) { message.display_recipient = _.map(emails, function (email) {
email = email.trim(); email = email.trim();
var person = people.get_by_email(email); var person = people.get_by_email(email);

View File

@@ -70,7 +70,9 @@ exports.is_pm_recipient = function (email, message) {
}; };
exports.extract_pm_recipients = function (recipients) { exports.extract_pm_recipients = function (recipients) {
return recipients.split(/\s*[,;]\s*/); return _.filter(recipients.split(/\s*[,;]\s*/), function (recipient) {
return recipient.trim() !== "";
});
}; };
exports.same_major_recipient = function (a, b) { exports.same_major_recipient = function (a, b) {