airbrake-ruby 2.5.0 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ae9f7049d793e87a0318eb83c39ab56842dfffc0
4
- data.tar.gz: 85e78326a5fca5307ba496f9c3cbe0acb584fc51
3
+ metadata.gz: c824b0d3f9372ab651d5e308df76080b2000f519
4
+ data.tar.gz: 2fc17c502f0bd474db41d00697a12bcdfeb0ac6e
5
5
  SHA512:
6
- metadata.gz: 42090f81e92e38d63cf555fe0c989d34ea02c6ff9d78453756e08f3523274d644f169f05315d81eb896d3393a9b7a4bbd005d482dfe9d59ea664554f75a30c73
7
- data.tar.gz: e5680cae91bf311eda5ec420a0946675b94f9d8eef01d8dd47002902bdf11d3fa971abed4e01f9728493f643329f15933cfd6dc6398c1bd4e7a87b20b0af8559
6
+ metadata.gz: 191e18fafeddbfe6501f5acdf17cd5ec9fd759e41e78b2c3637625b87024561d2ab9599292c420607051b0043079f88490d8470f6caebe6e5e431640a5bdcf43
7
+ data.tar.gz: 1d16bdffa0fd2c37184b2e95be230b6816e3e9b5d0c2f01b09c9867d70e8d0551f73b9001de35eb0529a0104b7d59b1c86a6fa8236bc7d742bad2101e9844899
@@ -118,7 +118,7 @@ module Airbrake
118
118
  @endpoint ||=
119
119
  begin
