Skip to content

Commit 610f627

Browse files
committed
Better support for different ActiveSupport versions, add test for config.filter_parameters
1 parent 84348b7 commit 610f627

1 file changed

Lines changed: 47 additions & 12 deletions

File tree

spec/graphql/tracing/perfetto_trace_spec.rb

Lines changed: 47 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -185,28 +185,63 @@ def self.detailed_trace?(q)
185185
check_snapshot(data, "example-rails-#{Rails::VERSION::MAJOR}-#{Rails::VERSION::MINOR}.json")
186186
end
187187

188-
it "filters params with ActiveSupport" do
188+
it "filters params with Rails.application.config.filter_parameters" do
189189
query_str = 'query getStuff { secretField(cipher: "abcdef") { greeting } }'
190-
res = PerfettoSchema.execute(query_str, validate: false)
190+
res = PerfettoSchema.execute(query_str)
191191
json = res.context.query.current_trace.write(file: nil, debug_json: true)
192192
assert trace_includes?(json, "abcdef")
193193
refute trace_includes?(json, "FILTERED")
194194

195-
prev_fp = ActiveSupport.filter_parameters
196-
ActiveSupport.filter_parameters = ["cipher"]
195+
if Rails.application.present?
196+
prev_fp = Rails.application.config.filter_parameters
197+
Rails.application.config.filter_parameters = ["ciph"]
198+
else
199+
Rails.application = OpenStruct.new(config: OpenStruct.new(filter_parameters: ["ciph"]))
200+
end
197201
res = PerfettoSchema.execute(query_str)
198202
json = res.context.query.current_trace.write(file: nil, debug_json: true)
199203
refute trace_includes?(json, "abcdef")
200-
assert trace_includes?(json, "[FILTERED]")
204+
assert trace_includes?(json, "FILTERED")
205+
ensure
206+
if prev_fp
207+
Rails.application.config.filter_parameters = prev_fp
208+
else
209+
Rails.application = nil
210+
end
211+
end
201212

202-
ActiveSupport.filter_parameters = ["password"]
203-
res = PerfettoSchema.execute('query getStuff { secretField(input: [[{ password: "jklmn" }]]) { greeting } }')
213+
it "filters params with ActiveSupport" do
214+
query_str = 'query getStuff { secretField(cipher: "abcdef") { greeting } }'
215+
res = PerfettoSchema.execute(query_str)
204216
json = res.context.query.current_trace.write(file: nil, debug_json: true)
205-
assert trace_includes?(json, "password"), "Name is retained"
206-
refute trace_includes?(json, "jklmn"), "Value is removed"
207-
assert_includes json, "[FILTERED]"
208-
ensure
209-
ActiveSupport.filter_parameters = prev_fp
217+
assert trace_includes?(json, "abcdef")
218+
refute trace_includes?(json, "FILTERED")
219+
220+
query_str = 'query getStuff { secretField(cipher: "abcdef") { greeting } }'
221+
res = PerfettoSchema.execute(query_str)
222+
json = res.context.query.current_trace.write(file: nil, debug_json: true)
223+
assert trace_includes?(json, "abcdef")
224+
refute trace_includes?(json, "FILTERED")
225+
226+
if ActiveSupport.respond_to?(:filter_parameters=)
227+
begin
228+
prev_fp = ActiveSupport.filter_parameters
229+
ActiveSupport.filter_parameters = ["cipher"]
230+
res = PerfettoSchema.execute(query_str)
231+
json = res.context.query.current_trace.write(file: nil, debug_json: true)
232+
refute trace_includes?(json, "abcdef")
233+
assert trace_includes?(json, "[FILTERED]")
234+
235+
ActiveSupport.filter_parameters = ["password"]
236+
res = PerfettoSchema.execute('query getStuff { secretField(input: [[{ password: "jklmn" }]]) { greeting } }')
237+
json = res.context.query.current_trace.write(file: nil, debug_json: true)
238+
assert trace_includes?(json, "password"), "Name is retained"
239+
refute trace_includes?(json, "jklmn"), "Value is removed"
240+
assert_includes json, "[FILTERED]"
241+
ensure
242+
ActiveSupport.filter_parameters = prev_fp
243+
end
244+
end
210245
end
211246

212247
it "filters params without ActiveSupport" do

0 commit comments

Comments
 (0)