Add BlockedEmail, to block signups based on email. Track stats of how many times each email address is blocked, and last time it was blocked. Move email validation out of User model and into EmailValidator. Signup form remembers which email addresses have failed and shows validation error on email field.
This commit is contained in:
parent
e25638dab0
commit
5f8a130277
10 changed files with 155 additions and 23 deletions
23
spec/components/validators/email_validator_spec.rb
Normal file
23
spec/components/validators/email_validator_spec.rb
Normal file
|
@ -0,0 +1,23 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe EmailValidator do
|
||||
|
||||
let(:record) { Fabricate.build(:user, email: "bad@spamclub.com") }
|
||||
let(:validator) { described_class.new({attributes: :email}) }
|
||||
subject(:validate) { validator.validate_each(record,:email,record.email) }
|
||||
|
||||
context "blocked email" do
|
||||
it "doesn't add an error when email doesn't match a blocked email" do
|
||||
BlockedEmail.stubs(:should_block?).with(record.email).returns(false)
|
||||
validate
|
||||
record.errors[:email].should_not be_present
|
||||
end
|
||||
|
||||
it "adds an error when email matches a blocked email" do
|
||||
BlockedEmail.stubs(:should_block?).with(record.email).returns(true)
|
||||
validate
|
||||
record.errors[:email].should be_present
|
||||
end
|
||||
end
|
||||
|
||||
end
|
Reference in a new issue