Shindo.tests('HTTPStatusError request/response debugging') do tests('new returns an Error').returns(true) do Excon::Error.new('bar').class == Excon::Error end tests('new raises errors for bad URIs').returns(true) do begin Excon.new('foo') false rescue => err err.to_s.include? 'foo' end end tests('new raises errors for bad paths').returns(true) do begin Excon.new('http://localhost', path: "foo\r\nbar: baz") false rescue => err err.to_s.include? "foo\r\nbar: baz" end end tests('can raise standard error and catch standard error').returns(true) do begin raise Excon::Error::Client.new('foo') rescue Excon::Error => e true end end tests('can raise legacy errors and catch legacy errors').returns(true) do begin raise Excon::Errors::Error.new('bar') rescue Excon::Errors::Error => e true end end tests('can raise with status_error() and catch with standard error').returns(true) do begin raise Excon::Error.status_error({expects: 200}, {status: 400}) rescue Excon::Error true end end tests('can raise with status_error() and catch with legacy error').returns(true) do begin raise Excon::Error.status_error({expects: 200}, {status: 400}) rescue Excon::Errors::BadRequest true end end tests('can raise with legacy status_error() and catch with legacy').returns(true) do begin raise Excon::Errors.status_error({expects: 200}, {status: 400}) rescue Excon::Errors::BadRequest true end end tests('can raise with legacy status_error() and catch with standard').returns(true) do begin raise Excon::Errors.status_error({expects: 200}, {status: 400}) rescue Excon::Error true end end with_server('error') do tests('message does not include response or response info').returns(true) do begin Excon.get('http://127.0.0.1:9292/error/not_found', :expects => 200) rescue Excon::Errors::HTTPStatusError => err err.message.include?('Expected(200) <=> Actual(404 Not Found)') && !err.message.include?('excon.error.request') && !err.message.include?('excon.error.response') end end tests('message includes only request info').returns(true) do begin Excon.get('http://127.0.0.1:9292/error/not_found', :expects => 200, :debug_request => true) rescue Excon::Errors::HTTPStatusError => err err.message.include?('Expected(200) <=> Actual(404 Not Found)') && err.message.include?('excon.error.request') && !err.message.include?('excon.error.response') end end tests('message includes only response info').returns(true) do begin Excon.get('http://127.0.0.1:9292/error/not_found', :expects => 200, :debug_response => true) rescue Excon::Errors::HTTPStatusError => err err.message.include?('Expected(200) <=> Actual(404 Not Found)') && !err.message.include?('excon.error.request') && err.message.include?('excon.error.response') end end tests('message include request and response info').returns(true) do begin Excon.get('http://127.0.0.1:9292/error/not_found', :expects => 200, :debug_request => true, :debug_response => true) rescue Excon::Errors::HTTPStatusError => err err.message.include?('Expected(200) <=> Actual(404 Not Found)') && err.message.include?('excon.error.request') && err.message.include?('excon.error.response') end end end end