aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/statement_invalid_test.rb
diff options
context:
space:
mode:
authorGannon McGibbon <gannon.mcgibbon@gmail.com>2018-11-15 19:55:47 -0500
committerGannon McGibbon <gannon.mcgibbon@gmail.com>2018-11-22 13:53:23 -0500
commit192b7bcfacd550312b37e74d858b63b77d2469d5 (patch)
tree553569b30ced5a658e5896c3edc730071f1c95fe /activerecord/test/cases/statement_invalid_test.rb
parent47ab6b36d794e68e76dcb45463c0d2a5bdba2104 (diff)
downloadrails-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.rb42
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