Commit ee62fe94a4763e6803ad7eee7ce5bddb5197488c
Exists in
master
and in
1 other branch
Merge pull request #830 from ronin/fix-empty-backtrace
Fix parsing V3 api notice without backtrace
Showing
3 changed files
with
42 additions
and
1 deletions
Show diff stats
lib/airbrake_api/v3/notice_parser.rb
... | ... | @@ -0,0 +1,28 @@ |
1 | +{ | |
2 | + "notifier":{"name":"airbrake-js-v8","version":"0.3.10","url":"https://github.com/airbrake/airbrake-js"}, | |
3 | + "errors":[ | |
4 | + { | |
5 | + "type":"Error", | |
6 | + "message":"Error: TestError", | |
7 | + "backtrace":null | |
8 | + } | |
9 | + ], | |
10 | + "context":{ | |
11 | + "language":"JavaScript", | |
12 | + "sourceMapEnabled":true, | |
13 | + "userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36", | |
14 | + "url":"http://localhost:3000/kontakt", | |
15 | + "userId":1,"userUsername":"john", | |
16 | + "userName":"John Doe", | |
17 | + "userUsername": "john", | |
18 | + "userEmail":"john.doe@example.org", | |
19 | + "version":"1.0", | |
20 | + "component":"ContactsController", | |
21 | + "action":"show" | |
22 | + }, | |
23 | + "params":{"returnTo":"dashboard"}, | |
24 | + "environment":{"navigator_vendor":"Google Inc."}, | |
25 | + "session":{"isAdmin":true}, | |
26 | + "key":"a3969bfbf65f073921e", | |
27 | + "project_id":"a3969bfbf65f073921e" | |
28 | +} | |
0 | 29 | \ No newline at end of file | ... | ... |
spec/lib/airbrake_api/v3/notice_parser_spec.rb
... | ... | @@ -36,6 +36,19 @@ describe AirbrakeApi::V3::NoticeParser do |
36 | 36 | expect(report).to be_valid |
37 | 37 | end |
38 | 38 | |
39 | + it 'parses JSON payload with missing backtrace' do | |
40 | + json = Rails.root.join('spec', 'fixtures', 'api_v3_request_without_backtrace.json').read | |
41 | + params = JSON.parse(json) | |
42 | + params['key'] = app.api_key | |
43 | + | |
44 | + report = AirbrakeApi::V3::NoticeParser.new(params).report | |
45 | + notice = report.generate_notice! | |
46 | + | |
47 | + expect(report.error_class).to eq('Error') | |
48 | + expect(report.message).to eq('Error: TestError') | |
49 | + expect(report.backtrace.lines.size).to eq(0) | |
50 | + end | |
51 | + | |
39 | 52 | def build_params(options = {}) |
40 | 53 | json = Rails.root.join('spec', 'fixtures', 'api_v3_request.json').read |
41 | 54 | data = JSON.parse(json) | ... | ... |