forked from rails/activerecord-session_store
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlogger_silencer_test.rb
64 lines (55 loc) · 1.62 KB
/
logger_silencer_test.rb
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
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
get "/set_session_value"
end
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
end