Skip to content

Commit cd0f200

Browse files
committed
Add tests
1 parent 4293e86 commit cd0f200

4 files changed

Lines changed: 65 additions & 23 deletions

File tree

sentry-rails/spec/sentry/rails/log_subscribers/action_controller_subscriber_spec.rb

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434

3535
expect(log_event[:attributes][:method][:value]).to eq("GET")
3636
expect(log_event[:attributes][:path][:value]).to eq("/world")
37-
expect(log_event[:attributes][:format][:value]).to eq(:html)
37+
expect(log_event[:attributes][:format][:value]).to eq("\"html\"")
3838
expect(log_event[:attributes]["sentry.origin"][:value]).to eq("auto.log.rails.log_subscriber")
3939
end
4040

@@ -275,8 +275,10 @@
275275
log_event = sentry_logs.find { |log| log[:body] == "HelloController#world" }
276276
expect(log_event).not_to be_nil
277277
expect(log_event[:attributes][:params]).to be_present
278-
expect(log_event[:attributes][:params][:value]).to include("safe_param" => "value")
279-
expect(log_event[:attributes][:params][:value]).to include("password" => "[FILTERED]")
278+
279+
params = JSON.parse(log_event[:attributes][:params][:value])
280+
expect(params).to include("safe_param" => "value")
281+
expect(params).to include("password" => "[FILTERED]")
280282
end
281283

282284
it "filters sensitive parameter names" do
@@ -295,7 +297,7 @@
295297
log_event = sentry_logs.find { |log| log[:body] == "HelloController#world" }
296298
expect(log_event).not_to be_nil
297299

298-
params = log_event[:attributes][:params][:value]
300+
params = JSON.parse(log_event[:attributes][:params][:value])
299301
expect(params).to include("normal_param" => "value")
300302
expect(params).to include("password" => "[FILTERED]")
301303
expect(params).to include("api_key" => "[FILTERED]")
@@ -323,7 +325,7 @@
323325
log_event = sentry_logs.find { |log| log[:body] == "HelloController#world" }
324326
expect(log_event).not_to be_nil
325327

326-
params = log_event[:attributes][:params][:value]
328+
params = JSON.parse(log_event[:attributes][:params][:value])
327329
expect(params).to include("normal_param" => "value")
328330
expect(params["user"]).to include("name" => "John")
329331
expect(params["user"]).to include("password" => "[FILTERED]")

sentry-rails/spec/sentry/rails/log_subscribers/action_mailer_subscriber_spec.rb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
expect(log_event[:attributes][:mailer][:value]).to eq("UserMailer")
3838
expect(log_event[:attributes][:duration_ms][:value]).to be > 0
3939
expect(log_event[:attributes][:perform_deliveries][:value]).to be true
40-
expect(log_event[:attributes][:delivery_method][:value]).to eq(:test)
40+
expect(log_event[:attributes][:delivery_method][:value]).to eq("\"test\"")
4141
expect(log_event[:attributes]["sentry.origin"][:value]).to eq("auto.log.rails.log_subscriber")
4242
expect(log_event[:attributes][:date]).to be_present
4343
end
@@ -76,7 +76,7 @@
7676

7777
log_event = sentry_logs.find { |log| log[:body] == "Email delivered via NotificationMailer" }
7878
expect(log_event).not_to be_nil
79-
expect(log_event[:attributes][:delivery_method][:value]).to eq(:smtp)
79+
expect(log_event[:attributes][:delivery_method][:value]).to eq("\"smtp\"")
8080
end
8181

8282
it "includes date when available" do
@@ -179,12 +179,12 @@
179179
expect(log_event).not_to be_nil
180180
expect(log_event[:attributes][:params]).to be_present
181181

182-
params = log_event[:attributes][:params][:value]
182+
params = JSON.parse(log_event[:attributes][:params][:value])
183183

184-
expect(params).to include(user_id: 123, safe_param: "value")
185-
expect(params[:password]).to eq("[FILTERED]")
186-
expect(params[:api_key]).to eq("[FILTERED]")
187-
expect(params).to include(email_address: "user@example.com", subject: "Welcome!")
184+
expect(params).to include("user_id" => 123, "safe_param" => "value")
185+
expect(params["password"]).to eq("[FILTERED]")
186+
expect(params["api_key"]).to eq("[FILTERED]")
187+
expect(params).to include("email_address" => "user@example.com", "subject" => "Welcome!")
188188
end
189189
end
190190

