From d9075a7954be05ffbe00e4cbc549745e1f8e6731 Mon Sep 17 00:00:00 2001 From: Phillip Davis Date: Tue, 31 Mar 2026 16:34:25 -0400 Subject: [PATCH] test: errors should only ever trigger one handler --- test/test_component.rb | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/test/test_component.rb b/test/test_component.rb index 4ee2c838c9d7ceda3c8a14ec2637ffef4e511ff6..7d83efe5ae6cf0624b7ab15f985adb15d5885c24 100644 --- a/test/test_component.rb +++ b/test/test_component.rb @@ -577,4 +577,41 @@ class ComponentTest < Minitest::Test SGXbwmsgsv2.instance_variable_set(:@written, []) end em :test_sentry_captures_handler_exception + + def test_error_handler + client = SGXbwmsgsv2.send(:client) + original_call_handler = client.method(:call_handler) + handlers_called = 0 + with_stubs([ + [ + client, + :call_handler, + ->(handler, guards, stanza) { + handlers_called += 1 + original_call_handler.call(handler, guards, stanza) + } + ] + ]) do + stub_request(:post, "https://messaging.bandwidth.com/api/v2/users/account/messages") + .with( + body: "{\"from\":\"+15550000000\",\"to\":\"+15551234567\",\"text\":\"Hello world\",\"applicationId\":\"test-application-id\",\"tag\":\"stanza-123 resource\"}", + headers: { + 'Accept-Encoding'=>'gzip, compressed', + 'Authorization'=>'Basic dXNlcjpwYXNzd29yZA==', + 'Connection'=>'close', + 'Content-Type'=>'application/json', + 'Host'=>'messaging.bandwidth.com', + 'User-Agent'=>'EventMachine HttpClient' + } + ) + .to_return(status: 200, body: "", headers: {}) + m = Blather::Stanza::Message.new("+15551234567@component", "Hello world") + m.from = "test@example.com/resource" + m['id'] = "stanza-123" + m.type = :error + process_stanza(m) + end + assert_equal 1, handlers_called + end + em :test_error_handler end