raygun4ruby 3.2.6 → 4.0.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.
Files changed (232) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/tests.yml +48 -0
  3. data/.gitignore +22 -21
  4. data/.rspec +1 -1
  5. data/Appraisals +19 -0
  6. data/CHANGELOG.md +173 -133
  7. data/Gemfile +4 -4
  8. data/LICENSE.txt +22 -22
  9. data/README.md +430 -420
  10. data/Rakefile +32 -27
  11. data/examples/sinatras_raygun.rb +17 -17
  12. data/gemfiles/rails_6.gemfile +9 -0
  13. data/gemfiles/rails_7.gemfile +10 -0
  14. data/gemfiles/rails_7_sidekiq_6.gemfile +10 -0
  15. data/lib/generators/raygun/install_generator.rb +26 -26
  16. data/lib/raygun/affected_user.rb +59 -59
  17. data/lib/raygun/breadcrumbs/breadcrumb.rb +34 -34
  18. data/lib/raygun/breadcrumbs/store.rb +86 -86
  19. data/lib/raygun/breadcrumbs.rb +34 -34
  20. data/lib/raygun/client.rb +313 -308
  21. data/lib/raygun/configuration.rb +202 -194
  22. data/lib/raygun/demo_exception.rb +22 -22
  23. data/lib/raygun/error.rb +10 -10
  24. data/lib/raygun/error_subscriber.rb +25 -0
  25. data/lib/raygun/javascript_tracker.rb +42 -42
  26. data/lib/raygun/middleware/breadcrumbs_store_initializer.rb +19 -19
  27. data/lib/raygun/middleware/javascript_exception_tracking.rb +40 -32
  28. data/lib/raygun/middleware/rack_exception_interceptor.rb +18 -18
  29. data/lib/raygun/middleware/rails_insert_affected_user.rb +26 -26
  30. data/lib/raygun/railtie.rb +47 -39
  31. data/lib/raygun/services/apply_whitelist_filter_to_payload.rb +27 -27
  32. data/lib/raygun/sidekiq.rb +61 -71
  33. data/lib/raygun/version.rb +3 -3
  34. data/lib/raygun.rb +197 -179
  35. data/lib/raygun4ruby.rb +1 -1
  36. data/lib/resque/failure/raygun.rb +25 -25
  37. data/lib/tasks/raygun.tasks +7 -7
  38. data/raygun4ruby.gemspec +43 -45
  39. data/spec/features/javascript_spec.rb +48 -48
  40. data/spec/rails_applications/6.1.4/Gemfile +56 -0
  41. data/spec/{dummy/README.rdoc → rails_applications/6.1.4/README.md} +24 -28
  42. data/spec/{dummy → rails_applications/6.1.4}/Rakefile +6 -6
  43. data/spec/rails_applications/6.1.4/app/assets/config/manifest.js +2 -0
  44. data/spec/{dummy → rails_applications/6.1.4}/app/assets/images/.keep +0 -0
  45. data/spec/{dummy → rails_applications/6.1.4}/app/assets/stylesheets/application.css +15 -15
  46. data/spec/rails_applications/6.1.4/app/channels/application_cable/channel.rb +4 -0
  47. data/spec/rails_applications/6.1.4/app/channels/application_cable/connection.rb +4 -0
  48. data/spec/rails_applications/6.1.4/app/controllers/application_controller.rb +2 -0
  49. data/spec/{dummy → rails_applications/6.1.4}/app/controllers/concerns/.keep +0 -0
  50. data/spec/{dummy → rails_applications/6.1.4}/app/controllers/home_controller.rb +4 -4
  51. data/spec/{dummy → rails_applications/6.1.4}/app/helpers/application_helper.rb +2 -2
  52. data/spec/rails_applications/6.1.4/app/javascript/channels/consumer.js +6 -0
  53. data/spec/rails_applications/6.1.4/app/javascript/channels/index.js +5 -0
  54. data/spec/rails_applications/6.1.4/app/javascript/packs/application.js +13 -0
  55. data/spec/rails_applications/6.1.4/app/jobs/application_job.rb +7 -0
  56. data/spec/rails_applications/6.1.4/app/mailers/application_mailer.rb +4 -0
  57. data/spec/rails_applications/6.1.4/app/models/application_record.rb +3 -0
  58. data/spec/{dummy/app/mailers → rails_applications/6.1.4/app/models/concerns}/.keep +0 -0
  59. data/spec/{dummy → rails_applications/6.1.4}/app/views/home/index.html.erb +3 -3
  60. data/spec/{dummy → rails_applications/6.1.4}/app/views/home/index.json.erb +1 -1
  61. data/spec/rails_applications/6.1.4/app/views/layouts/application.html.erb +13 -0
  62. data/spec/rails_applications/6.1.4/app/views/layouts/mailer.html.erb +13 -0
  63. data/spec/rails_applications/6.1.4/app/views/layouts/mailer.text.erb +1 -0
  64. data/spec/rails_applications/6.1.4/bin/rails +5 -0
  65. data/spec/rails_applications/6.1.4/bin/rake +5 -0
  66. data/spec/rails_applications/6.1.4/bin/setup +36 -0
  67. data/spec/rails_applications/6.1.4/bin/spring +14 -0
  68. data/spec/rails_applications/6.1.4/bin/yarn +17 -0
  69. data/spec/rails_applications/6.1.4/config/application.rb +22 -0
  70. data/spec/rails_applications/6.1.4/config/boot.rb +3 -0
  71. data/spec/rails_applications/6.1.4/config/cable.yml +10 -0
  72. data/spec/rails_applications/6.1.4/config/credentials.yml.enc +1 -0
  73. data/spec/{dummy → rails_applications/6.1.4}/config/database.yml +25 -25
  74. data/spec/{dummy → rails_applications/6.1.4}/config/environment.rb +5 -5
  75. data/spec/rails_applications/6.1.4/config/environments/development.rb +76 -0
  76. data/spec/rails_applications/6.1.4/config/environments/production.rb +120 -0
  77. data/spec/rails_applications/6.1.4/config/environments/test.rb +60 -0
  78. data/spec/rails_applications/6.1.4/config/initializers/application_controller_renderer.rb +8 -0
  79. data/spec/rails_applications/6.1.4/config/initializers/assets.rb +14 -0
  80. data/spec/rails_applications/6.1.4/config/initializers/backtrace_silencers.rb +8 -0
  81. data/spec/rails_applications/6.1.4/config/initializers/content_security_policy.rb +30 -0
  82. data/spec/{dummy → rails_applications/6.1.4}/config/initializers/cookies_serializer.rb +5 -3
  83. data/spec/{dummy → rails_applications/6.1.4}/config/initializers/filter_parameter_logging.rb +6 -4
  84. data/spec/{dummy → rails_applications/6.1.4}/config/initializers/inflections.rb +16 -16
  85. data/spec/{dummy → rails_applications/6.1.4}/config/initializers/mime_types.rb +4 -4
  86. data/spec/rails_applications/6.1.4/config/initializers/permissions_policy.rb +11 -0
  87. data/spec/{dummy → rails_applications/6.1.4}/config/initializers/wrap_parameters.rb +14 -14
  88. data/spec/{dummy → rails_applications/6.1.4}/config/locales/en.yml +33 -23
  89. data/spec/rails_applications/6.1.4/config/master.key +1 -0
  90. data/spec/rails_applications/6.1.4/config/puma.rb +43 -0
  91. data/spec/rails_applications/6.1.4/config/routes.rb +4 -0
  92. data/spec/rails_applications/6.1.4/config/spring.rb +6 -0
  93. data/spec/rails_applications/6.1.4/config/storage.yml +34 -0
  94. data/spec/{dummy → rails_applications/6.1.4}/config.ru +6 -4
  95. data/spec/rails_applications/6.1.4/db/seeds.rb +7 -0
  96. data/spec/{dummy → rails_applications/6.1.4}/db/test.sqlite3 +0 -0
  97. data/spec/{dummy/app/models → rails_applications/6.1.4/lib/assets}/.keep +0 -0
  98. data/spec/{dummy/app/models/concerns → rails_applications/6.1.4/lib/tasks}/.keep +0 -0
  99. data/spec/rails_applications/6.1.4/package.json +11 -0
  100. data/spec/{dummy → rails_applications/6.1.4}/public/404.html +67 -67
  101. data/spec/{dummy → rails_applications/6.1.4}/public/422.html +67 -67
  102. data/spec/{dummy → rails_applications/6.1.4}/public/500.html +66 -66
  103. data/spec/{dummy/lib/assets/.keep → rails_applications/6.1.4/public/apple-touch-icon-precomposed.png} +0 -0
  104. data/spec/{dummy/lib/tasks/.keep → rails_applications/6.1.4/public/apple-touch-icon.png} +0 -0
  105. data/spec/{dummy → rails_applications/6.1.4}/public/favicon.ico +0 -0
  106. data/spec/rails_applications/6.1.4/public/robots.txt +1 -0
  107. data/spec/{dummy/log → rails_applications/6.1.4/storage}/.keep +0 -0
  108. data/spec/rails_applications/7.1.3/.dockerignore +37 -0
  109. data/spec/rails_applications/7.1.3/.gitattributes +9 -0
  110. data/spec/rails_applications/7.1.3/.gitignore +35 -0
  111. data/spec/rails_applications/7.1.3/.ruby-version +1 -0
  112. data/spec/rails_applications/7.1.3/Dockerfile +62 -0
  113. data/spec/rails_applications/7.1.3/Gemfile +67 -0
  114. data/spec/rails_applications/7.1.3/README.md +24 -0
  115. data/spec/rails_applications/7.1.3/Rakefile +6 -0
  116. data/spec/rails_applications/7.1.3/app/assets/config/manifest.js +4 -0
  117. data/spec/{dummy/test/controllers → rails_applications/7.1.3/app/assets/images}/.keep +0 -0
  118. data/spec/rails_applications/7.1.3/app/assets/stylesheets/application.css +15 -0
  119. data/spec/rails_applications/7.1.3/app/channels/application_cable/channel.rb +4 -0
  120. data/spec/rails_applications/7.1.3/app/channels/application_cable/connection.rb +4 -0
  121. data/spec/rails_applications/7.1.3/app/controllers/application_controller.rb +2 -0
  122. data/spec/{dummy/test/fixtures → rails_applications/7.1.3/app/controllers/concerns}/.keep +0 -0
  123. data/spec/rails_applications/7.1.3/app/controllers/home_controller.rb +2 -0
  124. data/spec/rails_applications/7.1.3/app/helpers/application_helper.rb +2 -0
  125. data/spec/rails_applications/7.1.3/app/helpers/home_helper.rb +2 -0
  126. data/spec/rails_applications/7.1.3/app/javascript/application.js +3 -0
  127. data/spec/rails_applications/7.1.3/app/javascript/controllers/application.js +9 -0
  128. data/spec/rails_applications/7.1.3/app/javascript/controllers/hello_controller.js +7 -0
  129. data/spec/rails_applications/7.1.3/app/javascript/controllers/index.js +11 -0
  130. data/spec/rails_applications/7.1.3/app/jobs/application_job.rb +7 -0
  131. data/spec/rails_applications/7.1.3/app/mailers/application_mailer.rb +4 -0
  132. data/spec/rails_applications/7.1.3/app/models/application_record.rb +3 -0
  133. data/spec/{dummy/test/helpers → rails_applications/7.1.3/app/models/concerns}/.keep +0 -0
  134. data/spec/rails_applications/7.1.3/app/views/home/index.html.erb +3 -0
  135. data/spec/rails_applications/7.1.3/app/views/home/index.json.erb +1 -0
  136. data/spec/rails_applications/7.1.3/app/views/layouts/application.html.erb +16 -0
  137. data/spec/rails_applications/7.1.3/app/views/layouts/mailer.html.erb +13 -0
  138. data/spec/rails_applications/7.1.3/app/views/layouts/mailer.text.erb +1 -0
  139. data/spec/rails_applications/7.1.3/bin/bundle +109 -0
  140. data/spec/rails_applications/7.1.3/bin/docker-entrypoint +8 -0
  141. data/spec/rails_applications/7.1.3/bin/importmap +4 -0
  142. data/spec/rails_applications/7.1.3/bin/rails +4 -0
  143. data/spec/rails_applications/7.1.3/bin/rake +4 -0
  144. data/spec/rails_applications/7.1.3/bin/setup +33 -0
  145. data/spec/rails_applications/7.1.3/config/application.rb +27 -0
  146. data/spec/rails_applications/7.1.3/config/boot.rb +4 -0
  147. data/spec/rails_applications/7.1.3/config/cable.yml +11 -0
  148. data/spec/rails_applications/7.1.3/config/credentials.yml.enc +1 -0
  149. data/spec/rails_applications/7.1.3/config/database.yml +25 -0
  150. data/spec/rails_applications/7.1.3/config/environment.rb +5 -0
  151. data/spec/rails_applications/7.1.3/config/environments/development.rb +76 -0
  152. data/spec/rails_applications/7.1.3/config/environments/production.rb +97 -0
  153. data/spec/rails_applications/7.1.3/config/environments/test.rb +64 -0
  154. data/spec/rails_applications/7.1.3/config/importmap.rb +7 -0
  155. data/spec/rails_applications/7.1.3/config/initializers/assets.rb +12 -0
  156. data/spec/rails_applications/7.1.3/config/initializers/content_security_policy.rb +25 -0
  157. data/spec/rails_applications/7.1.3/config/initializers/filter_parameter_logging.rb +8 -0
  158. data/spec/rails_applications/7.1.3/config/initializers/inflections.rb +16 -0
  159. data/spec/rails_applications/7.1.3/config/initializers/permissions_policy.rb +13 -0
  160. data/spec/rails_applications/7.1.3/config/locales/en.yml +31 -0
  161. data/spec/rails_applications/7.1.3/config/puma.rb +35 -0
  162. data/spec/rails_applications/7.1.3/config/routes.rb +11 -0
  163. data/spec/rails_applications/7.1.3/config/storage.yml +34 -0
  164. data/spec/rails_applications/7.1.3/config.ru +6 -0
  165. data/spec/rails_applications/7.1.3/db/seeds.rb +9 -0
  166. data/spec/{dummy/test/integration → rails_applications/7.1.3/lib/assets}/.keep +0 -0
  167. data/spec/{dummy/test/mailers → rails_applications/7.1.3/lib/tasks}/.keep +0 -0
  168. data/spec/rails_applications/7.1.3/public/404.html +67 -0
  169. data/spec/rails_applications/7.1.3/public/422.html +67 -0
  170. data/spec/rails_applications/7.1.3/public/500.html +66 -0
  171. data/spec/{dummy/test/models/.keep → rails_applications/7.1.3/public/apple-touch-icon-precomposed.png} +0 -0
  172. data/spec/{dummy/vendor/assets/javascripts/.keep → rails_applications/7.1.3/public/apple-touch-icon.png} +0 -0
  173. data/spec/{dummy/vendor/assets/stylesheets/.keep → rails_applications/7.1.3/public/favicon.ico} +0 -0
  174. data/spec/rails_applications/7.1.3/public/robots.txt +1 -0
  175. data/spec/rails_applications/7.1.3/storage/.keep +0 -0
  176. data/spec/rails_applications/7.1.3/test/application_system_test_case.rb +5 -0
  177. data/spec/rails_applications/7.1.3/test/channels/application_cable/connection_test.rb +13 -0
  178. data/spec/rails_applications/7.1.3/test/controllers/.keep +0 -0
  179. data/spec/rails_applications/7.1.3/test/controllers/home_controller_test.rb +7 -0
  180. data/spec/rails_applications/7.1.3/test/fixtures/files/.keep +0 -0
  181. data/spec/rails_applications/7.1.3/test/helpers/.keep +0 -0
  182. data/spec/rails_applications/7.1.3/test/integration/.keep +0 -0
  183. data/spec/rails_applications/7.1.3/test/mailers/.keep +0 -0
  184. data/spec/rails_applications/7.1.3/test/models/.keep +0 -0
  185. data/spec/rails_applications/7.1.3/test/system/.keep +0 -0
  186. data/spec/rails_applications/7.1.3/test/test_helper.rb +15 -0
  187. data/spec/rails_applications/7.1.3/vendor/.keep +0 -0
  188. data/spec/rails_applications/7.1.3/vendor/javascript/.keep +0 -0
  189. data/spec/rails_helper.rb +8 -4
  190. data/spec/raygun/breadcrumbs/breadcrumb_spec.rb +171 -171
  191. data/spec/raygun/breadcrumbs/store_spec.rb +170 -170
  192. data/spec/services/apply_whitelist_filter_to_payload_spec.rb +251 -251
  193. data/spec/spec_helper.rb +24 -24
  194. data/spec/support/fake_logger.rb +17 -17
  195. data/test/integration/client_test.rb +19 -19
  196. data/test/rails_helper.rb +6 -0
  197. data/test/test_helper.rb +76 -72
  198. data/test/unit/affected_user_test.rb +136 -136
  199. data/test/unit/client_test.rb +812 -812
  200. data/test/unit/configuration_test.rb +202 -206
  201. data/test/unit/error_subscriber_test.rb +43 -0
  202. data/test/unit/raygun_test.rb +106 -25
  203. data/test/unit/resque_failure_test.rb +27 -24
  204. data/test/unit/sidekiq_failure_test.rb +122 -32
  205. metadata +186 -125
  206. data/.travis.yml +0 -20
  207. data/spec/dummy/.gitignore +0 -17
  208. data/spec/dummy/Gemfile +0 -47
  209. data/spec/dummy/app/assets/config/manifest.js +0 -3
  210. data/spec/dummy/app/assets/javascripts/application.js +0 -13
  211. data/spec/dummy/app/controllers/application_controller.rb +0 -5
  212. data/spec/dummy/app/views/layouts/application.html.erb +0 -14
  213. data/spec/dummy/bin/bundle +0 -3
  214. data/spec/dummy/bin/rails +0 -9
  215. data/spec/dummy/bin/rake +0 -9
  216. data/spec/dummy/bin/setup +0 -29
  217. data/spec/dummy/bin/spring +0 -17
  218. data/spec/dummy/config/application.rb +0 -26
  219. data/spec/dummy/config/boot.rb +0 -3
  220. data/spec/dummy/config/environments/development.rb +0 -41
  221. data/spec/dummy/config/environments/production.rb +0 -79
  222. data/spec/dummy/config/environments/test.rb +0 -42
  223. data/spec/dummy/config/initializers/assets.rb +0 -11
  224. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
  225. data/spec/dummy/config/initializers/session_store.rb +0 -3
  226. data/spec/dummy/config/initializers/to_time_preserves_timezone.rb +0 -10
  227. data/spec/dummy/config/routes.rb +0 -58
  228. data/spec/dummy/config/secrets.yml +0 -22
  229. data/spec/dummy/db/seeds.rb +0 -7
  230. data/spec/dummy/public/robots.txt +0 -5
  231. data/spec/dummy/test/test_helper.rb +0 -10
  232. data/spec/raygun/raygun_spec.rb +0 -47
