airbrake 5.7.0 → 5.7.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -169,13 +169,32 @@ RSpec.describe "Rails integration specs" do
169
169
  end
170
170
 
171
171
  describe "Resque workers" do
172
- it "reports exceptions occurring in Resque workers" do
173
- with_resque { get '/resque' }
172
+ context "when Airbrake is configured" do
173
+ it "reports exceptions occurring in Resque workers" do
174
+ with_resque { get '/resque' }
174
175
 
175
- wait_for_a_request_with_body(
176
- /"message":"resque\serror".*"params":{.*
176
+ wait_for_a_request_with_body(
177
+ /"message":"resque\serror".*"params":{.*
177
178
  "class":"BingoWorker","args":\["bango","bongo"\].*}/x
178
- )
179
+ )
180
+ end
181
+ end
182
+
183
+ context "when Airbrake is not configured" do
184
+ it "doesn't report errors" do
185
+ allow(Airbrake).to receive(:build_notice).and_return(nil)
186
+ allow(Airbrake).to receive(:notify)
187
+
188
+ with_resque { get '/resque' }
189
+
190
+ wait_for(
191
+ a_request(:post, endpoint).
192
+ with(body: /"message":"resque error"/)
193
+ ).not_to have_been_made
194
+
195
+ expect(Airbrake).to have_received(:build_notice)
196
+ expect(Airbrake).not_to have_received(:notify)
197
+ end
179
198
  end
180
199
  end
181
200
 
@@ -195,6 +214,32 @@ RSpec.describe "Rails integration specs" do
195
214
  # elsewhere.
196
215
  sleep 2
197
216
  end
217
+
218
+ context "when Airbrake is not configured" do
219
+ it "doesn't report errors" do
220
+ allow(Airbrake).to receive(:build_notice).and_return(nil)
221
+ allow(Airbrake).to receive(:notify)
222
+
223
+ # Make sure we don't call `build_notice` more than 1 time. Rack
224
+ # integration will try to handle error 500 and we want to prevent
225
+ # that: https://github.com/airbrake/airbrake/pull/583
226
+ allow_any_instance_of(Airbrake::Rack::Middleware).to(
227
+ receive(:notify_airbrake).
228
+ and_return(nil)
229
+ )
230
+
231
+ get '/delayed_job'
232
+ sleep 2
233
+
234
+ wait_for(
235
+ a_request(:post, endpoint).
236
+ with(body: /"message":"delayed_job error"/)
237
+ ).not_to have_been_made
238
+
239
+ expect(Airbrake).to have_received(:build_notice)
240
+ expect(Airbrake).not_to have_received(:notify)
241
+ end
242
+ end
198
243
  end
199
244
 
200
245
  describe "notice payload when a user is authenticated without Warden" do
@@ -5,6 +5,7 @@ require 'rspec/wait'
5
5
  require 'rack'
6
6
  require 'rack/test'
7
7
  require 'rake'
8
+ require 'pry'
8
9
 
9
10
  require 'airbrake'
10
11
  require 'airbrake/rake/tasks'
@@ -14,20 +14,35 @@ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.0')
14
14
  wait_for(a_request(:post, endpoint).with(body: body)).to have_been_made.once
15
15
  end
16
16
 
17
- before do
18
- stub_request(:post, endpoint).to_return(status: 201, body: '{}')
19
- end
20
-
21
- it "sends a notice to Airbrake" do
17
+ def call_handler
22
18
  handler = Sidekiq.error_handlers.last
23
19
  handler.call(
24
20
  AirbrakeTestError.new('sidekiq error'),
25
21
  'class' => 'HardSidekiqWorker', 'args' => %w(bango bongo)
26
22
  )
23
+ end
24
+
25
+ before do
26
+ stub_request(:post, endpoint).to_return(status: 201, body: '{}')
27
+ end
28
+
29
+ it "sends a notice to Airbrake" do
30
+ expect(call_handler).to be_a(Airbrake::Promise)
27
31
 
28
32
  wait_for_a_request_with_body(/"message":"sidekiq\serror"/)
29
33
  wait_for_a_request_with_body(/"params":{.*"args":\["bango","bongo"\]/)
30
34
  wait_for_a_request_with_body(/"component":"sidekiq","action":"HardSidekiqWorker"/)
31
35
  end
36
+
37
+ context "when Airbrake is not configured" do
38
+ it "returns nil" do
39
+ allow(Airbrake).to receive(:build_notice).and_return(nil)
40
+ allow(Airbrake).to receive(:notify)
41
+
42
+ expect(call_handler).to be_nil
43
+ expect(Airbrake).to have_received(:build_notice)
44
+ expect(Airbrake).not_to have_received(:notify)
45
+ end
46
+ end
32
47
  end
33
48
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: airbrake
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.7.0
4
+ version: 5.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Airbrake Technologies, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-26 00:00:00.000000000 Z
11
+ date: 2017-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: airbrake-ruby