sentry-rails/spec/sentry/rails/log_subscribers/active_job_subscriber_spec.rb

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
expect(attributes[:job_id][:value]).to be_a(String)
5858
expect(attributes[:queue_name][:value]).to eq("default")
5959
expect(attributes[:executions][:value]).to eq(1)
60-
expect(attributes[:priority][:value]).to be_a(Integer).or be_nil
60+
expect(attributes[:priority][:value]).to be_a(Integer).or(eq("null")).or be_nil
6161
end
6262

6363
it "includes adapter information when available" do
@@ -122,8 +122,9 @@ def perform(*args, **kwargs)
122122
expect(log_event).not_to be_nil
123123

124124
attributes = log_event[:attributes]
125-
expect(attributes[:arguments][:value]).to be_a(Array)
126-
expect(attributes[:arguments][:value]).to include("safe_arg")
125+
arguments = JSON.parse(attributes[:arguments][:value])
126+
expect(arguments).to be_a(Array)
127+
expect(arguments).to include("safe_arg")
127128
end
128129

129130
it "filters sensitive arguments" do
@@ -147,11 +148,11 @@ def perform(password:, token:, safe_data:)
147148
expect(log_event).not_to be_nil
148149

149150
attributes = log_event[:attributes]
150-
arguments = attributes[:arguments][:value]
151+
arguments = JSON.parse(attributes[:arguments][:value])
151152

152-
expect(arguments.first).to include(safe_data: "public")
153-
expect(arguments.first).to include(password: "[FILTERED]")
154-
expect(arguments.first).to include(token: "[FILTERED]")
153+
expect(arguments.first).to include("safe_data" => "public")
154+
expect(arguments.first).to include("password" => "[FILTERED]")
155+
expect(arguments.first).to include("token" => "[FILTERED]")
155156

156157
Rails.application.config.filter_parameters = original_filter_params
157158
end
@@ -175,7 +176,7 @@ def perform(short_string, long_string)
175176
expect(log_event).not_to be_nil
176177

177178
attributes = log_event[:attributes]
178-
arguments = attributes[:arguments][:value]
179+
arguments = JSON.parse(attributes[:arguments][:value])
179180

180181
expect(arguments).to include("short")
181182
expect(arguments).to include("[FILTERED: 150 chars]")
@@ -204,11 +205,11 @@ def perform(string_arg, hash_arg, number_arg, array_arg)
204205
expect(log_event).not_to be_nil
205206

206207
attributes = log_event[:attributes]
207-
arguments = attributes[:arguments][:value]
208+
arguments = JSON.parse(attributes[:arguments][:value])
208209

209210
expect(arguments[0]).to eq("string_value")
210-
expect(arguments[1]).to include(safe_key: "value")
211-
expect(arguments[1]).to include(password: "[FILTERED]")
211+
expect(arguments[1]).to include("safe_key" => "value")
212+
expect(arguments[1]).to include("password" => "[FILTERED]")
212213
expect(arguments[2]).to eq(42)
213214
expect(arguments[3]).to eq([1, 2, 3])
214215
end

sentry-ruby/spec/sentry/structured_logger_spec.rb

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,45 @@
6767
expect(log_event[:attributes]["sentry.message.parameter.1"]).to eql({ value: "Monday", type: "string" })
6868
end
6969

70+
it "logs with nested hash attributes" do
71+
attributes = { number: 312, string: "hello" }
72+
73+
Sentry.logger.public_send(level, "Hello world", extra: attributes)
74+
75+
expect(sentry_logs).to_not be_empty
76+
77+
log_event = sentry_logs.last
78+
79+
expect(log_event[:level]).to eql(level)
80+
expect(log_event[:attributes][:extra]).to eql({ type: "string", value: attributes.to_json })
81+
end
82+
83+
it "logs with array attributes" do
84+
attributes = [1, 2, 3, "hello"]
85+
86+
Sentry.logger.public_send(level, "Hello world", extra: attributes)
87+
88+
expect(sentry_logs).to_not be_empty
89+
90+
log_event = sentry_logs.last
91+
92+
expect(log_event[:level]).to eql(level)
93+
expect(log_event[:attributes][:extra]).to eql({ type: "string", value: attributes.to_json })
94+
end
95+
96+
it "logs with date in attributes" do
97+
attributes = Date.today
98+
99+
Sentry.logger.public_send(level, "Hello world", extra: attributes)
100+
101+
expect(sentry_logs).to_not be_empty
102+
103+
log_event = sentry_logs.last
104+
105+
expect(log_event[:level]).to eql(level)
106+
expect(log_event[:attributes][:extra]).to eql({ type: "string", value: attributes.to_json })
107+
end
108+
70109
it "logs with hash-based template parameters" do
71110
Sentry.logger.public_send(level, "Hello %{name}, it is %{day}", name: "Jane", day: "Monday")
72111

0 commit comments

Comments
 (0)