Commit c281083a72661e746eac9844070f5e537a0df785

Authored by Antonio Terceiro
1 parent e59874da

ActionItem865: adding duplicated e-mail validation in the person model

Showing 2 changed files with 14 additions and 0 deletions   Show diff stats
app/models/person.rb
... ... @@ -141,6 +141,12 @@ class Person < Profile
141 141 self.user.nil? ? nil : self.user.email
142 142 end
143 143  
  144 + validates_each :email, :on => :update do |record,attr,value|
  145 + if User.find(:first, :conditions => ['email = ? and id != ?', value, record.user.id])
  146 + record.errors.add(attr, _('%{fn} is already used by other user'))
  147 + end
  148 + end
  149 +
144 150 # Returns the user e-mail.
145 151 def contact_email
146 152 email
... ...
test/unit/person_test.rb
... ... @@ -129,6 +129,14 @@ class PersonTest < Test::Unit::TestCase
129 129 assert_equal 'damnit@example.com', u.email
130 130 end
131 131  
  132 + should 'not be able to change e-mail to an e-mail of other user' do
  133 + first = create_user('firstuser', :email => 'user@domain.com')
  134 + second = create_user('seconduser', :email => 'other@domain.com')
  135 + second.email = 'user@domain.com'
  136 + second.valid?
  137 + assert second.errors.invalid?(:email)
  138 + end
  139 +
132 140 should 'be an admin if have permission of environment administration' do
133 141 role = Role.create!(:name => 'just_another_admin_role')
134 142 env = Environment.create!(:name => 'blah')
... ...