@@ -1,206 +1,202 @@
1
- require_relative "../test_helper.rb"
2
-
3
- class ConfigurationTest < Raygun::UnitTest
4
-
5
- class TestException < StandardError; end
6
- class Test2Exception < StandardError; end
7
-
8
- def setup
9
- Raygun.setup do |config|
10
- config.api_key = "a test api key"
11
- config.version = 9.9
12
- end
13
- end
14
-
15
- def teardown
16
- Raygun.reset_configuration
17
- end
18
-
19
- def test_setting_api_key_and_version
20
- assert_equal 9.9, Raygun.configuration.version
21
- assert_equal "a test api key", Raygun.configuration.api_key
22
- end
23
-
24
- def test_hash_style_access
25
- assert_equal 9.9, Raygun.configuration[:version]
26
- end
27
-
28
- def test_set_js_api_key
29
- Raygun.configuration.js_api_key = "a test js api key"
30
-
31
- assert_equal "a test js api key", Raygun.configuration.js_api_key
32
- end
33
-
34
- def test_set_js_api_version
35
- Raygun.configuration.js_api_version = "a test js api version"
36
-
37
- assert_equal "a test js api version", Raygun.configuration.js_api_version
38
- end
39
-
40
- def test_enable_reporting
41
- Raygun.configuration.enable_reporting = false
42
-
43
- # should be no API call
44
- assert_nil Raygun.track_exception(TestException.new)
45
- end
46
-
47
- def test_silence_reporting
48
- Raygun.configuration.silence_reporting = true
49
-
50
- # nothing returned as there's no HTTP call
51
- assert_nil Raygun.track_exception(TestException.new)
52
- end
53
-
54
- def test_ignoring_exceptions
55
- Raygun.configuration.ignore << TestException.to_s
56
-
57
- assert_nil Raygun.track_exception(TestException.new)
58
- end
59
-
60
- def test_ignoring_multiple_exceptions
61
- Raygun.configuration.ignore << [TestException.to_s, Test2Exception.to_s]
62
-
63
- assert_nil Raygun.track_exception(TestException.new)
64
- assert_nil Raygun.track_exception(Test2Exception.new)
65
- end
66
-
67
- def test_default_values
68
- assert_equal({}, Raygun.configuration.custom_data)
69
- end
70
-
71
- def test_default_tags_set
72
- assert_equal([], Raygun.configuration.tags)
73
- end
74
-
75
- def test_overriding_defaults
76
- Raygun.default_configuration.custom_data = { robby: "robot" }
77
- assert_equal({ robby: "robot" }, Raygun.configuration.custom_data)
78
-
79
- Raygun.configuration.custom_data = { sally: "stegosaurus" }
80
- assert_equal({ sally: "stegosaurus" }, Raygun.configuration.custom_data)
81
- end
82
-
83
- def test_debug
84
- Raygun.setup do |config|
85
- config.debug = true
86
- end
87
-
88
- assert_equal Raygun.configuration.debug, true
89
- end
90
-
91
- def test_debug_default_set
92
- assert_equal false, Raygun.configuration.debug
93
- end
94
-
95
- def test_setting_filter_paramters_to_proc
96
- Raygun.setup do |config|
97
- config.filter_parameters do |hash|
98
- # Don't need to do anything :)
99
- end
100
- end
101
-
102
- assert Raygun.configuration.filter_parameters.is_a?(Proc)
103
- ensure
104
- Raygun.configuration.filter_parameters = nil
105
- end
106
-
107
- def test_filter_payload_with_whitelist_default
108
- assert_equal(false, Raygun.configuration.filter_payload_with_whitelist)
109
- end
110
-
111
- def test_setting_whitelist_payload_keys_to_proc
112
- Raygun.setup do |config|
113
- config.whitelist_payload_shape do |hash|
114
- # No-op
115
- end
116
- end
117
-
118
- assert Raygun.configuration.whitelist_payload_shape.is_a?(Proc)
119
- ensure
120
- Raygun.configuration.whitelist_payload_shape = nil
121
- end
122
-
123
- def test_setting_custom_data_to_proc
124
- Raygun.setup do |config|
125
- config.custom_data do |exception, env|
126
- # No-op
127
- end
128
- end
129
-
130
- assert Raygun.configuration.custom_data.is_a?(Proc)
131
- ensure
132
- Raygun.configuration.custom_data = nil
133
- end
134
-
135
- def test_setting_custom_data_to_hash
136
- Raygun.setup do |config|
137
- config.custom_data = {}
138
- end
139
-
140
- assert Raygun.configuration.custom_data.is_a?(Hash)
141
- ensure
142
- Raygun.configuration.custom_data = nil
143
- end
144
-
145
- def test_setting_tags_to_array
146
- Raygun.setup do |c|
147
- c.tags = ['test']
148
- end
149
-
150
- assert_equal Raygun.configuration.tags, ['test']
151
- end
152
-
153
- def test_setting_tags_to_proc
154
- Raygun.setup do |c|
155
- c.tags = ->(exception, env) {}
156
- end
157
-
158
- assert Raygun.configuration.tags.is_a?(Proc)
159
- end
160
-
161
- def test_api_url_default
162
- assert_equal "https://api.raygun.com/", Raygun.configuration.api_url
163
- end
164
-
165
- def test_setting_breadcrumb_level
166
- Raygun.setup do |config|
167
- config.breadcrumb_level = :info
168
- end
169
-
170
- assert_equal :info, Raygun.configuration.breadcrumb_level
171
- end
172
-
173
- def test_setting_breadcrumb_level_to_bad_value
174
- logger = setup_logging
175
-
176
- Raygun.setup do |config|
177
- config.breadcrumb_level = :invalid
178
- end
179
-
180
- assert_equal :info, Raygun.configuration.breadcrumb_level
181
- assert(
182
- logger.get.include?("unknown breadcrumb level"),
183
- "unknown breadcrumb level message was not logged"
184
- )
185
- end
186
-
187
- def test_breadcrumb_level_default
188
- assert_equal :info, Raygun.configuration.breadcrumb_level
189
- end
190
-
191
- def test_record_raw_data_default
192
- assert_equal false, Raygun.configuration.record_raw_data
193
- end
194
-
195
- def test_send_in_background_default
196
- assert_equal false, Raygun.configuration.send_in_background
197
- end
198
-
199
- def test_error_report_send_timeout_default
200
- assert_equal 10, Raygun.configuration.error_report_send_timeout
201
- end
202
-
203
- def test_enable_reporting_default
204
- assert_equal true, Raygun.configuration.enable_reporting
205
- end
206
- end
1
+ require_relative "../test_helper.rb"
2
+
3
+ class ConfigurationTest < Raygun::UnitTest
4
+
5
+ class TestException < StandardError; end
6
+ class Test2Exception < StandardError; end
7
+
8
+ def setup
9
+ Raygun.setup do |config|
10
+ config.api_key = "a test api key"
11
+ config.version = 9.9
12
+ end
13
+ end
14
+
15
+ def test_setting_api_key_and_version
16
+ assert_equal 9.9, Raygun.configuration.version
17
+ assert_equal "a test api key", Raygun.configuration.api_key
18
+ end
19
+
20
+ def test_hash_style_access
21
+ assert_equal 9.9, Raygun.configuration[:version]
22
+ end
23
+
24
+ def test_set_js_api_key
25
+ Raygun.configuration.js_api_key = "a test js api key"
26
+
27
+ assert_equal "a test js api key", Raygun.configuration.js_api_key
28
+ end
29
+
30
+ def test_set_js_api_version
31
+ Raygun.configuration.js_api_version = "a test js api version"
32
+
33
+ assert_equal "a test js api version", Raygun.configuration.js_api_version
34
+ end
35
+
36
+ def test_enable_reporting
37
+ Raygun.configuration.enable_reporting = false
38
+
39
+ # should be no API call
40
+ assert_nil Raygun.track_exception(TestException.new)
41
+ end
42
+
43
+ def test_silence_reporting
44
+ Raygun.configuration.silence_reporting = true
45
+
46
+ # nothing returned as there's no HTTP call
47
+ assert_nil Raygun.track_exception(TestException.new)
48
+ end
49
+
50
+ def test_ignoring_exceptions
51
+ Raygun.configuration.ignore << TestException.to_s
52
+
53
+ assert_nil Raygun.track_exception(TestException.new)
54
+ end
55
+
56
+ def test_ignoring_multiple_exceptions
57
+ Raygun.configuration.ignore << [TestException.to_s, Test2Exception.to_s]
58
+
59
+ assert_nil Raygun.track_exception(TestException.new)
60
+ assert_nil Raygun.track_exception(Test2Exception.new)
61
+ end
62
+
63
+ def test_default_values
64
+ assert_equal({}, Raygun.configuration.custom_data)
65
+ end
66
+
67
+ def test_default_tags_set
68
+ assert_equal([], Raygun.configuration.tags)
69
+ end
70
+
71
+ def test_overriding_defaults
72
+ Raygun.default_configuration.custom_data = { robby: "robot" }
73
+ assert_equal({ robby: "robot" }, Raygun.configuration.custom_data)
74
+
75
+ Raygun.configuration.custom_data = { sally: "stegosaurus" }
76
+ assert_equal({ sally: "stegosaurus" }, Raygun.configuration.custom_data)
77
+ end
78
+
79
+ def test_debug
80
+ Raygun.setup do |config|
81
+ config.debug = true
82
+ end
83
+
84
+ assert_equal Raygun.configuration.debug, true
85
+ end
86
+
87
+ def test_debug_default_set
88
+ assert_equal false, Raygun.configuration.debug
89
+ end
90
+
91
+ def test_setting_filter_paramters_to_proc
92
+ Raygun.setup do |config|
93
+ config.filter_parameters do |hash|
94
+ # Don't need to do anything :)
95
+ end
96
+ end
97
+
98
+ assert Raygun.configuration.filter_parameters.is_a?(Proc)
99
+ ensure
100
+ Raygun.configuration.filter_parameters = nil
101
+ end
102
+
103
+ def test_filter_payload_with_whitelist_default
104
+ assert_equal(false, Raygun.configuration.filter_payload_with_whitelist)
105
+ end
106
+
107
+ def test_setting_whitelist_payload_keys_to_proc
108
+ Raygun.setup do |config|
109
+ config.whitelist_payload_shape do |hash|
110
+ # No-op
111
+ end
112
+ end
113
+
114
+ assert Raygun.configuration.whitelist_payload_shape.is_a?(Proc)
115
+ ensure
116
+ Raygun.configuration.whitelist_payload_shape = nil
117
+ end
118
+
119
+ def test_setting_custom_data_to_proc
120
+ Raygun.setup do |config|
121
+ config.custom_data do |exception, env|
122
+ # No-op
123
+ end
124
+ end
125
+
126
+ assert Raygun.configuration.custom_data.is_a?(Proc)
127
+ ensure
128
+ Raygun.configuration.custom_data = nil
129
+ end
130
+
131
+ def test_setting_custom_data_to_hash
132
+ Raygun.setup do |config|
133
+ config.custom_data = {}
134
+ end
135
+
136
+ assert Raygun.configuration.custom_data.is_a?(Hash)
137
+ ensure
138
+ Raygun.configuration.custom_data = nil
139
+ end
140
+
141
+ def test_setting_tags_to_array
142
+ Raygun.setup do |c|
143
+ c.tags = ['test']
144
+ end
145
+
146
+ assert_equal Raygun.configuration.tags, ['test']
147
+ end
148
+
149
+ def test_setting_tags_to_proc
150
+ Raygun.setup do |c|
151
+ c.tags = ->(exception, env) {}
152
+ end
153
+
154
+ assert Raygun.configuration.tags.is_a?(Proc)
155
+ end
156
+
157
+ def test_api_url_default
158
+ assert_equal "https://api.raygun.com/", Raygun.configuration.api_url
159
+ end
160
+
161
+ def test_setting_breadcrumb_level
162
+ Raygun.setup do |config|
163
+ config.breadcrumb_level = :info
164
+ end
165
+
166
+ assert_equal :info, Raygun.configuration.breadcrumb_level
167
+ end
168
+
169
+ def test_setting_breadcrumb_level_to_bad_value
170
+ logger = setup_logging
171
+
172
+ Raygun.setup do |config|
173
+ config.breadcrumb_level = :invalid
174
+ end
175
+
176
+ assert_equal :info, Raygun.configuration.breadcrumb_level
177
+ assert(
178
+ logger.get.include?("unknown breadcrumb level"),
179
+ "unknown breadcrumb level message was not logged"
180
+ )
181
+ end
182
+
183
+ def test_breadcrumb_level_default
184
+ assert_equal :info, Raygun.configuration.breadcrumb_level
185
+ end
186
+
187
+ def test_record_raw_data_default
188
+ assert_equal false, Raygun.configuration.record_raw_data
189
+ end
190
+
191
+ def test_send_in_background_default
192
+ assert_equal false, Raygun.configuration.send_in_background
193
+ end
194
+
195
+ def test_error_report_send_timeout_default
196
+ assert_equal 10, Raygun.configuration.error_report_send_timeout
197
+ end
198
+
199
+ def test_enable_reporting_default
200
+ assert_equal true, Raygun.configuration.enable_reporting
201
+ end
202
+ end
@@ -0,0 +1,43 @@
1
+ require_relative "../test_helper.rb"
2
+
3
+ class ErrorSubscriberTest < Raygun::UnitTest
4
+
5
+ def setup
6
+ super
7
+ Raygun.configuration.send_in_background = false
8
+ end
9
+
10
+
11
+ def test_tracking_exception_via_subscriber
12
+ body_matcher = lambda do |body|
13
+ json = JSON.parse(body)
14
+ details = json["details"]
15
+
16
+ details["userCustomData"] &&
17
+ details["userCustomData"]["rails.error"] &&
18
+ details["userCustomData"]["rails.error"]["handled"] == true &&
19
+ details["tags"] == ["rails_error_reporter", "test_tag", "test"]
20
+ end
21
+
22
+ request_stub = stub_request(:post, 'https://api.raygun.com/entries')
23
+ .with(
24
+ body: body_matcher
25
+ )
26
+ .to_return(status: 202).times(1)
27
+
28
+ result = Raygun::ErrorSubscriber.new.report(
29
+ StandardError.new("test error"),
30
+ handled: true,
31
+ severity: "warning",
32
+ context: {
33
+ tags: ["test_tag"]
34
+ },
35
+ source: "application"
36
+ )
37
+
38
+ assert result && result.success?, "Expected success, got #{result.class}, #{result.inspect}"
39
+
40
+ assert_requested request_stub
41
+ end
42
+
43
+ end
@@ -1,25 +1,106 @@
1
- # -*- coding: utf-8 -*-
2
- require_relative "../test_helper.rb"
3
-
4
- class RaygunTest < Raygun::UnitTest
5
- def test_raygun_is_not_configured_with_no_api_key
6
- Raygun.configuration.api_key = nil
7
- assert !Raygun.configured?
8
- end
9
-
10
- def test_should_report_logs_silence_reporting_when_debug_is_on
11
- logger = setup_logging
12
- Raygun.configuration.silence_reporting = true
13
- Raygun.send(:should_report?, Exception.new)
14
-
15
- assert logger.get.include?("silence_reporting"), "silence_reporting was not logged"
16
- end
17
-
18
- def test_should_report_logs_ignored_exceptions_when_debug_is_on
19
- logger = setup_logging
20
- Raygun.configuration.ignore = ["Exception"]
21
- Raygun.send(:should_report?, Exception.new)
22
-
23
- assert logger.get =~ /skipping reporting of.*Exception.*/, "ignored exception was not logged"
24
- end
25
- end
1
+ # -*- coding: utf-8 -*-
2
+ require_relative "../test_helper.rb"
3
+
4
+ class RaygunTest < Raygun::UnitTest
5
+ def test_raygun_is_not_configured_with_no_api_key
6
+ Raygun.configuration.api_key = nil
7
+ assert !Raygun.configured?
8
+ end
9
+
10
+ def test_should_report_logs_silence_reporting_when_debug_is_on
11
+ logger = setup_logging
12
+ Raygun.configuration.silence_reporting = true
13
+ Raygun.send(:should_report?, Exception.new)
14
+
15
+ assert logger.get.include?("silence_reporting"), "silence_reporting was not logged"
16
+ end
17
+
18
+ def test_should_report_logs_ignored_exceptions_when_debug_is_on
19
+ logger = setup_logging
20
+ Raygun.configuration.ignore = ["Exception"]
21
+ Raygun.send(:should_report?, Exception.new)
22
+
23
+ assert logger.get =~ /skipping reporting of.*Exception.*/, "ignored exception was not logged"
24
+ end
25
+
26
+ class BackgroundSendTest < Raygun::UnitTest
27
+ def setup
28
+ @failsafe_logger = FakeLogger.new
29
+ Raygun.setup do |c|
30
+ c.silence_reporting = false
31
+ c.send_in_background = true
32
+ c.api_url = "http://example.api"
33
+ c.api_key = "foo"
34
+ c.debug = false
35
+ c.failsafe_logger = @failsafe_logger
36
+ end
37
+ end
38
+
39
+ def test_breadcrumb_context_passed
40
+ Raygun::Breadcrumbs::Store.initialize
41
+ Raygun.record_breadcrumb(message: "mmm crumbly")
42
+ assert Raygun::Breadcrumbs::Store.any?
43
+
44
+ stub_request(:post, "http://example.api/entries")
45
+ .with(body: hash_including(breadcrumbs: [ hash_including(message: "mmm crumbly") ]))
46
+ .to_return(status: 202)
47
+
48
+ Raygun.track_exception(StandardError.new)
49
+ Raygun.wait_for_futures
50
+ ensure
51
+ Raygun::Breadcrumbs::Store.clear
52
+ end
53
+
54
+ def test_failsafe_reported_on_timeout
55
+ stub_request(:post, "http://example.api/entries").to_timeout
56
+
57
+ error = StandardError.new
58
+
59
+ Raygun.track_exception(error)
60
+
61
+ Raygun.wait_for_futures
62
+ assert_match(/Problem reporting exception to Raygun/, @failsafe_logger.get)
63
+ end
64
+
65
+ end
66
+
67
+ class ErrorSubscriberTest < Raygun::UnitTest
68
+ def setup
69
+ Raygun.setup do |c|
70
+ c.api_key = "test"
71
+ c.silence_reporting = false
72
+ c.debug = true
73
+ c.register_rails_error_handler = true
74
+ end
75
+
76
+ Raygun::Railtie.setup_error_subscriber
77
+ end
78
+
79
+ def test_registers_with_rails
80
+ if ::Rails.version.to_f >= 7.0
81
+ assert Rails.error.instance_variable_get("@subscribers").any? { |s| s.is_a?(Raygun::ErrorSubscriber) }
82
+ end
83
+ end
84
+
85
+ def test_reports_exceptions
86
+ if ::Rails.version.to_f >= 7.0
87
+ stub_request(:post, "https://api.raygun.com/entries").to_return(status: 202)
88
+
89
+ Rails.error.handle do
90
+ raise StandardError.new("test rails handling")
91
+ end
92
+ end
93
+ end
94
+ end
95
+
96
+ def test_reset_configuration
97
+ Raygun.setup do |c|
98
+ c.api_url = "http://test.api"
99
+ end
100
+
101
+ original_api_url = Raygun.configuration.api_url
102
+ Raygun.reset_configuration
103
+ assert_equal Raygun.default_configuration.api_url, Raygun.configuration.api_url
104
+ refute_equal original_api_url, Raygun.configuration.api_url
105
+ end
106
+ end
@@ -1,24 +1,27 @@
1
- require_relative "../test_helper.rb"
2
-
3
- # Very simple test
4
- class ResqueFailureTest < Raygun::UnitTest
5
-
6
- require "resque/failure/raygun"
7
-
8
- def setup
9
- super
10
-
11
- stub_request(:post, 'https://api.raygun.com/entries').to_return(status: 202)
12
- fake_successful_entry
13
- end
14
-
15
- def test_failure_backend_appears_to_work
16
- assert Resque::Failure::Raygun.new(
17
- StandardError.new("Worker Problem"),
18
- "TestWorker PID 123",
19
- "super_important_jobs",
20
- class: "SendCookies", args: [ "nik" ]
21
- ).save.success?
22
- end
23
-
24
- end
1
+ require_relative "../test_helper.rb"
2
+
3
+ # Very simple test
4
+ class ResqueFailureTest < Raygun::UnitTest
5
+
6
+ require "resque/failure/raygun"
7
+
8
+ def setup
9
+ super
10
+ Raygun.configuration.send_in_background = false
11
+
12
+ stub_request(:post, 'https://api.raygun.com/entries').to_return(status: 202)
13
+ fake_successful_entry
14
+ end
15
+
16
+ def test_failure_backend_appears_to_work
17
+ result = Resque::Failure::Raygun.new(
18
+ StandardError.new("Worker Problem"),
19
+ "TestWorker PID 123",
20
+ "super_important_jobs",
21
+ class: "SendCookies", args: [ "nik" ]
22
+ ).save
23
+
24
+ assert result && result.success?, "Expected success, got #{result.inspect}"
25
+ end
26
+
27
+ end