class SchemaAuthorizationTest
Constants
- COLUMNS
- TABLE_NAME
- USERS
Public Instance Methods
setup()
click to toggle source
# File activerecord/test/cases/adapters/postgresql/schema_authorization_test.rb, line 18 def setup @connection = ActiveRecord::Base.connection @connection.execute "SET search_path TO '$user',public" set_session_auth USERS.each do |u| @connection.execute "CREATE USER #{u}" rescue nil @connection.execute "CREATE SCHEMA AUTHORIZATION #{u}" rescue nil set_session_auth u @connection.execute "CREATE TABLE #{TABLE_NAME} (#{COLUMNS.join(',')})" @connection.execute "INSERT INTO #{TABLE_NAME} (name) VALUES ('#{u}')" set_session_auth end end
test_auth_with_bind()
click to toggle source
# File activerecord/test/cases/adapters/postgresql/schema_authorization_test.rb, line 67 def test_auth_with_bind assert_nothing_raised do set_session_auth USERS.each do |u| @connection.clear_cache! set_session_auth u assert_equal u, @connection.select_value("SELECT name FROM #{TABLE_NAME} WHERE id = $1", "SQL", [bind_param(1)]) set_session_auth end end end
test_schema_invisible()
click to toggle source
# File activerecord/test/cases/adapters/postgresql/schema_authorization_test.rb, line 41 def test_schema_invisible assert_raise(ActiveRecord::StatementInvalid) do set_session_auth @connection.execute "SELECT * FROM #{TABLE_NAME}" end end
test_sequence_schema_caching()
click to toggle source
# File activerecord/test/cases/adapters/postgresql/schema_authorization_test.rb, line 80 def test_sequence_schema_caching assert_nothing_raised do USERS.each do |u| set_session_auth u st = SchemaThing.new name: "TEST1" st.save! st = SchemaThing.new id: 5, name: "TEST2" st.save! set_session_auth end end end
test_session_auth=()
click to toggle source
# File activerecord/test/cases/adapters/postgresql/schema_authorization_test.rb, line 48 def test_session_auth= assert_raise(ActiveRecord::StatementInvalid) do @connection.session_auth = "DEFAULT" @connection.execute "SELECT * FROM #{TABLE_NAME}" end end
test_setting_auth_clears_stmt_cache()
click to toggle source
# File activerecord/test/cases/adapters/postgresql/schema_authorization_test.rb, line 55 def test_setting_auth_clears_stmt_cache assert_nothing_raised do set_session_auth USERS.each do |u| set_session_auth u assert_equal u, @connection.select_value("SELECT name FROM #{TABLE_NAME} WHERE id = 1") set_session_auth end end end
test_tables_in_current_schemas()
click to toggle source
# File activerecord/test/cases/adapters/postgresql/schema_authorization_test.rb, line 93 def test_tables_in_current_schemas assert_not_includes @connection.tables, TABLE_NAME USERS.each do |u| set_session_auth u assert_includes @connection.tables, TABLE_NAME set_session_auth end end
Private Instance Methods
bind_param(value)
click to toggle source
# File activerecord/test/cases/adapters/postgresql/schema_authorization_test.rb, line 107 def bind_param(value) ActiveRecord::Relation::QueryAttribute.new(nil, value, ActiveRecord::Type::Value.new) end
set_session_auth(auth = nil)
click to toggle source
# File activerecord/test/cases/adapters/postgresql/schema_authorization_test.rb, line 103 def set_session_auth(auth = nil) @connection.session_auth = auth || "default" end