120
120
  self.host = ('https://' << host) if host !~ %r{\Ahttps?://}
121
- api = "api/v3/projects/#{project_id}/notices?key=#{project_key}"
121
+ api = "api/v3/projects/#{project_id}/notices"
122
122
  URI.join(host, api)
123
123
  end
124
124
  end
@@ -131,6 +131,7 @@ module Airbrake
131
131
 
132
132
  def filter_context_key(notice, key)
133
133
  return unless notice[:context][key]
134
+ return if notice[:context][key] == FILTERED
134
135
  return filter_hash(notice[:context][key]) unless should_filter?(key)
135
136
 
136
137
  notice[:context][key] = FILTERED
@@ -66,6 +66,7 @@ module Airbrake
66
66
  Net::HTTP::Post.new(uri.request_uri).tap do |req|
67
67
  req.body = notice.to_json
68
68
 
69
+ req['Authorization'] = "Bearer #{@config.project_key}"
69
70
  req['Content-Type'] = CONTENT_TYPE
70
71
  req['User-Agent'] =
71
72
  "#{Airbrake::Notice::NOTIFIER[:name]}/#{Airbrake::AIRBRAKE_RUBY_VERSION}" \
@@ -4,5 +4,5 @@
4
4
  module Airbrake
5
5
  ##
6
6
  # @return [String] the library version
7
- AIRBRAKE_RUBY_VERSION = '2.5.0'.freeze
7
+ AIRBRAKE_RUBY_VERSION = '2.5.1'.freeze
8
8
  end
@@ -1,9 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  RSpec.describe Airbrake do
4
- let(:endpoint) do
5
- 'https://airbrake.io/api/v3/projects/113743/notices?key=fd04e13d806a90f96614ad8e529b2822'
6
- end
4
+ let(:endpoint) { 'https://airbrake.io/api/v3/projects/113743/notices' }
7
5
 
8
6
  let!(:notifier) do
9
7
  described_class.configure do |c|
@@ -241,7 +241,7 @@ RSpec.describe Airbrake::Config do
241
241
  it "sets the endpoint with the slug" do
242
242
  config.host = 'https://localhost/bingo/'
243
243
  expect(config.endpoint.to_s).
244
- to eq('https://localhost/bingo/api/v3/projects/1/notices?key=2')
244
+ to eq('https://localhost/bingo/api/v3/projects/1/notices')
245
245
  end
246
246
  end
247
247
 
@@ -249,7 +249,7 @@ RSpec.describe Airbrake::Config do
249
249
  it "sets the endpoint without the slug" do
250
250
  config.host = 'https://localhost/bingo'
251
251
  expect(config.endpoint.to_s).
252
- to eq('https://localhost/api/v3/projects/1/notices?key=2')
252
+ to eq('https://localhost/api/v3/projects/1/notices')
253
253
  end
254
254
  end
255
255
  end
@@ -8,10 +8,7 @@ RSpec.describe Airbrake::Notifier do
8
8
  let(:project_id) { 105138 }
9
9
  let(:project_key) { 'fd04e13d806a90f96614ad8e529b2822' }
10
10
  let(:localhost) { 'http://localhost:8080' }
11
-
12
- let(:endpoint) do
13
- "https://airbrake.io/api/v3/projects/#{project_id}/notices?key=#{project_key}"
14
- end
11
+ let(:endpoint) { "https://airbrake.io/api/v3/projects/#{project_id}/notices" }
15
12
 
16
13
  let(:airbrake_params) do
17
14
  { project_id: project_id,
@@ -10,7 +10,7 @@ RSpec.describe Airbrake::Notifier do
10
10
  let(:localhost) { 'http://localhost:8080' }
11
11
 
12
12
  let(:endpoint) do
13
- "https://airbrake.io/api/v3/projects/#{project_id}/notices?key=#{project_key}"
13
+ "https://airbrake.io/api/v3/projects/#{project_id}/notices"
14
14
  end
15
15
 
16
16
  let(:airbrake_params) do
@@ -39,7 +39,7 @@ RSpec.describe Airbrake::Notifier do
39
39
  end
40
40
  end
41
41
 
42
- path = '/api/v3/projects/105138/notices?key=fd04e13d806a90f96614ad8e529b2822'
42
+ path = '/api/v3/projects/105138/notices'
43
43
 
44
44
  context "given a full host" do
45
45
  include_examples('endpoint', localhost = 'http://localhost:8080',
@@ -150,7 +150,7 @@ RSpec.describe Airbrake::Notifier do
150
150
 
151
151
  # rubocop:disable Metrics/LineLength
152
152
  expect(proxied_request.request_line).
153
- to eq("POST http://localhost:#{proxy.config[:Port]}/api/v3/projects/105138/notices?key=fd04e13d806a90f96614ad8e529b2822 HTTP/1.1\r\n")
153
+ to eq("POST http://localhost:#{proxy.config[:Port]}/api/v3/projects/105138/notices HTTP/1.1\r\n")
154
154
  # rubocop:enable Metrics/LineLength
155
155
  end
156
156
  end
@@ -226,5 +226,25 @@ RSpec.describe Airbrake::Notifier do
226
226
  include_examples 'sent notice', environment: :development
227
227
  end
228
228
  end
229
+
230
+ describe ":blacklist_keys" do
231
+ # Fixes https://github.com/airbrake/airbrake-ruby/issues/276
232
+ context "when specified along with :whitelist_keys" do
233
+ context "and when context payload is present" do
234
+ it "sends a notice" do
235
+ params = {
236
+ blacklist_keys: %i[password password_confirmation],
237
+ whitelist_keys: [:email, /user/i, 'account_id']
238
+ }
239
+ airbrake = described_class.new(airbrake_params.merge(params))
240
+ notice = airbrake.build_notice(ex)
241
+ notice[:context][:headers] = 'banana'
242
+ airbrake.notify_sync(notice)
243
+
244
+ expect(a_request(:post, endpoint)).to have_been_made
245
+ end
246
+ end
247
+ end
248
+ end
229
249
  end
230
250
  end
@@ -14,7 +14,15 @@ RSpec.describe Airbrake::SyncSender do
14
14
  describe "#send" do
15
15
  let(:promise) { Airbrake::Promise.new }
16
16
  let(:stdout) { StringIO.new }
17
- let(:config) { Airbrake::Config.new(logger: Logger.new(stdout)) }
17
+
18
+ let(:config) do
19
+ Airbrake::Config.new(
20
+ project_id: 1,
21
+ project_key: 'banana',
22
+ logger: Logger.new(stdout)
23
+ )
24
+ end
25
+
18
26
  let(:sender) { described_class.new(config) }
19
27
  let(:notice) { Airbrake::Notice.new(config, AirbrakeTestError.new) }
20
28
 
@@ -27,6 +35,21 @@ RSpec.describe Airbrake::SyncSender do
27
35
  expect(stdout.string).to match(/ERROR -- : .+ HTTP error: foo/)
28
36
  end
29
37
 
38
+ it "passes project key as a token in the Authorization header" do
39
+ stub_request(:post, 'https://airbrake.io/api/v3/projects/1/notices').
40
+ to_return(body: '{}')
41
+ sender.send(notice, promise)
42
+
43
+ expect(
44
+ a_request(:post, 'https://airbrake.io/api/v3/projects/1/notices').with(
45
+ headers: {
46
+ 'Authorization' => 'Bearer banana',
47
+ 'Content-Type' => 'application/json'
48
+ }
49
+ )
50
+ ).to have_been_made.once
51
+ end
52
+
30
53
  context "when request body is nil" do
31
54
  it "doesn't send a notice" do
32
55
  expect_any_instance_of(Airbrake::Truncator).
@@ -50,7 +73,7 @@ RSpec.describe Airbrake::SyncSender do
50
73
  end
51
74
 
52
75
  context "when IP is rate limited" do
53
- let(:endpoint) { %r{https://airbrake.io/api/v3/projects/notices} }
76
+ let(:endpoint) { %r{https://airbrake.io/api/v3/projects/1/notices} }
54
77
 
55
78
  before do
56
79
  stub_request(:post, endpoint).to_return(
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: airbrake-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
4
+ version: 2.5.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-10-20 00:00:00.000000000 Z
11
+ date: 2017-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec