diff options
author | Gannon McGibbon <gannon.mcgibbon@gmail.com> | 2018-11-15 19:55:47 -0500 |
---|---|---|
committer | Gannon McGibbon <gannon.mcgibbon@gmail.com> | 2018-11-22 13:53:23 -0500 |
commit | 192b7bcfacd550312b37e74d858b63b77d2469d5 (patch) | |
tree | 553569b30ced5a658e5896c3edc730071f1c95fe /activerecord/test/cases/statement_invalid_test.rb | |
parent | 47ab6b36d794e68e76dcb45463c0d2a5bdba2104 (diff) | |
download | rails-192b7bcfacd550312b37e74d858b63b77d2469d5.tar.gz rails-192b7bcfacd550312b37e74d858b63b77d2469d5.tar.bz2 rails-192b7bcfacd550312b37e74d858b63b77d2469d5.zip |
Redact SQL in errors
Move `ActiveRecord::StatementInvalid` SQL to error property.
Also add bindings as an error property.
Diffstat (limited to 'activerecord/test/cases/statement_invalid_test.rb')
-rw-r--r-- | activerecord/test/cases/statement_invalid_test.rb | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/activerecord/test/cases/statement_invalid_test.rb b/activerecord/test/cases/statement_invalid_test.rb new file mode 100644 index 0000000000..16ea69c1bd --- /dev/null +++ b/activerecord/test/cases/statement_invalid_test.rb @@ -0,0 +1,42 @@ +# frozen_string_literal: true + +require "cases/helper" +require "models/book" + +module ActiveRecord + class StatementInvalidTest < ActiveRecord::TestCase + fixtures :books + + class MockDatabaseError < StandardError + def result + 0 + end + + def error_number + 0 + end + end + + test "message contains no sql" do + sql = Book.where(author_id: 96, cover: "hard").to_sql + error = assert_raises(ActiveRecord::StatementInvalid) do + Book.connection.send(:log, sql, Book.name) do + raise MockDatabaseError + end + end + assert_not error.message.include?("SELECT") + end + + test "statement and binds are set on select" do + sql = Book.where(author_id: 96, cover: "hard").to_sql + binds = [Minitest::Mock.new, Minitest::Mock.new] + error = assert_raises(ActiveRecord::StatementInvalid) do + Book.connection.send(:log, sql, Book.name, binds) do + raise MockDatabaseError + end + end + assert_equal error.sql, sql + assert_equal error.binds, binds + end + end +end |