From 7cfd167c4a9d247b86d8aa79733fa46d54b129e4 Mon Sep 17 00:00:00 2001 From: Phillip Davis Date: Tue, 3 Mar 2026 15:34:18 -0500 Subject: [PATCH] test(webhook): received emits stream event --- sgx-bwmsgsv2.rb | 11 +++++++ test/property/test_webhook_handler.rb | 47 +++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/sgx-bwmsgsv2.rb b/sgx-bwmsgsv2.rb index f35616b8353e689b34c4403694f64cbfd031ec5c..c7f3b6baea497227936a4521da3526b04dd73c55 100755 --- a/sgx-bwmsgsv2.rb +++ b/sgx-bwmsgsv2.rb @@ -1105,6 +1105,17 @@ class WebhookHandler < Goliath::API next unless text&.empty? next unless jparams['to'].length > 1 + MessageEvent::In.new( + timestamp: jparams['time'], + from: jparams['from'], + to: jparams['to'], + owner: jparams['owner'], + bandwidth_id: jparams['id'], + body: jparams['text'].to_s, + media_urls: media_urls + ).emit(REDIS) + + next [200, {}, "OK"] } diff --git a/test/property/test_webhook_handler.rb b/test/property/test_webhook_handler.rb index 8b1cd7ced84d83660047bbc181e1971ef4433a3b..e6d5c7816ef5493ab7299768c2463983d4418e9b 100644 --- a/test/property/test_webhook_handler.rb +++ b/test/property/test_webhook_handler.rb @@ -242,4 +242,51 @@ class WebhookPropertyTest < Minitest::Test } end em :test_failed_emits_correct_stream_event + + def test_inbound_received_emits_correct_in_stream_event + property_of { + Webhook + .new(REDIS) + .message { |registered, jid, dir, top_level_to| + Message + .new(REDIS) + .to { + array(integer(2)) { nanpa_phone } + + [top_level_to] + + array(integer(2)) { nanpa_phone } + } + .generate(registered, jid, dir) + } + .type { "message-received" } + .generate + }.check { |metadata, example| + result = invoke_webhook(example) + assert_equal 200, result[0] + + entries = REDIS.stream_entries("messages").sync + assert_equal 1, entries.length + + fields = entries.first[:fields] + expected_keys = %w[ + event source timestamp owner from to + bandwidth_id body media_urls + ].sort + assert_equal expected_keys, fields.keys.sort + + assert_equal "in", fields["event"] + assert_equal "bwmsgsv2", fields["source"] + assert_equal example["message"]["time"], fields["timestamp"] + assert_equal example["message"]["owner"], fields["owner"] + assert_equal example["message"]["from"], fields["from"] + assert_equal JSON.dump(example["message"]["to"]), fields["to"] + assert_equal example["message"]["id"], fields["bandwidth_id"] + assert_equal example["message"]["text"].to_s, fields["body"] + + expected_media = Array(example["message"]["media"]).reject { |u| + u.end_with?(".smil", ".txt", ".xml") + } + assert_equal JSON.dump(expected_media), fields["media_urls"] + } + end + em :test_inbound_received_emits_correct_in_stream_event end