-
Notifications
You must be signed in to change notification settings - Fork 190
Expand file tree
/
Copy pathlogger_silencer_test.rb
More file actions
82 lines (71 loc) · 2.08 KB
/
Copy pathlogger_silencer_test.rb
File metadata and controls
82 lines (71 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
require 'helper'
require "stringio"
class LoggerSilencerTest < ActionDispatch::IntegrationTest
class TestController < ActionController::Base
def set_session_value
raise "missing session!" unless session
session[:foo] = params[:foo] || "bar"
head :ok
end
def get_session_value
render :plain => "foo: #{session[:foo].inspect}"
end
end
def setup
session_class = ActiveRecord::SessionStore::Session
session_class.drop_table! rescue nil
session_class.create_table!
ActionDispatch::Session::ActiveRecordStore.session_class = session_class
end
%w{ session sql_bypass }.each do |class_name|
define_method("test_#{class_name}_store_does_not_log_sql") do
with_store class_name do
with_fake_logger do
with_test_route_set do
get "/set_session_value"
get "/get_session_value"
assert_no_match(/INSERT/, fake_logger.string)
assert_no_match(/SELECT/, fake_logger.string)
end
end
end
end
end
def test_log_silencer_with_logger_not_raise_exception
with_logger ActiveSupport::Logger.new(Tempfile.new("tempfile")) do
with_test_route_set do
assert_nothing_raised do
get "/set_session_value"
end
end
end
end
def test_secure_does_not_log_update_sql
with_fake_logger do
create_old_session!
ActiveRecord::SessionStore::Session.find_each(&:secure!)
assert_no_match(/UPDATE/, fake_logger.string)
end
end
private
def with_logger(logger)
original_logger = ActiveRecord::Base.logger
ActiveRecord::Base.logger = logger
yield
ensure
ActiveRecord::Base.logger = original_logger
end
def with_fake_logger(&block)
with_logger(ActiveSupport::Logger.new(fake_logger), &block)
end
def fake_logger
@fake_logger ||= StringIO.new
end
def create_old_session!
session = ActionDispatch::Session::ActiveRecordStore.session_class.new(
session_id: "original_session_id",
data: "data"
)
session.save
end
end