11defmodule Sentry.LoggerBackendTest do
2- use ExUnit.Case
3-
4- import Mox
2+ use ExUnit.Case , async: false
53
4+ alias Sentry.TestEnvironmentHelper
65 alias Sentry.TestGenServer
76
87 require Logger
98
109 @ moduletag :capture_log
1110
12- setup :set_mox_global
13- setup :verify_on_exit!
14-
1511 setup do
16- { :ok , _ } = Logger . add_backend ( Sentry.LoggerBackend )
12+ assert { :ok , _ } = Logger . add_backend ( Sentry.LoggerBackend )
1713
18- ExUnit.Callbacks . on_exit ( fn ->
14+ on_exit ( fn ->
1915 Logger . configure_backend ( Sentry.LoggerBackend , [ ] )
2016 :ok = Logger . remove_backend ( Sentry.LoggerBackend )
2117 end )
2218 end
2319
24- defp expect_sender_call do
25- pid = self ( )
26- ref = make_ref ( )
27-
28- expect ( Sentry.TransportSenderMock , :send_async , fn event ->
29- send ( pid , { ref , event } )
30- :ok
31- end )
32-
33- ref
34- end
35-
3620 test "a logged raised exception is reported" do
37- ref = expect_sender_call ( )
21+ ref = register_before_send ( )
3822
3923 Task . start ( fn ->
4024 raise "Unique Error"
@@ -47,7 +31,7 @@ defmodule Sentry.LoggerBackendTest do
4731 end
4832
4933 test "a GenServer throw is reported" do
50- ref = expect_sender_call ( )
34+ ref = register_before_send ( )
5135
5236 pid = start_supervised! ( TestGenServer )
5337 Sentry.TestGenServer . throw ( pid )
@@ -61,7 +45,7 @@ defmodule Sentry.LoggerBackendTest do
6145 end
6246
6347 test "abnormal GenServer exit is reported" do
64- ref = expect_sender_call ( )
48+ ref = register_before_send ( )
6549
6650 pid = start_supervised! ( TestGenServer )
6751 Sentry.TestGenServer . exit ( pid )
@@ -75,7 +59,7 @@ defmodule Sentry.LoggerBackendTest do
7559 end
7660
7761 test "bad function call causing GenServer crash is reported" do
78- ref = expect_sender_call ( )
62+ ref = register_before_send ( )
7963
8064 pid = start_supervised! ( TestGenServer )
8165
@@ -96,7 +80,7 @@ defmodule Sentry.LoggerBackendTest do
9680 end
9781
9882 test "GenServer timeout is reported" do
99- ref = expect_sender_call ( )
83+ ref = register_before_send ( )
10084
10185 pid = start_supervised! ( TestGenServer )
10286
@@ -120,7 +104,7 @@ defmodule Sentry.LoggerBackendTest do
120104 end
121105
122106 test "captures errors from spawn/0 in Plug app" do
123- ref = expect_sender_call ( )
107+ ref = register_before_send ( )
124108
125109 :get
126110 |> Plug.Test . conn ( "/spawn_error_route" )
@@ -135,7 +119,7 @@ defmodule Sentry.LoggerBackendTest do
135119 test "sends two errors when a Plug process crashes if cowboy domain is not excluded" do
136120 Logger . configure_backend ( Sentry.LoggerBackend , excluded_domains: [ ] )
137121
138- ref = expect_sender_call ( )
122+ ref = register_before_send ( )
139123
140124 { :ok , _plug_pid } = Plug.Cowboy . http ( Sentry.ExamplePlugApplication , [ ] , port: 8003 )
141125
@@ -152,7 +136,7 @@ defmodule Sentry.LoggerBackendTest do
152136 excluded_domains: [ :test_domain ]
153137 )
154138
155- ref = expect_sender_call ( )
139+ ref = register_before_send ( )
156140
157141 Logger . error ( "no domain" )
158142 Logger . error ( "test_domain" , domain: [ :test_domain ] )
@@ -164,7 +148,7 @@ defmodule Sentry.LoggerBackendTest do
164148 test "includes Logger metadata for keys configured to be included" do
165149 Logger . configure_backend ( Sentry.LoggerBackend , metadata: [ :string , :number , :map , :list ] )
166150
167- ref = expect_sender_call ( )
151+ ref = register_before_send ( )
168152
169153 pid = start_supervised! ( TestGenServer )
170154 Sentry.TestGenServer . add_logger_metadata ( pid , :string , "string" )
@@ -182,7 +166,7 @@ defmodule Sentry.LoggerBackendTest do
182166
183167 test "does not include Logger metadata when disabled" do
184168 Logger . configure_backend ( Sentry.LoggerBackend , metadata: [ ] )
185- ref = expect_sender_call ( )
169+ ref = register_before_send ( )
186170
187171 pid = start_supervised! ( TestGenServer )
188172 Sentry.TestGenServer . add_logger_metadata ( pid , :string , "string" )
@@ -197,7 +181,7 @@ defmodule Sentry.LoggerBackendTest do
197181
198182 test "supports :all for Logger metadata" do
199183 Logger . configure_backend ( Sentry.LoggerBackend , metadata: :all )
200- ref = expect_sender_call ( )
184+ ref = register_before_send ( )
201185
202186 pid = start_supervised! ( TestGenServer )
203187 Sentry.TestGenServer . add_logger_metadata ( pid , :string , "string" )
@@ -220,7 +204,7 @@ defmodule Sentry.LoggerBackendTest do
220204 test "sends all messages if :capture_log_messages is true" do
221205 Logger . configure_backend ( Sentry.LoggerBackend , capture_log_messages: true )
222206
223- ref = expect_sender_call ( )
207+ ref = register_before_send ( )
224208
225209 Logger . error ( "Testing" )
226210
@@ -236,7 +220,7 @@ defmodule Sentry.LoggerBackendTest do
236220 capture_log_messages: true
237221 )
238222
239- ref = expect_sender_call ( )
223+ ref = register_before_send ( )
240224
241225 Sentry.Context . set_user_context ( % { user_id: 3 } )
242226 Logger . log ( :warning , "Testing" )
@@ -252,7 +236,7 @@ defmodule Sentry.LoggerBackendTest do
252236 test "does not send debug messages when configured to :error" do
253237 Logger . configure_backend ( Sentry.LoggerBackend , capture_log_messages: true )
254238
255- ref = expect_sender_call ( )
239+ ref = register_before_send ( )
256240
257241 Sentry.Context . set_user_context ( % { user_id: 3 } )
258242
@@ -268,7 +252,7 @@ defmodule Sentry.LoggerBackendTest do
268252
269253 test "Sentry metadata and extra context are retrieved from callers" do
270254 Logger . configure_backend ( Sentry.LoggerBackend , capture_log_messages: true )
271- ref = expect_sender_call ( )
255+ ref = register_before_send ( )
272256
273257 Sentry.Context . set_extra_context ( % { day_of_week: "Friday" } )
274258 Sentry.Context . set_user_context ( % { user_id: 3 } )
@@ -288,7 +272,7 @@ defmodule Sentry.LoggerBackendTest do
288272
289273 test "handles malformed :callers metadata" do
290274 Logger . configure_backend ( Sentry.LoggerBackend , capture_log_messages: true )
291- ref = expect_sender_call ( )
275+ ref = register_before_send ( )
292276
293277 dead_pid = spawn ( fn -> :ok end )
294278
@@ -304,7 +288,7 @@ defmodule Sentry.LoggerBackendTest do
304288 capture_log_messages: true
305289 )
306290
307- ref = expect_sender_call ( )
291+ ref = register_before_send ( )
308292
309293 Logger . log ( :warning , "warn" )
310294
@@ -326,4 +310,18 @@ defmodule Sentry.LoggerBackendTest do
326310 exit ( :shutdown )
327311 end
328312 end
313+
314+ defp register_before_send ( _context \\ % { } ) do
315+ pid = self ( )
316+ ref = make_ref ( )
317+
318+ TestEnvironmentHelper . modify_env ( :sentry ,
319+ before_send_event: fn event ->
320+ send ( pid , { ref , event } )
321+ false
322+ end
323+ )
324+
325+ ref
326+ end
329327end
0 commit comments