]> source.dussan.org Git - redmine.git/commitdiff
Rake tasks "db:encrypt" and "db:decrypt" may fail due to validation error (#33926).
authorGo MAEDA <maeda@farend.jp>
Tue, 1 Sep 2020 14:19:10 +0000 (14:19 +0000)
committerGo MAEDA <maeda@farend.jp>
Tue, 1 Sep 2020 14:19:10 +0000 (14:19 +0000)
Patch by Go MAEDA.

git-svn-id: http://svn.redmine.org/redmine/trunk@19999 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/ciphering.rb
test/unit/lib/redmine/ciphering_test.rb

index d5ceb0c6c73154efeee00f2f1d5b43da9397beb6..469d3b9e6a6f05586d20c8b1ce97c7067870550e 100644 (file)
@@ -74,7 +74,7 @@ module Redmine
           all.each do |object|
             clear = object.send(attribute)
             object.send "#{attribute}=", clear
-            raise(ActiveRecord::Rollback) unless object.save(:validation => false)
+            raise(ActiveRecord::Rollback) unless object.save(validate: false)
           end
         end ? true : false
       end
@@ -84,7 +84,7 @@ module Redmine
           all.each do |object|
             clear = object.send(attribute)
             object.send :write_attribute, attribute, clear
-            raise(ActiveRecord::Rollback) unless object.save(:validation => false)
+            raise(ActiveRecord::Rollback) unless object.save(validate: false)
           end
         end ? true : false
       end
index d28a5d49d573e71422621e0137bcf2677084edae..3a87d5b67b88942c19b5b43d36fc0f62649cde25 100644 (file)
@@ -20,6 +20,7 @@
 require File.expand_path('../../../../test_helper', __FILE__)
 
 class Redmine::CipheringTest < ActiveSupport::TestCase
+  fixtures :auth_sources
 
   def test_password_should_be_encrypted
     Redmine::Configuration.with 'database_cipher_key' => 'secret' do
@@ -106,4 +107,12 @@ class Redmine::CipheringTest < ActiveSupport::TestCase
       assert_equal 'bar', r.read_attribute(:password)
     end
   end
+
+  def test_encrypt_all_and_decrypt_all_should_skip_validation
+    auth_source = auth_sources(:auth_sources_001)
+    # validator checks if AuthSource#host is present
+    auth_source.update_column(:host, nil)
+    assert AuthSource.encrypt_all(:account_password)
+    assert AuthSource.decrypt_all(:account_password)
+  end
 end