cartodb/spec/lib/carto/email_domain_validator_spec.rb
2020-06-15 10:58:47 +08:00

41 lines
2.0 KiB
Ruby

require_relative '../../../lib/carto/email_domain_validator.rb'
module Carto
describe EmailDomainValidator do
describe '#validate email domains against whitelist' do
it 'validate a non-wildcard domain' do
Carto::EmailDomainValidator.validate_domain('test@carto.com', ['carto.com']).should == true
end
it 'Error on not whitelisted domain' do
Carto::EmailDomainValidator.validate_domain('test@test.com', ['carto.com']).should == false
end
it 'validate wildcard domain' do
Carto::EmailDomainValidator.validate_domain('test@a.carto.com', ['*.carto.com']).should == true
Carto::EmailDomainValidator.validate_domain('test@a.b.carto.com', ['*.carto.com']).should == true
Carto::EmailDomainValidator.validate_domain('test@a.b.c.carto.com', ['*.carto.com']).should == true
end
it 'validate subdomains wildcard' do
Carto::EmailDomainValidator.validate_domain('test@b.a.carto.com', ['*.a.carto.com']).should == true
Carto::EmailDomainValidator.validate_domain('test@b.b.carto.com', ['*.a.carto.com']).should == false
end
it 'validate multiple domains' do
whitelisted_domains = ['carto.com', '*.mit.edu', '*.cs.harvard.edu']
Carto::EmailDomainValidator.validate_domain('test@carto.com', whitelisted_domains).should == true
Carto::EmailDomainValidator.validate_domain('test@a.b.carto.com', whitelisted_domains).should == false
Carto::EmailDomainValidator.validate_domain('test@cs.mit.edu', whitelisted_domains).should == true
Carto::EmailDomainValidator.validate_domain('test@a.cs.harvard.edu', whitelisted_domains).should == true
Carto::EmailDomainValidator.validate_domain('test@a.bio.harvard.edu', whitelisted_domains).should == false
Carto::EmailDomainValidator.validate_domain('test@nonwhite.com', whitelisted_domains).should == false
end
it 'does not fail validating empty emails' do
Carto::EmailDomainValidator.validate_domain('', []).should == false
end
end
end
end