2019-04-30 10:27:42 +10:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2022-07-28 05:27:38 +03:00
|
|
|
RSpec.describe EmailValidator do
|
2015-06-15 11:28:50 +10:00
|
|
|
def blocks?(email)
|
|
|
|
user = Fabricate.build(:user, email: email)
|
|
|
|
validator = EmailValidator.new(attributes: :email)
|
|
|
|
validator.validate_each(user, :email, user.email)
|
|
|
|
user.errors[:email].present?
|
|
|
|
end
|
|
|
|
|
2022-07-27 18:14:14 +02:00
|
|
|
describe "blocked email" do
|
2013-07-25 13:01:27 -04:00
|
|
|
it "doesn't add an error when email doesn't match a blocked email" do
|
2015-06-15 11:28:50 +10:00
|
|
|
expect(blocks?('sam@sam.com')).to eq(false)
|
2013-07-25 13:01:27 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
it "adds an error when email matches a blocked email" do
|
2015-06-15 11:28:50 +10:00
|
|
|
ScreenedEmail.create!(email: 'sam@sam.com', action_type: ScreenedEmail.actions[:block])
|
|
|
|
expect(blocks?('sam@sam.com')).to eq(true)
|
2017-11-12 01:43:18 +01:00
|
|
|
expect(blocks?('SAM@sam.com')).to eq(true)
|
2015-06-15 11:28:50 +10:00
|
|
|
end
|
|
|
|
|
2020-07-27 10:23:54 +10:00
|
|
|
it "blocks based on blocked_email_domains" do
|
|
|
|
SiteSetting.blocked_email_domains = "email.com|mail.com|e-mail.com"
|
2016-07-04 16:05:01 +02:00
|
|
|
expect(blocks?('sam@email.com')).to eq(true)
|
2017-11-12 01:43:18 +01:00
|
|
|
expect(blocks?('sam@EMAIL.com')).to eq(true)
|
2016-07-04 16:05:01 +02:00
|
|
|
expect(blocks?('sam@bob.email.com')).to eq(true)
|
|
|
|
expect(blocks?('sam@e-mail.com')).to eq(true)
|
|
|
|
expect(blocks?('sam@googlemail.com')).to eq(false)
|
2013-07-25 13:01:27 -04:00
|
|
|
end
|
2017-10-03 11:23:18 +02:00
|
|
|
|
2020-07-27 10:23:54 +10:00
|
|
|
it "blocks based on allowed_email_domains" do
|
|
|
|
SiteSetting.allowed_email_domains = "googlemail.com|email.com"
|
2017-10-03 11:23:18 +02:00
|
|
|
expect(blocks?('sam@email.com')).to eq(false)
|
2017-11-12 01:43:18 +01:00
|
|
|
expect(blocks?('sam@EMAIL.com')).to eq(false)
|
2017-10-03 11:23:18 +02:00
|
|
|
expect(blocks?('sam@bob.email.com')).to eq(false)
|
|
|
|
expect(blocks?('sam@e-mail.com')).to eq(true)
|
|
|
|
expect(blocks?('sam@googlemail.com')).to eq(false)
|
2018-01-17 21:45:32 +01:00
|
|
|
expect(blocks?('sam@email.computers.are.evil.com')).to eq(true)
|
2017-10-03 11:23:18 +02:00
|
|
|
end
|
2013-07-25 13:01:27 -04:00
|
|
|
end
|
|
|
|
|
2022-07-27 18:14:14 +02:00
|
|
|
describe "auto approve email domains" do
|
2020-03-31 23:59:15 +05:30
|
|
|
it "works as expected" do
|
|
|
|
SiteSetting.auto_approve_email_domains = "example.com"
|
|
|
|
|
|
|
|
expect(EmailValidator.can_auto_approve_user?("foobar@example.com.fr")).to eq(false)
|
|
|
|
expect(EmailValidator.can_auto_approve_user?("foobar@example.com")).to eq(true)
|
|
|
|
end
|
|
|
|
|
2020-07-27 10:23:54 +10:00
|
|
|
it "returns false if domain not present in allowed_email_domains" do
|
|
|
|
SiteSetting.allowed_email_domains = "googlemail.com"
|
2020-03-31 23:59:15 +05:30
|
|
|
SiteSetting.auto_approve_email_domains = "example.com|googlemail.com"
|
|
|
|
|
|
|
|
expect(EmailValidator.can_auto_approve_user?("foobar@example.com")).to eq(false)
|
|
|
|
expect(EmailValidator.can_auto_approve_user?("foobar@googlemail.com")).to eq(true)
|
|
|
|
end
|
|
|
|
end
|
2013-07-25 13:01:27 -04:00
|
|
|
end
|