1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
|
Shindo.tests('HTTPStatusError request/response debugging') do
# Regression against e300458f2d9330cb265baeb8973120d08c665d9
tests('Excon::Error knows about pertinent errors') do
expected = [
100,
101,
(200..206).to_a,
(300..307).to_a,
(400..417).to_a,
422,
429,
(500..504).to_a
]
expected.flatten == Excon::Error.status_errors.keys
end
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?(RUBY_VERSION >= '2.6.0' ? 'foo\r\nbar: baz' : "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 standard error and catch legacy errors').returns(true) do
begin
raise Excon::Error::NotFound.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
|