Skip to content

Commit

Permalink
Filtering respects the built-in logging filters.
Browse files Browse the repository at this point in the history
  • Loading branch information
Jon Yurek committed Oct 15, 2008
1 parent 69d3025 commit 29d5f8b
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 5 deletions.
8 changes: 5 additions & 3 deletions lib/hoptoad_notifier.rb
Expand Up @@ -179,7 +179,7 @@ def exception_to_data exception #:nodoc:
if self.respond_to? :session
data[:session] = {
:key => session.instance_variable_get("@session_id"),
:data => session.instance_variable_get("@data")
:data => session.instance_variable_get("@data").dup
}
end

Expand All @@ -198,9 +198,11 @@ def normalize_notice(notice) #:nodoc:
def clean_notice(notice) #:nodoc:
notice[:backtrace] = clean_hoptoad_backtrace(notice[:backtrace])
if notice[:request].is_a?(Hash) && notice[:request][:params].is_a?(Hash)
notice[:request][:params] = filter_parameters(notice[:request][:params]) if respond_to?(:filter_parameters)
notice[:request][:params] = clean_hoptoad_params(notice[:request][:params])
end
if notice[:environment].is_a?(Hash)
notice[:environment] = filter_parameters(notice[:environment]) if respond_to?(:filter_parameters)
notice[:environment] = clean_hoptoad_environment(notice[:environment])
end
clean_non_serializable_data(notice)
Expand Down Expand Up @@ -245,15 +247,15 @@ def clean_hoptoad_backtrace backtrace #:nodoc:

def clean_hoptoad_params params #:nodoc:
params.each do |k, v|
params[k] = "<filtered>" if HoptoadNotifier.params_filters.any? do |filter|
params[k] = "[FILTERED]" if HoptoadNotifier.params_filters.any? do |filter|
k.to_s.match(/#{filter}/)
end
end
end

def clean_hoptoad_environment env #:nodoc:
env.each do |k, v|
env[k] = "<filtered>" if HoptoadNotifier.environment_filters.any? do |filter|
env[k] = "[FILTERED]" if HoptoadNotifier.environment_filters.any? do |filter|
k.to_s.match(/#{filter}/)
end
end
Expand Down
17 changes: 15 additions & 2 deletions test/hoptoad_notifier_test.rb
Expand Up @@ -112,6 +112,19 @@ def rescue_action e
assert_equal %w( 1234 1234 ), @controller.send(:clean_hoptoad_backtrace, %w( foo bar ))
end

should "use standard rails logging filters on params and env" do
::HoptoadController.class_eval do
filter_parameter_logging :ghi
end

expected = {"notice" => {"request" => {"params" => {"abc" => "123", "def" => "456", "ghi" => "[FILTERED]"}},
"environment" => {"abc" => "123", "ghi" => "[FILTERED]"}}}
notice = {"notice" => {"request" => {"params" => {"abc" => "123", "def" => "456", "ghi" => "789"}},
"environment" => {"abc" => "123", "ghi" => "789"}}}
assert @controller.respond_to?(:filter_parameters)
assert_equal( expected[:notice], @controller.send(:clean_notice, notice)[:notice] )
end

should "add filters to the params filters" do
assert_difference "HoptoadNotifier.params_filters.length", 2 do
HoptoadNotifier.configure do |config|
Expand All @@ -123,7 +136,7 @@ def rescue_action e
assert HoptoadNotifier.params_filters.include?( "abc" )
assert HoptoadNotifier.params_filters.include?( "def" )

assert_equal( {:abc => "<filtered>", :def => "<filtered>", :ghi => "789"},
assert_equal( {:abc => "[FILTERED]", :def => "[FILTERED]", :ghi => "789"},
@controller.send(:clean_hoptoad_params, :abc => "123", :def => "456", :ghi => "789" ) )
end

Expand All @@ -138,7 +151,7 @@ def rescue_action e
assert HoptoadNotifier.environment_filters.include?( "secret" )
assert HoptoadNotifier.environment_filters.include?( "supersecret" )

assert_equal( {:secret => "<filtered>", :supersecret => "<filtered>", :ghi => "789"},
assert_equal( {:secret => "[FILTERED]", :supersecret => "[FILTERED]", :ghi => "789"},
@controller.send(:clean_hoptoad_environment, :secret => "123", :supersecret => "456", :ghi => "789" ) )
end

Expand Down

0 comments on commit 29d5f8b

Please sign in to comment.