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
data/test/test_helper.rb CHANGED
@@ -1,72 +1,76 @@
1
- ENV['RACK_ENV'] = 'test'
2
- require_relative "../lib/raygun.rb"
3
- require "minitest/autorun"
4
- require "minitest/pride"
5
- require "timecop"
6
- require "mocha/minitest"
7
- require 'stringio'
8
- require 'webmock/minitest'
9
-
10
- class FakeLogger
11
- def initialize
12
- @logger = StringIO.new
13
- end
14
-
15
- def info(message)
16
- @logger.write(message)
17
- end
18
-
19
- def reset
20
- @logger.string = ""
21
- end
22
-
23
- def get
24
- @logger.string
25
- end
26
- end
27
-
28
- class NoApiKey < StandardError; end
29
-
30
- class Raygun::IntegrationTest < Minitest::Test
31
-
32
- def setup
33
- Raygun.setup do |config|
34
- config.api_key = File.open(File.expand_path("~/.raygun4ruby-test-key"), "rb").read
35
- config.version = Raygun::VERSION
36
- end
37
-
38
- rescue Errno::ENOENT
39
- raise NoApiKey.new("Place a valid Raygun API key into ~/.raygun4ruby-test-key to run integration tests") unless api_key
40
- end
41
-
42
- def teardown
43
- end
44
-
45
- end
46
-
47
- class Raygun::UnitTest < MiniTest::Test
48
-
49
- def setup
50
- Raygun.configuration.api_key = "test api key"
51
- end
52
-
53
- def teardown
54
- reset_configuration
55
- end
56
-
57
- def fake_successful_entry
58
- stub_request(:post, 'https://api.raygun.com/entries').to_return(status: 202)
59
- end
60
-
61
- def reset_configuration
62
- Raygun.configuration = Raygun::Configuration.new
63
- end
64
-
65
- def setup_logging
66
- logger = FakeLogger.new
67
- Raygun.configuration.debug = true
68
- Raygun.configuration.logger = logger
69
-
70
- logger
71
- end
72
- end
1
+ ENV['RACK_ENV'] = 'test'
2
+ require "minitest/autorun"
3
+ require "minitest/pride"
4
+ require "timecop"
5
+ require "mocha/minitest"
6
+ require "stringio"
7
+ require "webmock/minitest"
8
+
9
+ require_relative "./rails_helper"
10
+ require_relative "../lib/raygun.rb"
11
+
12
+ # Ensure we start with a known state
13
+ Raygun.reset_configuration
14
+
15
+ class FakeLogger
16
+ def initialize
17
+ @logger = StringIO.new
18
+ end
19
+
20
+ def info(message)
21
+ @logger.write(message)
22
+ end
23
+
24
+ def reset
25
+ @logger.string = ""
26
+ end
27
+
28
+ def get
29
+ @logger.string
30
+ end
31
+ end
32
+
33
+ class NoApiKey < StandardError; end
34
+
35
+ class Raygun::IntegrationTest < Minitest::Test
36
+
37
+ def setup
38
+ Raygun.setup do |config|
39
+ config.api_key = File.open(File.expand_path("~/.raygun4ruby-test-key"), "rb").read
40
+ config.version = Raygun::VERSION
41
+ end
42
+
43
+ rescue Errno::ENOENT
44
+ raise NoApiKey.new("Place a valid Raygun API key into ~/.raygun4ruby-test-key to run integration tests") unless api_key
45
+ end
46
+
47
+ def teardown
48
+ Raygun.wait_for_futures
49
+ Raygun.reset_configuration
50
+ end
51
+
52
+ end
53
+
54
+ class Raygun::UnitTest < Minitest::Test
55
+
56
+ def setup
57
+ Raygun.configuration.api_key = "test api key"
58
+ end
59
+
60
+ def teardown
61
+ Raygun.wait_for_futures
62
+ Raygun.reset_configuration
63
+ end
64
+
65
+ def fake_successful_entry
66
+ stub_request(:post, 'https://api.raygun.com/entries').to_return(status: 202)
67
+ end
68
+
69
+ def setup_logging
70
+ logger = FakeLogger.new
71
+ Raygun.configuration.debug = true
72
+ Raygun.configuration.logger = logger
73
+
74
+ logger
75
+ end
76
+ end
@@ -1,136 +1,136 @@
1
- require_relative "../test_helper.rb"
2
- require 'ostruct'
3
- require 'raygun/middleware/rails_insert_affected_user'
4
-
5
- class AffectedUserTest < Raygun::UnitTest
6
-
7
- class TestException < StandardError; end
8
-
9
- class MockController
10
-
11
- def user_with_email
12
- OpenStruct.new(id: 123, email: "testemail@something.com")
13
- end
14
-
15
- def user_with_login
16
- OpenStruct.new(login: "topsecret")
17
- end
18
-
19
- def user_with_full_details
20
- OpenStruct.new(id: 123, email: "testemail@something.com", first_name: "Taylor", last_name: "Lodge")
21
- end
22
-
23
- def user_as_string
24
- "some-string-identifier"
25
- end
26
-
27
- def no_logged_in_user
28
- end
29
-
30
- private
31
-
32
- def private_current_user
33
- user_with_email
34
- end
35
-
36
- end
37
-
38
- class MockApp
39
- attr_accessor :env
40
-
41
- def call(env)
42
- @env = env
43
- raise TestException.new
44
- end
45
- end
46
-
47
- def setup
48
- super
49
- @client = Raygun::Client.new
50
- fake_successful_entry
51
-
52
- @app = MockApp.new
53
- @controller = MockController.new
54
- @middleware = Raygun::Middleware::RailsInsertAffectedUser.new(@app)
55
- end
56
-
57
- def test_inserting_user_object_with_email
58
- Raygun.configuration.affected_user_method = :user_with_email
59
- assert @controller.respond_to?(Raygun.configuration.affected_user_method)
60
-
61
- begin
62
- @middleware.call("action_controller.instance" => @controller)
63
- rescue TestException
64
- user_hash = { :identifier => 123, :email => "testemail@something.com", :isAnonymous => false }
65
- assert_equal user_hash, @app.env["raygun.affected_user"]
66
- end
67
- end
68
-
69
- def test_changing_method_mapping
70
- Raygun.configuration.affected_user_method = :user_with_login
71
- Raygun.configuration.affected_user_mapping = {
72
- identifier: :login
73
- }
74
-
75
- assert @controller.respond_to?(Raygun.configuration.affected_user_method)
76
-
77
- begin
78
- @middleware.call("action_controller.instance" => @controller)
79
- rescue TestException
80
- user_hash = { :identifier => "topsecret", :isAnonymous => false }
81
- assert_equal user_hash, @app.env["raygun.affected_user"]
82
- end
83
- end
84
-
85
- def test_inserting_user_as_plain_string
86
- Raygun.configuration.affected_user_method = :user_as_string
87
- assert @controller.respond_to?(Raygun.configuration.affected_user_method)
88
-
89
- begin
90
- @middleware.call("action_controller.instance" => @controller)
91
- rescue TestException
92
- user_hash = { :identifier => "some-string-identifier", :isAnonymous => true }
93
- assert_equal user_hash, @app.env["raygun.affected_user"]
94
- end
95
- end
96
-
97
- def test_with_a_nil_user
98
- Raygun.configuration.affected_user_method = :no_logged_in_user
99
- assert @controller.respond_to?(Raygun.configuration.affected_user_method)
100
-
101
- begin
102
- @middleware.call("action_controller.instance" => @controller)
103
- rescue TestException
104
- user_hash = { :isAnonymous => true }
105
- assert_equal user_hash, @app.env["raygun.affected_user"]
106
- end
107
- end
108
-
109
- def test_with_private_method
110
- Raygun.configuration.affected_user_method = :private_current_user
111
- assert @controller.respond_to?(Raygun.configuration.affected_user_method, true)
112
-
113
- begin
114
- @middleware.call("action_controller.instance" => @controller)
115
- rescue TestException
116
- user_hash = {:isAnonymous=>false, :identifier=>123, :email=>"testemail@something.com"}
117
- assert_equal user_hash, @app.env["raygun.affected_user"]
118
- end
119
- end
120
-
121
- def test_with_proc_for_mapping
122
- Raygun.configuration.affected_user_method = :user_with_full_details
123
- Raygun.configuration.affected_user_mapping = Raygun::AffectedUser::DEFAULT_MAPPING.merge({
124
- full_name: ->(user) { "#{user.first_name} #{user.last_name}" }
125
- })
126
-
127
- assert @controller.respond_to?(Raygun.configuration.affected_user_method, true)
128
-
129
- begin
130
- @middleware.call("action_controller.instance" => @controller)
131
- rescue TestException
132
- user_hash = {:isAnonymous=>false, :identifier=>123, :email=>"testemail@something.com", :fullName => "Taylor Lodge", :firstName => "Taylor"}
133
- assert_equal user_hash, @app.env["raygun.affected_user"]
134
- end
135
- end
136
- end
1
+ require_relative "../test_helper.rb"
2
+ require 'ostruct'
3
+ require 'raygun/middleware/rails_insert_affected_user'
4
+
5
+ class AffectedUserTest < Raygun::UnitTest
6
+
7
+ class TestException < StandardError; end
8
+
9
+ class MockController
10
+
11
+ def user_with_email
12
+ OpenStruct.new(id: 123, email: "testemail@something.com")
13
+ end
14
+
15
+ def user_with_login
16
+ OpenStruct.new(login: "topsecret")
17
+ end
18
+
19
+ def user_with_full_details
20
+ OpenStruct.new(id: 123, email: "testemail@something.com", first_name: "Taylor", last_name: "Lodge")
21
+ end
22
+
23
+ def user_as_string
24
+ "some-string-identifier"
25
+ end
26
+
27
+ def no_logged_in_user
28
+ end
29
+
30
+ private
31
+
32
+ def private_current_user
33
+ user_with_email
34
+ end
35
+
36
+ end
37
+
38
+ class MockApp
39
+ attr_accessor :env
40
+
41
+ def call(env)
42
+ @env = env
43
+ raise TestException.new
44
+ end
45
+ end
46
+
47
+ def setup
48
+ super
49
+ @client = Raygun::Client.new
50
+ fake_successful_entry
51
+
52
+ @app = MockApp.new
53
+ @controller = MockController.new
54
+ @middleware = Raygun::Middleware::RailsInsertAffectedUser.new(@app)
55
+ end
56
+
57
+ def test_inserting_user_object_with_email
58
+ Raygun.configuration.affected_user_method = :user_with_email
59
+ assert @controller.respond_to?(Raygun.configuration.affected_user_method)
60
+
61
+ begin
62
+ @middleware.call("action_controller.instance" => @controller)
63
+ rescue TestException
64
+ user_hash = { :identifier => 123, :email => "testemail@something.com", :isAnonymous => false }
65
+ assert_equal user_hash, @app.env["raygun.affected_user"]
66
+ end
67
+ end
68
+
69
+ def test_changing_method_mapping
70
+ Raygun.configuration.affected_user_method = :user_with_login
71
+ Raygun.configuration.affected_user_mapping = {
72
+ identifier: :login
73
+ }
74
+
75
+ assert @controller.respond_to?(Raygun.configuration.affected_user_method)
76
+
77
+ begin
78
+ @middleware.call("action_controller.instance" => @controller)
79
+ rescue TestException
80
+ user_hash = { :identifier => "topsecret", :isAnonymous => false }
81
+ assert_equal user_hash, @app.env["raygun.affected_user"]
82
+ end
83
+ end
84
+
85
+ def test_inserting_user_as_plain_string
86
+ Raygun.configuration.affected_user_method = :user_as_string
87
+ assert @controller.respond_to?(Raygun.configuration.affected_user_method)
88
+
89
+ begin
90
+ @middleware.call("action_controller.instance" => @controller)
91
+ rescue TestException
92
+ user_hash = { :identifier => "some-string-identifier", :isAnonymous => true }
93
+ assert_equal user_hash, @app.env["raygun.affected_user"]
94
+ end
95
+ end
96
+
97
+ def test_with_a_nil_user
98
+ Raygun.configuration.affected_user_method = :no_logged_in_user
99
+ assert @controller.respond_to?(Raygun.configuration.affected_user_method)
100
+
101
+ begin
102
+ @middleware.call("action_controller.instance" => @controller)
103
+ rescue TestException
104
+ user_hash = { :isAnonymous => true }
105
+ assert_equal user_hash, @app.env["raygun.affected_user"]
106
+ end
107
+ end
108
+
109
+ def test_with_private_method
110
+ Raygun.configuration.affected_user_method = :private_current_user
111
+ assert @controller.respond_to?(Raygun.configuration.affected_user_method, true)
112
+
113
+ begin
114
+ @middleware.call("action_controller.instance" => @controller)
115
+ rescue TestException
116
+ user_hash = {:isAnonymous=>false, :identifier=>123, :email=>"testemail@something.com"}
117
+ assert_equal user_hash, @app.env["raygun.affected_user"]
118
+ end
119
+ end
120
+
121
+ def test_with_proc_for_mapping
122
+ Raygun.configuration.affected_user_method = :user_with_full_details
123
+ Raygun.configuration.affected_user_mapping = Raygun::AffectedUser::DEFAULT_MAPPING.merge({
124
+ full_name: ->(user) { "#{user.first_name} #{user.last_name}" }
125
+ })
126
+
127
+ assert @controller.respond_to?(Raygun.configuration.affected_user_method, true)
128
+
129
+ begin
130
+ @middleware.call("action_controller.instance" => @controller)
131
+ rescue TestException
132
+ user_hash = {:isAnonymous=>false, :identifier=>123, :email=>"testemail@something.com", :fullName => "Taylor Lodge", :firstName => "Taylor"}
133
+ assert_equal user_hash, @app.env["raygun.affected_user"]
134
+ end
135
+ end
136
+ end