rollbar 2.16.2 → 2.22.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (212) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +47 -0
  3. data/.travis.yml +182 -94
  4. data/Appraisals +10 -10
  5. data/Gemfile +45 -13
  6. data/README.md +20 -3
  7. data/Rakefile +0 -0
  8. data/data/rollbar.snippet.js +1 -1
  9. data/docs/configuration.md +15 -0
  10. data/gemfiles/rails30.gemfile +21 -14
  11. data/gemfiles/rails31.gemfile +21 -12
  12. data/gemfiles/rails32.gemfile +18 -8
  13. data/gemfiles/rails40.gemfile +18 -6
  14. data/gemfiles/rails41.gemfile +17 -6
  15. data/gemfiles/rails42.gemfile +24 -14
  16. data/gemfiles/rails50.gemfile +20 -11
  17. data/gemfiles/rails51.gemfile +20 -10
  18. data/gemfiles/rails52.gemfile +65 -0
  19. data/gemfiles/rails60.gemfile +67 -0
  20. data/lib/generators/rollbar/rollbar_generator.rb +1 -1
  21. data/lib/rails/rollbar_runner.rb +17 -2
  22. data/lib/rollbar.rb +2 -3
  23. data/lib/rollbar/capistrano.rb +71 -39
  24. data/lib/rollbar/capistrano3.rb +56 -1
  25. data/lib/rollbar/capistrano_tasks.rb +130 -0
  26. data/lib/rollbar/configuration.rb +95 -7
  27. data/lib/rollbar/delay/active_job.rb +17 -0
  28. data/lib/rollbar/delay/girl_friday.rb +2 -2
  29. data/lib/rollbar/delay/resque.rb +4 -6
  30. data/lib/rollbar/delay/shoryuken.rb +15 -9
  31. data/lib/rollbar/delay/sidekiq.rb +6 -8
  32. data/lib/rollbar/delay/sucker_punch.rb +17 -19
  33. data/lib/rollbar/delay/thread.rb +3 -3
  34. data/lib/rollbar/deploy.rb +90 -0
  35. data/lib/rollbar/encoding/encoder.rb +9 -9
  36. data/lib/rollbar/exception_reporter.rb +19 -5
  37. data/lib/rollbar/item.rb +62 -20
  38. data/lib/rollbar/item/backtrace.rb +4 -4
  39. data/lib/rollbar/item/frame.rb +7 -1
  40. data/lib/rollbar/item/locals.rb +56 -0
  41. data/lib/rollbar/json.rb +5 -51
  42. data/lib/rollbar/language_support.rb +4 -20
  43. data/lib/rollbar/lazy_store.rb +5 -5
  44. data/lib/rollbar/logger.rb +1 -0
  45. data/lib/rollbar/logger_proxy.rb +15 -2
  46. data/lib/rollbar/middleware/js.rb +110 -10
  47. data/lib/rollbar/middleware/js/json_value.rb +26 -0
  48. data/lib/rollbar/middleware/rack.rb +4 -1
  49. data/lib/rollbar/middleware/rails/rollbar.rb +10 -1
  50. data/lib/rollbar/notifier.rb +118 -49
  51. data/lib/rollbar/notifier/trace_with_bindings.rb +65 -0
  52. data/lib/rollbar/plugin.rb +54 -6
  53. data/lib/rollbar/plugins.rb +7 -1
  54. data/lib/rollbar/plugins/active_job.rb +5 -1
  55. data/lib/rollbar/plugins/basic_socket.rb +21 -6
  56. data/lib/rollbar/plugins/delayed_job/job_data.rb +3 -3
  57. data/lib/rollbar/plugins/delayed_job/plugin.rb +3 -3
  58. data/lib/rollbar/plugins/goalie.rb +11 -3
  59. data/lib/rollbar/plugins/rails/controller_methods.rb +17 -4
  60. data/lib/rollbar/plugins/rails/railtie_mixin.rb +7 -3
  61. data/lib/rollbar/plugins/rake.rb +2 -2
  62. data/lib/rollbar/plugins/sidekiq/plugin.rb +10 -6
  63. data/lib/rollbar/rake_tasks.rb +3 -86
  64. data/lib/rollbar/request_data_extractor.rb +35 -21
  65. data/lib/rollbar/rollbar_test.rb +147 -0
  66. data/lib/rollbar/scrubbers.rb +7 -3
  67. data/lib/rollbar/scrubbers/params.rb +38 -20
  68. data/lib/rollbar/scrubbers/url.rb +27 -13
  69. data/lib/rollbar/truncation.rb +9 -2
  70. data/lib/rollbar/truncation/min_body_strategy.rb +2 -3
  71. data/lib/rollbar/truncation/remove_any_key_strategy.rb +123 -0
  72. data/lib/rollbar/truncation/remove_extra_strategy.rb +35 -0
  73. data/lib/rollbar/truncation/remove_request_strategy.rb +21 -0
  74. data/lib/rollbar/truncation/strings_strategy.rb +3 -4
  75. data/lib/rollbar/util.rb +75 -45
  76. data/lib/rollbar/util/hash.rb +30 -6
  77. data/lib/rollbar/util/ip_anonymizer.rb +8 -7
  78. data/lib/rollbar/util/ip_obfuscator.rb +1 -1
  79. data/lib/rollbar/version.rb +1 -1
  80. data/lib/tasks/benchmark.rake +103 -0
  81. data/rollbar.gemspec +14 -8
  82. metadata +25 -277
  83. data/gemfiles/ruby_1_8_and_1_9_2.gemfile +0 -49
  84. data/lib/rollbar/json/default.rb +0 -11
  85. data/lib/rollbar/json/oj.rb +0 -16
  86. data/lib/rollbar/tasks/rollbar.cap +0 -47
  87. data/spec/cacert.pem +0 -3988
  88. data/spec/controllers/home_controller_spec.rb +0 -480
  89. data/spec/delay/sidekiq_spec.rb +0 -61
  90. data/spec/delay/sucker_punch_spec.rb +0 -25
  91. data/spec/delayed/backend/test.rb +0 -140
  92. data/spec/delayed/serialization/test.rb +0 -0
  93. data/spec/dummyapp/.gitignore +0 -73
  94. data/spec/dummyapp/Rakefile +0 -7
  95. data/spec/dummyapp/app/assets/javascripts/application.js +0 -3
  96. data/spec/dummyapp/app/assets/stylesheets/application.css.scss +0 -37
  97. data/spec/dummyapp/app/controllers/application_controller.rb +0 -3
  98. data/spec/dummyapp/app/controllers/home_controller.rb +0 -60
  99. data/spec/dummyapp/app/controllers/users_controller.rb +0 -17
  100. data/spec/dummyapp/app/helpers/.gitkeep +0 -0
  101. data/spec/dummyapp/app/mailers/.gitkeep +0 -0
  102. data/spec/dummyapp/app/models/.gitkeep +0 -0
  103. data/spec/dummyapp/app/models/book.rb +0 -5
  104. data/spec/dummyapp/app/models/post.rb +0 -9
  105. data/spec/dummyapp/app/models/user.rb +0 -9
  106. data/spec/dummyapp/app/views/devise/registrations/edit.html.erb +0 -27
  107. data/spec/dummyapp/app/views/devise/registrations/new.html.erb +0 -20
  108. data/spec/dummyapp/app/views/devise/shared/_links.html.erb +0 -25
  109. data/spec/dummyapp/app/views/home/cause_exception.html.erb +0 -1
  110. data/spec/dummyapp/app/views/home/index.html.erb +0 -4
  111. data/spec/dummyapp/app/views/home/report_exception.html.erb +0 -1
  112. data/spec/dummyapp/app/views/js/test.html.erb +0 -1
  113. data/spec/dummyapp/app/views/layouts/_messages.html.erb +0 -5
  114. data/spec/dummyapp/app/views/layouts/_navigation.html.erb +0 -21
  115. data/spec/dummyapp/app/views/layouts/application.html.erb +0 -25
  116. data/spec/dummyapp/app/views/layouts/simple.html.erb +0 -18
  117. data/spec/dummyapp/app/views/users/index.html.erb +0 -8
  118. data/spec/dummyapp/app/views/users/show.html.erb +0 -3
  119. data/spec/dummyapp/config.ru +0 -4
  120. data/spec/dummyapp/config/application.rb +0 -59
  121. data/spec/dummyapp/config/boot.rb +0 -10
  122. data/spec/dummyapp/config/database.yml +0 -25
  123. data/spec/dummyapp/config/environment.rb +0 -5
  124. data/spec/dummyapp/config/environments/development.rb +0 -37
  125. data/spec/dummyapp/config/environments/production.rb +0 -67
  126. data/spec/dummyapp/config/environments/test.rb +0 -37
  127. data/spec/dummyapp/config/initializers/backtrace_silencers.rb +0 -7
  128. data/spec/dummyapp/config/initializers/inflections.rb +0 -15
  129. data/spec/dummyapp/config/initializers/mime_types.rb +0 -5
  130. data/spec/dummyapp/config/initializers/rollbar.rb +0 -26
  131. data/spec/dummyapp/config/initializers/secret_token.rb +0 -7
  132. data/spec/dummyapp/config/initializers/session_store.rb +0 -8
  133. data/spec/dummyapp/config/initializers/wrap_parameters.rb +0 -16
  134. data/spec/dummyapp/config/locales/devise.en.yml +0 -58
  135. data/spec/dummyapp/config/locales/en.yml +0 -5
  136. data/spec/dummyapp/config/routes.rb +0 -17
  137. data/spec/dummyapp/config/secrets.yml +0 -2
  138. data/spec/dummyapp/db/migrate/20121121184652_devise_create_users.rb +0 -46
  139. data/spec/dummyapp/db/migrate/20121121184654_add_name_to_users.rb +0 -5
  140. data/spec/dummyapp/db/migrate/20161219184410_create_books.rb +0 -10
  141. data/spec/dummyapp/db/migrate/20161219185529_add_username_to_users.rb +0 -5
  142. data/spec/dummyapp/db/schema.rb +0 -41
  143. data/spec/dummyapp/db/seeds.rb +0 -12
  144. data/spec/dummyapp/lib/assets/.gitkeep +0 -0
  145. data/spec/dummyapp/public/404.html +0 -26
  146. data/spec/dummyapp/public/422.html +0 -26
  147. data/spec/dummyapp/public/500.html +0 -25
  148. data/spec/dummyapp/public/favicon.ico +0 -0
  149. data/spec/dummyapp/script/rails +0 -6
  150. data/spec/fixtures/file1 +0 -1
  151. data/spec/fixtures/file2 +0 -1
  152. data/spec/fixtures/payloads/message.json +0 -25
  153. data/spec/fixtures/payloads/sample.trace.json +0 -275
  154. data/spec/fixtures/payloads/sample.trace_chain.json +0 -530
  155. data/spec/fixtures/plugins/dummy1.rb +0 -5
  156. data/spec/fixtures/plugins/dummy2.rb +0 -5
  157. data/spec/generators/rollbar/rollbar_generator_rails30_spec.rb +0 -31
  158. data/spec/generators/rollbar/rollbar_generator_spec.rb +0 -51
  159. data/spec/requests/home_spec.rb +0 -49
  160. data/spec/rollbar/configuration_spec.rb +0 -46
  161. data/spec/rollbar/delay/delayed_job_spec.rb +0 -22
  162. data/spec/rollbar/delay/girl_friday_spec.rb +0 -41
  163. data/spec/rollbar/delay/resque_spec.rb +0 -37
  164. data/spec/rollbar/delay/thread_spec.rb +0 -27
  165. data/spec/rollbar/encoding/encoder_spec.rb +0 -63
  166. data/spec/rollbar/item/backtrace_spec.rb +0 -26
  167. data/spec/rollbar/item/frame_spec.rb +0 -267
  168. data/spec/rollbar/item_spec.rb +0 -736
  169. data/spec/rollbar/json/oj_spec.rb +0 -18
  170. data/spec/rollbar/json_spec.rb +0 -110
  171. data/spec/rollbar/lazy_store_spec.rb +0 -99
  172. data/spec/rollbar/logger_proxy_spec.rb +0 -50
  173. data/spec/rollbar/logger_spec.rb +0 -124
  174. data/spec/rollbar/middleware/js_spec.rb +0 -421
  175. data/spec/rollbar/middleware/sinatra_spec.rb +0 -197
  176. data/spec/rollbar/notifier_spec.rb +0 -56
  177. data/spec/rollbar/plugin_spec.rb +0 -209
  178. data/spec/rollbar/plugins/active_job_spec.rb +0 -38
  179. data/spec/rollbar/plugins/delayed_job/job_data_spec.rb +0 -48
  180. data/spec/rollbar/plugins/delayed_job_spec.rb +0 -129
  181. data/spec/rollbar/plugins/rack_spec.rb +0 -152
  182. data/spec/rollbar/plugins/rails_js_spec.rb +0 -19
  183. data/spec/rollbar/plugins/rake_spec.rb +0 -34
  184. data/spec/rollbar/plugins/resque/failure_spec.rb +0 -36
  185. data/spec/rollbar/plugins/sidekiq_spec.rb +0 -171
  186. data/spec/rollbar/plugins/validations_spec.rb +0 -56
  187. data/spec/rollbar/plugins_spec.rb +0 -68
  188. data/spec/rollbar/request_data_extractor_spec.rb +0 -270
  189. data/spec/rollbar/scrubbers/params_spec.rb +0 -314
  190. data/spec/rollbar/scrubbers/url_spec.rb +0 -136
  191. data/spec/rollbar/scrubbers_spec.rb +0 -31
  192. data/spec/rollbar/sidekig/clear_scope_spec.rb +0 -19
  193. data/spec/rollbar/truncation/frames_strategy_spec.rb +0 -70
  194. data/spec/rollbar/truncation/min_body_strategy_spec.rb +0 -57
  195. data/spec/rollbar/truncation/strings_strategy_spec.rb +0 -89
  196. data/spec/rollbar/truncation_spec.rb +0 -27
  197. data/spec/rollbar/util/hash_spec.rb +0 -22
  198. data/spec/rollbar/util/ip_anonymizer_spec.rb +0 -30
  199. data/spec/rollbar/util_spec.rb +0 -80
  200. data/spec/rollbar_bc_spec.rb +0 -380
  201. data/spec/rollbar_spec.rb +0 -1667
  202. data/spec/spec_helper.rb +0 -84
  203. data/spec/support/cause_exception.rb +0 -1
  204. data/spec/support/encoding_helpers.rb +0 -8
  205. data/spec/support/encodings/iso_8859_9 +0 -1
  206. data/spec/support/fixture_helpers.rb +0 -10
  207. data/spec/support/get_ip_raising.rb +0 -7
  208. data/spec/support/helpers.rb +0 -5
  209. data/spec/support/matchers.rb +0 -23
  210. data/spec/support/notifier_helpers.rb +0 -57
  211. data/spec/support/rollbar_api.rb +0 -57
  212. data/spec/support/shared_contexts.rb +0 -12
