Allowed email checking no longer so ridiculous

This commit is contained in:
Raphael 2010-08-23 10:20:19 -07:00
parent 15b2c23b51
commit 364cdfed22
2 changed files with 39 additions and 8 deletions

View file

@ -17,23 +17,28 @@ class User
many :groups, :class_name => 'Group'
after_validation_on_create :setup_person
before_create :pivotal_or_diaspora_only
after_create :seed_groups
after_save :check_for_tommy
before_validation :do_bad_things
######## Making things work ########
key :email, String
#validates_true_for :email, :logic => lambda {self.pivotal_email?}
validates_true_for :email, :logic => lambda {self.allowed_email?}
def self.allowed_email?(email)
email.include?('@pivotallabs.com') || email.include?("@joindiaspora.com")
def allowed_email?
allowed_emails = ["@pivotallabs.com", "@joindiaspora.com", "@sofaer.net",
"wchulley@gmail.com", "kimfuh@yahoo.com", "CJichi@yahoo.com",
"madkisso@mit.edu", "bribak@msn.com", "asykley@verizon.net",
"paulhaeberli@gmail.com","bondovatic@gmail.com", "dixon1e@yahoo.com"]
allowed_emails.each{|allowed|
if email.include?(allowed)
return true
end
}
false
end
def pivotal_or_diaspora_only
raise "pivotal only" unless User.allowed_email?(self.email)
end
ensure_index :email
def method_missing(method, *args)
@ -350,7 +355,10 @@ class User
end
def seed_groups
group(:name => "Pivots")
group(:name => "Acquaintances")
group(:name => "Family")
group(:name => "Nemeses")
group(:name => "Work")
end
def groups_with_person person

View file

@ -5,6 +5,29 @@ describe User do
@user = Factory.create(:user)
@group = @user.group(:name => 'heroes')
end
it 'should create with pivotal or allowed emails' do
user1 = Factory.create(:user, :email => "kimfuh@yahoo.com")
user2 = Factory.create(:user, :email => "awesome@sofaer.net")
user3 = Factory.create(:user, :email => "steveellis@pivotallabs.com")
user1.created_at.nil?.should be false
user2.created_at.nil?.should be false
user3.created_at.nil?.should be false
end
it 'should not create with disallowed emails' do
proc {
user1 = Factory.create(:user, :email => "kimuh@yahoo.com")
}.should raise_error /Validation failed/
proc {
user2 = Factory.create(:user, :email => "awesome@sobear.net")
}.should raise_error /Validation failed/
proc {
user3 = Factory.create(:user, :email => "steveellis@pivotalabs.com")
}.should raise_error /Validation failed/
end
describe 'profiles' do
it 'should be able to update their profile and send it to their friends' do