diff --git a/lib/message_event.rb b/lib/message_event.rb index 55a8229afcfda9ab805b4a80193ceb4eacf38d65..bf2e7b43d41e7d15e5322a431d797f414aecfb6c 100644 --- a/lib/message_event.rb +++ b/lib/message_event.rb @@ -76,7 +76,7 @@ module MessageEvent ) fields["body"] = @body unless @body.nil? fields["bandwidth_id"] = @bandwidth_id - fields["media_urls"] = JSON.dump(@media_urls) unless @media_urls.empty? + fields["media_urls"] = JSON.dump(@media_urls) fields end end diff --git a/sgx-bwmsgsv2.rb b/sgx-bwmsgsv2.rb index 1cdddcf9a30a8af47c0f80a5dd7bcabd143fffe4..f3069e9b529b2be8e2f4b4bc52a38fe566951041 100755 --- a/sgx-bwmsgsv2.rb +++ b/sgx-bwmsgsv2.rb @@ -1190,7 +1190,9 @@ class WebhookHandler < Goliath::API puts "RESPONSE4: #{msg.inspect}" end - msg.from = others_num + '@' + ARGV[0] + # if message-failed, we already set msg.from + # moreover, we said `msg = msg.as_error`, and StanzaError + msg.from = others_num + '@' + ARGV[0] if msg.respond_to?(:from=) SGXbwmsgsv2.write(msg) # Emit event to messages stream @@ -1202,7 +1204,7 @@ class WebhookHandler < Goliath::API MessageEvent::In.new( timestamp: jparams['time'], from: jparams['from'], - to: jparams['to'], + to: jparams['to'] << users_num, owner: jparams['owner'], bandwidth_id: jparams['id'], body: jparams['text'].to_s, @@ -1234,7 +1236,7 @@ class WebhookHandler < Goliath::API puts 'Shutting down gateway due to exception 013: ' + e.message SGXbwmsgsv2.shutdown puts 'Gateway has terminated.' - EM.stop + EM.stop unless ENV['ENV'] == 'test' end end diff --git a/test/test_component.rb b/test/test_component.rb index 5c5c0408c27e6cfb0b21fdbb402535c92761b5e0..3bfecab7cc45e68cf00a6f8b7790075e28fa50d4 100644 --- a/test/test_component.rb +++ b/test/test_component.rb @@ -9,6 +9,7 @@ end class ComponentTest < Minitest::Test def setup + ARGV[0] = 'component' SGXbwmsgsv2.instance_variable_set(:@written, []) def SGXbwmsgsv2.write_to_stream(s) @@ -582,25 +583,34 @@ class ComponentTest < Minitest::Test em :test_passthrough_message_emits_to_stream def invoke_webhook(payload) - handler = WebhookHandler.new - env = { - "REQUEST_URI" => "/", - "REQUEST_METHOD" => "POST", - "params" => {"_json" => [payload]} - } - handler.instance_variable_set(:@env, env) - def handler.params - @env["params"] - end + with_stubs([ + [ + SGXbwmsgsv2, + :write, + ->(data) { SGXbwmsgsv2.write_to_stream(data) } + ] + ]) do + handler = WebhookHandler.new + env = { + "REQUEST_URI" => "/", + "REQUEST_METHOD" => "POST", + "params" => {"_json" => [payload]} + } + handler.instance_variable_set(:@env, env) + def handler.params + @env["params"] + end - EMPromise.resolve(nil).then { - handler.response(env) - }.sync + EMPromise.resolve(nil).then { + handler.response(env) + }.sync + end end def test_inbound_sms_emits_to_stream payload = { "type" => "message-received", + "to" => "+15550000000", "message" => { "id" => "bw-in-123", "direction" => "in", @@ -631,6 +641,7 @@ class ComponentTest < Minitest::Test def test_inbound_mms_emits_to_stream_and_filters_smil payload = { "type" => "message-received", + "to" => "+15550000000", "message" => { "id" => "bw-mms-456", "direction" => "in", @@ -662,6 +673,7 @@ class ComponentTest < Minitest::Test def test_message_delivered_emits_to_stream payload = { "type" => "message-delivered", + "to" => "+15550000000", "message" => { "id" => "bw-out-789", "direction" => "out", @@ -669,7 +681,7 @@ class ComponentTest < Minitest::Test "from" => "+15550000000", "to" => ["+15551234567"], "time" => "2025-01-13T10:10:00Z", - "tag" => "stanza-id-abc%20extra-data" + "tag" => "stanza-id-abc extra-data" } } @@ -689,6 +701,7 @@ class ComponentTest < Minitest::Test def test_message_failed_emits_to_stream payload = { "type" => "message-failed", + "to" => "+15551234567", "message" => { "id" => "bw-out-999", "direction" => "out", @@ -696,7 +709,7 @@ class ComponentTest < Minitest::Test "from" => "+15550000000", "to" => ["+15551234567"], "time" => "2025-01-13T10:15:00Z", - "tag" => "failed-stanza-xyz%20extra", + "tag" => "failed-stanza-xyz extra", "errorCode" => 4720, "description" => "Carrier rejected message" } diff --git a/test/test_helper.rb b/test/test_helper.rb index a0e8e19856cb1141c554cc0a6acb4498630a7c62..e99ebf3a23e908b5cb8c37c1562fcfdf3a186412 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -32,7 +32,6 @@ rescue LoadError, NameError end $VERBOSE = nil -ARGV[0] = "component" class FakeRedis def initialize(values={})