66require_relative '../../../app/web/telemetry/sentry_logs'
77
88RSpec . describe Html2rss ::Web ::SentryLogs do
9+ let ( :logger_class ) do
10+ Struct . new ( :captured_call ) do
11+ %i[ debug info warn error fatal ] . each do |log_level |
12+ define_method ( log_level ) do |message , **attributes |
13+ captured_call [ :level ] = log_level
14+ captured_call [ :message ] = message
15+ captured_call [ :attributes ] = attributes
16+ end
17+ end
18+ end
19+ end
20+
921 let ( :captured_call ) { { } }
1022 let ( :sentry_logger ) { build_sentry_logger }
1123 let ( :fake_sentry ) do
5365 expect ( captured_call ) . to eq ( { } )
5466 end
5567
56- def build_sentry_logger
57- logger_class = Struct . new ( :captured_call ) do
58- def info ( message , **attributes )
59- captured_call [ :message ] = message
60- captured_call [ :attributes ] = attributes
61- end
62- end
68+ it 'falls back to info when an unsupported level is requested' , :aggregate_failures do
69+ stub_const ( 'Sentry' , fake_sentry )
70+ allow ( Html2rss ::Web ::RuntimeEnv ) . to receive_messages ( sentry_enabled? : true , sentry_logs_enabled? : true )
71+ allow ( described_class ) . to receive ( :logger ) . and_return ( sentry_logger )
72+
73+ described_class . emit ( raw_payload . merge ( level : :unknown_method ) )
74+
75+ expect ( captured_call ) . to include ( :message , :attributes )
76+ expect ( captured_call . fetch ( :message ) ) . to eq ( 'auth.authenticate' )
77+ end
6378
79+ def build_sentry_logger
6480 logger_class . new ( captured_call )
6581 end
6682
@@ -71,6 +87,7 @@ def expect_forwarded_payload
7187 end
7288
7389 def expect_forwarded_message
90+ expect ( captured_call . fetch ( :level ) ) . to eq ( :info )
7491 expect ( captured_call . fetch ( :message ) ) . to eq ( 'auth.authenticate' )
7592 end
7693
0 commit comments