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