diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2018-12-11 04:33:48 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2018-12-11 04:51:54 +0900 |
commit | bde898c1df17722a83e5e8866b2009273c5190c6 (patch) | |
tree | 6925a7791b971874e52cc8f499eed833765520f9 /activerecord/test | |
parent | bad1041b82df941d588ae2565f62424d88104933 (diff) | |
download | rails-bde898c1df17722a83e5e8866b2009273c5190c6.tar.gz rails-bde898c1df17722a83e5e8866b2009273c5190c6.tar.bz2 rails-bde898c1df17722a83e5e8866b2009273c5190c6.zip |
Prevent write queries for `exec_query`
Follow up #34505.
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/cases/adapter_test.rb | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/activerecord/test/cases/adapter_test.rb b/activerecord/test/cases/adapter_test.rb index e40ae3090c..79a431c7ee 100644 --- a/activerecord/test/cases/adapter_test.rb +++ b/activerecord/test/cases/adapter_test.rb @@ -165,6 +165,43 @@ module ActiveRecord end end + def test_errors_when_an_insert_query_is_called_while_preventing_writes + assert_raises(ActiveRecord::ReadOnlyError) do + @connection.while_preventing_writes do + @connection.insert("INSERT INTO subscribers(nick) VALUES ('138853948594')") + end + end + end + + def test_errors_when_an_update_query_is_called_while_preventing_writes + @connection.insert("INSERT INTO subscribers(nick) VALUES ('138853948594')") + + assert_raises(ActiveRecord::ReadOnlyError) do + @connection.while_preventing_writes do + @connection.update("UPDATE subscribers SET nick = '9989' WHERE nick = '138853948594'") + end + end + end + + def test_errors_when_a_delete_query_is_called_while_preventing_writes + @connection.insert("INSERT INTO subscribers(nick) VALUES ('138853948594')") + + assert_raises(ActiveRecord::ReadOnlyError) do + @connection.while_preventing_writes do + @connection.delete("DELETE FROM subscribers WHERE nick = '138853948594'") + end + end + end + + def test_doesnt_error_when_a_select_query_is_called_while_preventing_writes + @connection.insert("INSERT INTO subscribers(nick) VALUES ('138853948594')") + + @connection.while_preventing_writes do + result = @connection.select_all("SELECT subscribers.* FROM subscribers WHERE nick = '138853948594'") + assert_equal 1, result.length + end + end + def test_uniqueness_violations_are_translated_to_specific_exception @connection.execute "INSERT INTO subscribers(nick) VALUES('me')" error = assert_raises(ActiveRecord::RecordNotUnique) do |