diff --git a/app/models/change_password.rb b/app/models/change_password.rb new file mode 100644 index 0000000..aa40485 --- /dev/null +++ b/app/models/change_password.rb @@ -0,0 +1,34 @@ +class ChangePassword < Task + + attr_accessor :login, :email + + validates_presence_of :login, :email + validates_format_of :email, :with => Noosfero::Constants::EMAIL_FORMAT, :if => (lambda { |obj| !obj.email.blank? }) + + # + validates_each :login do |data,attr,value| + unless data.login.blank? + user = User.find_by_login(data.login) + if user.nil? + data.errors.add(:login, _('%{fn} is not a valid username.')) + else + if user.email != data.email + data.errors.add(:email, _('%{fn} is invalid.')) + end + end + end + end + + def initialize(hash = nil) + hash ||= {} + self.login = hash[:login] || hash['login'] + self.email = hash[:email] || hash['email'] + end + + def confirm! + raise ActiveRecord::RecordInvalid unless self.valid? + user = User.find_by_login(self.login) + #ChangePassword.create!(:user_id => user.id) + end + +end diff --git a/app/models/change_password_data.rb b/app/models/change_password_data.rb deleted file mode 100644 index f05196d..0000000 --- a/app/models/change_password_data.rb +++ /dev/null @@ -1,34 +0,0 @@ -class ChangePasswordData < Validator - - attr_accessor :login, :email - - validates_presence_of :login, :email - validates_format_of :email, :with => Noosfero::Constants::EMAIL_FORMAT, :if => (lambda { |obj| !obj.email.blank? }) - - # - validates_each :login do |data,attr,value| - unless data.login.blank? - user = User.find_by_login(data.login) - if user.nil? - data.errors.add(:login, _('%{fn} is not a valid username.')) - else - if user.email != data.email - data.errors.add(:email, _('%{fn} is invalid.')) - end - end - end - end - - def initialize(hash = nil) - hash ||= {} - self.login = hash[:login] || hash['login'] - self.email = hash[:email] || hash['email'] - end - - def confirm! - raise ActiveRecord::RecordInvalid unless self.valid? - user = User.find_by_login(self.login) - #ChangePassword.create!(:user_id => user.id) - end - -end diff --git a/test/unit/change_password_data_test.rb b/test/unit/change_password_data_test.rb deleted file mode 100644 index d3a0884..0000000 --- a/test/unit/change_password_data_test.rb +++ /dev/null @@ -1,55 +0,0 @@ -require File.dirname(__FILE__) + '/../test_helper' - -class ChangePasswordDataTest < Test::Unit::TestCase - - should 'validate' do - data = ChangePasswordData.new - assert !data.valid? - end - - should 'refuse invalid username' do - User.destroy_all - - data = ChangePasswordData.new - data.login = 'unexisting' - data.valid? - assert data.errors.invalid?(:login) - end - - should 'require a valid username' do - User.destroy_all - User.create!(:login => 'testuser', :password => 'test', :password_confirmation => 'test', :email => 'test@example.com') - - data = ChangePasswordData.new - data.login = 'testuser' - data.valid? - assert !data.errors.invalid?(:login) - end - - should 'refuse incorrect e-mail address' do - User.destroy_all - User.create!(:login => 'testuser', :password => 'test', :password_confirmation => 'test', :email => 'test@example.com') - - data = ChangePasswordData.new - data.login = 'testuser' - data.email = 'wrong@example.com' - - data.valid? - assert !data.errors.invalid?(:login) - assert data.errors.invalid?(:email) - end - - should 'require the correct e-mail address' do - User.destroy_all - User.create!(:login => 'testuser', :password => 'test', :password_confirmation => 'test', :email => 'test@example.com') - - data = ChangePasswordData.new - data.login = 'testuser' - data.email = 'test@example.com' - - data.valid? - assert !data.errors.invalid?(:login) - assert !data.errors.invalid?(:email) - end - -end diff --git a/test/unit/change_password_test.rb b/test/unit/change_password_test.rb new file mode 100644 index 0000000..3a44557 --- /dev/null +++ b/test/unit/change_password_test.rb @@ -0,0 +1,55 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class ChangePasswordTest < Test::Unit::TestCase + + should 'validate' do + data = ChangePassword.new + assert !data.valid? + end + + should 'refuse invalid username' do + User.destroy_all + + data = ChangePassword.new + data.login = 'unexisting' + data.valid? + assert data.errors.invalid?(:login) + end + + should 'require a valid username' do + User.destroy_all + User.create!(:login => 'testuser', :password => 'test', :password_confirmation => 'test', :email => 'test@example.com') + + data = ChangePassword.new + data.login = 'testuser' + data.valid? + assert !data.errors.invalid?(:login) + end + + should 'refuse incorrect e-mail address' do + User.destroy_all + User.create!(:login => 'testuser', :password => 'test', :password_confirmation => 'test', :email => 'test@example.com') + + data = ChangePassword.new + data.login = 'testuser' + data.email = 'wrong@example.com' + + data.valid? + assert !data.errors.invalid?(:login) + assert data.errors.invalid?(:email) + end + + should 'require the correct e-mail address' do + User.destroy_all + User.create!(:login => 'testuser', :password => 'test', :password_confirmation => 'test', :email => 'test@example.com') + + data = ChangePassword.new + data.login = 'testuser' + data.email = 'test@example.com' + + data.valid? + assert !data.errors.invalid?(:login) + assert !data.errors.invalid?(:email) + end + +end -- libgit2 0.21.2