File: error_tests.rb

package info (click to toggle)
ruby-excon 0.112.0-4
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 1,232 kB
  • sloc: ruby: 7,855; makefile: 5
file content (145 lines) | stat: -rw-r--r-- 4,281 bytes parent folder | download | duplicates (3)
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