@@ -1,38 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'active_support/rescuable'
4
-
5
- describe Rollbar::ActiveJob do
6
- class TestJob
7
- # To mix in rescue_from
8
- include ActiveSupport::Rescuable
9
- include Rollbar::ActiveJob
10
-
11
- attr_reader :job_id
12
-
13
- def perform(exception, job_id)
14
- @job_id = job_id
15
- # ActiveJob calls rescue_with_handler when a job raises an exception
16
- rescue_with_handler(exception) || raise(exception)
17
- end
18
- end
19
-
20
- before { reconfigure_notifier }
21
-
22
- let(:exception) { StandardError.new('oh no') }
23
- let(:job_id) { "123" }
24
-
25
- it "reports the error to Rollbar" do
26
- expected_params = {
27
- :job => "TestJob",
28
- :job_id => job_id,
29
- :use_exception_level_filters => true
30
- }
31
- expect(Rollbar).to receive(:error).with(exception, expected_params)
32
- TestJob.new.perform(exception, job_id) rescue nil
33
- end
34
-
35
- it "reraises the error so the job backend can handle the failure and retry" do
36
- expect { TestJob.new.perform(exception, job_id) }.to raise_error exception
37
- end
38
- end
@@ -1,48 +0,0 @@
1
- require 'spec_helper'
2
- require 'rollbar/plugins/delayed_job/job_data'
3
- require 'delayed/backend/test'
4
-
5
- # In delayed_job/lib/delayed/syck_ext.rb YAML.load_dj
6
- # is broken cause it's defined as an instance method
7
- # instead of module/class method. This is breaking
8
- # the tests for ruby 1.8.7
9
- if YAML.parser.class.name =~ /syck|yecht/i
10
- module YAML
11
- def self.load_dj(yaml)
12
- # See https://github.com/dtao/safe_yaml
13
- # When the method is there, we need to load our YAML like this...
14
- respond_to?(:unsafe_load) ? load(yaml, :safe => false) : load(yaml)
15
- end
16
- end
17
- end
18
-
19
- describe Rollbar::Delayed::JobData do
20
- describe '#to_hash' do
21
- let(:handler) { { 'foo' => 'bar' } }
22
-
23
- let(:attrs) do
24
- {
25
- 'id' => 1,
26
- 'priority' => 0,
27
- 'attempts' => 1,
28
- 'handler' => handler.to_yaml
29
- }
30
- end
31
-
32
- let(:job) do
33
- ::Delayed::Backend::Test::Job.new(attrs)
34
- end
35
-
36
- subject { described_class.new(job) }
37
-
38
- it 'returns the correct job data' do
39
- expected_result = attrs.dup
40
- expected_result.delete('id')
41
- expected_result['handler'] = handler
42
-
43
- result = subject.to_hash
44
-
45
- expect(result).to be_eql(expected_result)
46
- end
47
- end
48
- end
@@ -1,129 +0,0 @@
1
- require 'spec_helper'
2
- require 'rollbar'
3
- require 'delayed_job'
4
- require 'delayed/backend/test'
5
-
6
- Rollbar.plugins.load!
7
-
8
- describe Rollbar::Delayed, :reconfigure_notifier => true do
9
- class FailingJob
10
- class TestException < Exception; end
11
-
12
- def do_job_please!(a, b)
13
- this = will_crash_again!
14
- end
15
- end
16
-
17
- before do
18
- Delayed::Backend::Test.prepare_worker
19
-
20
- Delayed::Worker.backend = :test
21
- Delayed::Backend::Test::Job.delete_all
22
- end
23
-
24
- let(:expected_args) do
25
- [kind_of(NoMethodError), { :use_exception_level_filters => true }]
26
- end
27
-
28
- context 'with delayed method without arguments failing' do
29
- it 'sends the exception' do
30
- expect(Rollbar).to receive(:scope).with(kind_of(Hash)).and_call_original
31
- expect_any_instance_of(Rollbar::Notifier).to receive(:error).with(*expected_args)
32
-
33
- FailingJob.new.delay.do_job_please!(:foo, :bar)
34
- end
35
- end
36
-
37
- context 'with failed deserialization' do
38
- let(:expected_args) do
39
- [/Delayed::DeserializationError/, {:use_exception_level_filters=>true}]
40
- end
41
-
42
- it 'sends the exception' do
43
- expect(Rollbar).to receive(:scope).with(kind_of(Hash)).and_call_original
44
- allow_any_instance_of(Delayed::Backend::Base).to receive(:payload_object).and_raise(Delayed::DeserializationError)
45
- expect_any_instance_of(Rollbar::Notifier).to receive(:error).with(*expected_args)
46
-
47
- FailingJob.new.delay.do_job_please!(:foo, :bar)
48
- end
49
-
50
- context 'with dj_threshold > 0' do
51
- before do
52
- Rollbar.configure do |config|
53
- config.dj_threshold = 1
54
- end
55
- end
56
-
57
- it 'sends the exception' do
58
- expect(Rollbar).to receive(:scope).with(kind_of(Hash)).and_call_original
59
- allow_any_instance_of(Delayed::Backend::Base).to receive(:payload_object).and_raise(Delayed::DeserializationError)
60
- expect_any_instance_of(Rollbar::Notifier).to receive(:error).with(*expected_args)
61
-
62
- FailingJob.new.delay.do_job_please!(:foo, :bar)
63
- end
64
- end
65
- end
66
-
67
- describe '.build_job_data' do
68
- let(:job) { double(:payload_object => {}) }
69
-
70
- context 'if report_dj_data is disabled' do
71
- before do
72
- allow(Rollbar.configuration).to receive(:report_dj_data).and_return(false)
73
- end
74
-
75
- it 'returns nil' do
76
- expect(described_class.build_job_data(job)).to be_nil
77
- end
78
- end
79
-
80
- context 'with report_dj_data enabled' do
81
- before do
82
- allow(Rollbar.configuration).to receive(:report_dj_data).and_return(true)
83
- end
84
-
85
- it 'returns a hash' do
86
- result = described_class.build_job_data(job)
87
- expect(result).to be_kind_of(Hash)
88
- end
89
- end
90
- end
91
-
92
- describe '.skip_report' do
93
- let(:configuration) { Rollbar.configuration }
94
- let(:threshold) { 5 }
95
-
96
- before do
97
- allow(configuration).to receive(:dj_threshold).and_return(threshold)
98
- end
99
-
100
- context 'with attempts > configuration.dj_threshold' do
101
- let(:object) do
102
- double(:to_s => 'foo')
103
- end
104
- let(:payload_object) do
105
- double(:method_name => 'foo',
106
- :args => [1, 2],
107
- :object => object)
108
- end
109
- let(:job) do
110
- double(
111
- :attempts => 6,
112
- :job => { :payload_object => payload_object }
113
- )
114
- end
115
-
116
- it 'returns true' do
117
- expect(described_class.skip_report?(job)).to be(false)
118
- end
119
- end
120
-
121
- context 'with attempts < configuration.dj_threshold' do
122
- let(:job) { double(:attempts => 3) }
123
-
124
- it 'returns false' do
125
- expect(described_class.skip_report?(job)).to be(true)
126
- end
127
- end
128
- end
129
- end
@@ -1,152 +0,0 @@
1
- require 'spec_helper'
2
- require 'rack'
3
- require 'rack/builder'
4
- require 'rack/mock'
5
- require 'rollbar'
6
-
7
- Rollbar.plugins.load!
8
-
9
- describe Rollbar::Middleware::Rack::Builder, :reconfigure_notifier => true do
10
- class RackMockError < Exception; end
11
-
12
- let(:action) do
13
- proc { fail(RackMockError, 'the-error') }
14
- end
15
-
16
- let(:app) do
17
- action_proc = action
18
-
19
- ::Rack::Builder.new { run action_proc }
20
- end
21
-
22
- let(:request) do
23
- ::Rack::MockRequest.new(app)
24
- end
25
-
26
- let(:exception) { kind_of(RackMockError) }
27
- let(:uncaught_level) { Rollbar.configuration.uncaught_exception_level }
28
-
29
- it 'reports the error to Rollbar' do
30
- expect(Rollbar).to receive(:log).with(uncaught_level, exception, :use_exception_level_filters => true)
31
- expect { request.get('/will_crash') }.to raise_error(exception)
32
- end
33
-
34
- context 'with GET parameters' do
35
- let(:params) do
36
- { 'key' => 'value' }
37
- end
38
-
39
- it 'sends them to Rollbar' do
40
- expect do
41
- request.get('/will_crash', :params => params)
42
- end.to raise_error(exception)
43
-
44
- expect(Rollbar.last_report[:request][:GET]).to be_eql(params)
45
- end
46
- end
47
-
48
- context 'with JSON body parameters' do
49
- let(:params) do
50
- { 'key' => 'value' }
51
- end
52
-
53
- it 'sends them to Rollbar' do
54
- expect do
55
- request.post('/will_crash', :input => params.to_json, 'CONTENT_TYPE' => 'application/json')
56
- end.to raise_error(exception)
57
-
58
- expect(Rollbar.last_report[:request][:body]).to be_eql(params.to_json)
59
- end
60
- end
61
-
62
- context 'with array POST parameters' do
63
- let(:params) do
64
- [{ :key => 'value'}, 'string', 10]
65
- end
66
-
67
- it 'sends a body.multi key in params' do
68
- expect do
69
- request.post('/will_crash', :input => params.to_json, 'CONTENT_TYPE' => 'application/json')
70
- end.to raise_error(exception)
71
-
72
- reported_body = Rollbar.last_report[:request][:body]
73
- expect(reported_body).to be_eql({ 'body.multi' => [{'key' => 'value'}, 'string', 10] }.to_json)
74
- end
75
- end
76
-
77
- context 'with not array or hash POST parameters' do
78
- let(:params) { 1000 }
79
-
80
- it 'sends a body.multi key in params' do
81
- expect do
82
- request.post('/will_crash', :input => params.to_json, 'CONTENT_TYPE' => 'application/json')
83
- end.to raise_error(exception)
84
-
85
- reported_body = Rollbar.last_report[:request][:body]
86
- expect(reported_body).to be_eql({ 'body.value' => params }.to_json)
87
- end
88
- end
89
-
90
- context 'with multiple HTTP_X_FORWARDED_PROTO values' do
91
- let(:headers) do
92
- { 'HTTP_X_FORWARDED_PROTO' => 'https,http' }
93
- end
94
-
95
- it 'uses the first scheme to generate the url' do
96
- expect do
97
- request.post('/will_crash', headers)
98
- end.to raise_error(exception)
99
-
100
- last_report = Rollbar.last_report
101
- expect(last_report[:request][:url]).to match(/https:/)
102
- end
103
- end
104
-
105
- context 'without HTTP_X_FORWARDED_PROTO' do
106
- it 'uses the the url_scheme set by Rack' do
107
- expect do
108
- request.post('/will_crash')
109
- end.to raise_error(exception)
110
-
111
- last_report = Rollbar.last_report
112
- expect(last_report[:request][:url]).to match(/http:/)
113
- end
114
- end
115
-
116
- context 'with single HTTP_X_FORWARDED_PROTO value' do
117
- let(:headers) do
118
- { 'HTTP_X_FORWARDED_PROTO' => 'https' }
119
- end
120
-
121
- it 'uses the scheme received in X-Forwarded-Proto header' do
122
- expect do
123
- request.post('/will_crash', headers)
124
- end.to raise_error(exception)
125
-
126
- last_report = Rollbar.last_report
127
- expect(last_report[:request][:url]).to match(/https:/)
128
- end
129
- end
130
-
131
- context 'with person data' do
132
- let(:person_data) do
133
- { 'email' => 'person@example.com' }
134
- end
135
-
136
- it 'includes person data from env' do
137
- expect do
138
- request.get('/will_crash', 'rollbar.person_data' => person_data)
139
- end.to raise_error(exception)
140
-
141
- expect(Rollbar.last_report[:person]).to be_eql(person_data)
142
- end
143
-
144
- it 'includes empty person data when not in env' do
145
- expect do
146
- request.get('/will_crash')
147
- end.to raise_error(exception)
148
-
149
- expect(Rollbar.last_report[:person]).to be_eql({})
150
- end
151
- end
152
- end
@@ -1,19 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ApplicationController, :type => 'request' do
4
- before do
5
- Rollbar.configure do |config|
6
- config.js_options = { :foo => :bar }
7
- config.js_enabled = true
8
- end
9
- end
10
-
11
- it 'renders the snippet and config in the response', :type => 'request' do
12
- get '/test_rollbar_js'
13
-
14
- snippet_from_submodule = File.read(File.expand_path('../../../../rollbar.js/dist/rollbar.snippet.js', __FILE__))
15
-
16
- expect(response.body).to include("var _rollbarConfig = #{Rollbar::configuration.js_options.to_json};")
17
- expect(response.body).to include(snippet_from_submodule)
18
- end
19
- end
@@ -1,34 +0,0 @@
1
- require 'spec_helper'
2
-
3
- Rollbar.plugins.load!
4
-
5
- describe Rollbar::Rake do
6
- let(:application) { Rake.application }
7
- let(:exception) { Exception.new }
8
-
9
- context 'with supported rake version' do
10
- before do
11
- allow(Rollbar::Rake).to receive(:rake_version).and_return('0.9.0')
12
- end
13
-
14
- it 'reports error to Rollbar' do
15
- expect(Rollbar).to receive(:error).with(exception, :use_exception_level_filters => true)
16
- expect(application).to receive(:orig_display_error_message).with(exception)
17
-
18
- Rollbar::Rake.patch! # Really here Rake is already patched
19
- application.display_error_message(exception)
20
- end
21
- end
22
-
23
- context 'with unsupported rake version' do
24
- before do
25
- allow(Rollbar::Rake).to receive(:rake_version).and_return('0.8.7')
26
- end
27
-
28
- it 'reports error to Rollbar' do
29
- expect(Rollbar::Rake).to receive(:skip_patch)
30
-
31
- Rollbar::Rake.patch!
32
- end
33
- end
34
- end
@@ -1,36 +0,0 @@
1
- require 'spec_helper'
2
- require 'rollbar/plugins/resque/failure'
3
-
4
- describe Resque::Failure::Rollbar do
5
- let(:exception) { StandardError.new('BOOM') }
6
- let(:worker) { Resque::Worker.new(:test) }
7
- let(:queue) { 'test' }
8
- let(:payload) { { 'class' => Object, 'args' => 89 } }
9
- let(:backend) do
10
- Resque::Failure::Rollbar.new(exception, worker, queue, payload)
11
- end
12
-
13
- context 'with Rollbar version <= 1.3' do
14
- before do
15
- allow(backend).to receive(:rollbar_version).and_return('1.3.0')
16
- end
17
-
18
- it 'should be notified of an error' do
19
- expect_any_instance_of(Rollbar::Notifier).to receive(:log).with('error', exception, payload)
20
- backend.save
21
- end
22
- end
23
-
24
- context 'with Rollbar version > 1.3' do
25
- let(:payload_with_options) { payload.merge(:use_exception_level_filters => true) }
26
-
27
- before do
28
- allow(backend).to receive(:rollbar_version).and_return('1.4.0')
29
- end
30
-
31
- it 'sends the :use_exception_level_filters option' do
32
- expect_any_instance_of(Rollbar::Notifier).to receive(:error).with(exception, payload_with_options)
33
- backend.save
34
- end
35
- end
36
- end