diff --git a/app/models/change_password.rb b/app/models/change_password.rb index d718624..842fec3 100644 --- a/app/models/change_password.rb +++ b/app/models/change_password.rb @@ -45,9 +45,9 @@ class ChangePassword < Task # validations for updating a ChangePassword task # only require the new password when actually changing it. - validates_presence_of :password, :on => :update - validates_presence_of :password_confirmation, :on => :update - validates_confirmation_of :password + validates_presence_of :password, :on => :update, :if => lambda { |change| change.status == Task::Status::FINISHED } + validates_presence_of :password_confirmation, :on => :update, :if => lambda { |change| change.status == Task::Status::FINISHED } + validates_confirmation_of :password, :if => lambda { |change| change.status == Task::Status::FINISHED } def initialize(*args) super(*args) diff --git a/test/unit/change_password_test.rb b/test/unit/change_password_test.rb index 83201c5..cecfca9 100644 --- a/test/unit/change_password_test.rb +++ b/test/unit/change_password_test.rb @@ -62,6 +62,7 @@ class ChangePasswordTest < Test::Unit::TestCase change.email = 'test@example.com' change.save! + change.status = Task::Status::FINISHED change.password = 'right' change.password_confirmation = 'wrong' assert !change.valid? @@ -88,4 +89,20 @@ class ChangePasswordTest < Test::Unit::TestCase change.finish end + should 'not require password and password confirmation when cancelling' do + User.destroy_all + person = User.create!(:login => 'testuser', :password => 'test', :password_confirmation => 'test', :email => 'test@example.com').person + + change = ChangePassword.new + change.login = 'testuser' + change.email = 'test@example.com' + change.save! + + assert_nothing_raised do + change.cancel + end + + end + + end -- libgit2 0.21.2