diff --git a/sgx-bwmsgsv2.rb b/sgx-bwmsgsv2.rb index 2b6dc35adc2d8f95a057ef89e46d333e91d82d75..584dc0b8efcd42242a766f038f5e4a2d66d12d8d 100755 --- a/sgx-bwmsgsv2.rb +++ b/sgx-bwmsgsv2.rb @@ -1011,6 +1011,7 @@ class WebhookHandler < Goliath::API return [400, {}, "Missing params\n"] unless users_num && others_num return [400, {}, "Missing params\n"] unless jparams['to'].is_a?(Array) + return [400, {}, "Missing params\n"] if jparams['to'].empty? puts "BODY - messageId: #{jparams['id']}" \ ", eventType: #{type}" \ diff --git a/test/test_webhook_handler.rb b/test/test_webhook_handler.rb index 74e95042a59f9f0418689db01867608b10ca7bb3..53337fcd0e54b9559edc502ea1712f692d641900 100644 --- a/test/test_webhook_handler.rb +++ b/test/test_webhook_handler.rb @@ -272,4 +272,27 @@ class WebhookHandlerTest < Minitest::Test ) end em :test_message_received_single_recipient_text_stanza + + def test_message_received_zero_recipients_writes_no_stanza + payload = { + "type" => "message-received", + "to" => "+15550000000", + "message" => { + "id" => "bw-in-zero-001", + "direction" => "in", + "owner" => "+15550000000", + "from" => "+15551234567", + "to" => [], + "time" => "2025-01-13T10:00:00Z", + "text" => "Hello with empty to" + } + } + + result = invoke_webhook(payload) + assert_equal [400, {}, "Missing params\n"], result + assert_empty written + entries = REDIS.stream_entries("messages").sync + assert_equal 0, entries.length + end + em :test_message_received_zero_recipients_writes_no_stanza end