diff --git a/test/test_puma_server.rb b/test/test_puma_server.rb index c328047145..bfc82d9c29 100644 --- a/test/test_puma_server.rb +++ b/test/test_puma_server.rb @@ -363,6 +363,17 @@ def test_lowlevel_error_message assert (data.size > 0), "Expected response message to be not empty" end + def test_lowlevel_error_handler_custom_response + options = { lowlevel_error_handler: ->(_err) { [200, {}, ["error page"]] } } + # setting the headers argument to nil will trigger exception inside Puma + broken_app = ->(_env) { [200, nil, []] } + server_run(**options, &broken_app) + + data = send_http_and_read "GET / HTTP/1.0\r\n\r\n" + + assert_match %r{HTTP/1.0 200 OK\r\nContent-Length: 10\r\n\r\nerror page}, data + end + def test_force_shutdown_error_default server_run(force_shutdown_after: 2) do @server.stop @@ -1362,15 +1373,4 @@ def test_rack_url_scheme_user data = send_http_and_read "GET / HTTP/1.0\r\n\r\n" assert_equal "user", data.split("\r\n").last end - - # The server should send lowlevel_error handlers response to the client - def test_lowlevel_error_handler - options = { lowlevel_error_handler: ->(err) { [200, {}, ["error page"]] } } - app = ->(env) { [200, nil, []] } - server_run(**options, &app) - - data = send_http_and_read "GET / HTTP/1.0\r\n\r\n" - - assert_match /error page/, data - end end