Return truemail

This reverts commit 862f5639ebbe4d3e6abd5d5be7fb7840e7b83bdf.
This commit is contained in:
Alex Sherman 2020-07-13 15:04:56 +05:00
parent 0a7b754c4c
commit e4a02c2e47
35 changed files with 728 additions and 153 deletions

View file

@ -85,3 +85,11 @@ invalid:
auth_info: any
registrar: bestnames
uuid: bd80c0f9-26ee-49e0-a2cb-2311d931c433
invalid_email:
name: any
code: invalid_email
email: invalid@invalid.
auth_info: any
registrar: bestnames
uuid: fa8c4f51-a221-4628-b3c6-47995f4edea3

View file

@ -0,0 +1,59 @@
require "test_helper"
class VerifyEmailsJobTest < ActiveSupport::TestCase
def setup
@contact = contacts(:john)
@invalid_contact = contacts(:invalid_email)
@contact_verification = @contact.email_verification
@invalid_contact_verification = @invalid_contact.email_verification
@default_whitelist = Truemail.configure.whitelisted_domains
@default_blacklist = Truemail.configure.blacklisted_domains
Truemail.configure.whitelisted_domains = whitelisted_domains
Truemail.configure.blacklisted_domains = blacklisted_domains
end
def teardown
Truemail.configure.whitelisted_domains = @default_whitelist
Truemail.configure.blacklisted_domains = @default_blacklist
end
def domain(email)
Mail::Address.new(email).domain
rescue Mail::Field::IncompleteParseError
nil
end
def whitelisted_domains
[domain(@contact.email)].reject(&:blank?)
end
def blacklisted_domains
[domain(@invalid_contact.email)].reject(&:blank?)
end
def test_job_checks_if_email_valid
VerifyEmailsJob.run(@contact_verification.id)
@contact_verification.reload
assert @contact_verification.success
end
def test_job_checks_does_not_run_if_recent
old_verified_at = Time.zone.now - 10.days
@contact_verification.update(success: true, verified_at: old_verified_at)
assert @contact_verification.recently_verified?
VerifyEmailsJob.run(@contact_verification.id)
@contact_verification.reload
assert_in_delta @contact_verification.verified_at.to_i, old_verified_at.to_i, 1
end
def test_job_checks_if_email_invalid
VerifyEmailsJob.run(@invalid_contact_verification.id)
@contact_verification.reload
refute @contact_verification.success
end
end

View file

@ -3,6 +3,11 @@ require 'test_helper'
class ContactTest < ActiveSupport::TestCase
setup do
@contact = contacts(:john)
@old_validation_type = Truemail.configure.default_validation_type
end
teardown do
Truemail.configure.default_validation_type = @old_validation_type
end
def test_valid_contact_fixture_is_valid
@ -61,10 +66,17 @@ class ContactTest < ActiveSupport::TestCase
assert contact.invalid?
end
def test_validates_email_format
def test_email_verification_valid
contact = valid_contact
contact.email = 'info@internet.ee'
assert contact.valid?
end
contact.email = 'invalid'
def test_email_verification_smtp_error
Truemail.configure.default_validation_type = :smtp
contact = valid_contact
contact.email = 'somecrude1337joke@internet.ee'
assert contact.invalid?
assert_equal I18n.t('activerecord.errors.models.contact.attributes.email.email_smtp_check_error'), contact.errors.messages[:email].first
end
@ -273,6 +285,16 @@ class ContactTest < ActiveSupport::TestCase
assert_equal domain.whois_record.try(:json).try(:[], 'registrant'), @contact.name
end
def test_creates_email_verification_in_unicode
unicode_email = 'suur@äri.ee'
punycode_email = Contact.unicode_to_punycode(unicode_email)
@contact.email = punycode_email
@contact.save
assert_equal @contact.email_verification.email, unicode_email
end
private
def make_contact_free_of_domains_where_it_acts_as_a_registrant(contact)

View file

@ -5,11 +5,13 @@ class RegistrarTest < ActiveSupport::TestCase
@registrar = registrars(:bestnames)
@original_default_language = Setting.default_language
@original_days_to_keep_invoices_active = Setting.days_to_keep_invoices_active
@old_validation_type = Truemail.configure.default_validation_type
end
teardown do
Setting.default_language = @original_default_language
Setting.days_to_keep_invoices_active = @original_days_to_keep_invoices_active
Truemail.configure.default_validation_type = @old_validation_type
end
def test_valid_registrar_is_valid
@ -38,10 +40,21 @@ class RegistrarTest < ActiveSupport::TestCase
assert registrar.invalid?
end
def test_email_format_validation
def test_email_verification_valid
registrar = valid_registrar
registrar.email = 'info@internet.ee'
registrar.billing_email = nil
assert registrar.valid?
end
def test_email_verification_smtp_error
Truemail.configure.default_validation_type = :smtp
registrar = valid_registrar
registrar.email = 'somecrude1337joke@internet.ee'
registrar.billing_email = nil
registrar.email = 'invalid'
assert registrar.invalid?
assert_equal I18n.t('activerecord.errors.models.contact.attributes.email.email_smtp_check_error'), registrar.errors.messages[:email].first
end
@ -57,23 +70,30 @@ class RegistrarTest < ActiveSupport::TestCase
assert_equal I18n.t('activerecord.errors.models.contact.attributes.email.email_mx_check_error'), registrar.errors.messages[:email].first
end
def test_invalid_without_accounting_customer_code
def test_email_verification_regex_error
Truemail.configure.default_validation_type = :regex
registrar = valid_registrar
registrar.accounting_customer_code = ''
registrar.email = 'some@strangesentence@internet.ee'
registrar.billing_email = nil
assert registrar.invalid?
assert_equal I18n.t('activerecord.errors.models.contact.attributes.email.email_regex_check_error'), registrar.errors.messages[:email].first
end
def test_optional_billing_email
def test_billing_email_verification_valid
registrar = valid_registrar
registrar.billing_email = ''
registrar.billing_email = 'info@internet.ee'
assert registrar.valid?
end
def test_billing_email_format_validation
registrar = valid_registrar
def test_billing_email_verification_smtp_error
Truemail.configure.default_validation_type = :smtp
registrar = valid_registrar
registrar.billing_email = 'somecrude1337joke@internet.ee'
registrar.billing_email = 'invalid'
assert registrar.invalid?
assert_equal I18n.t('activerecord.errors.models.contact.attributes.email.email_smtp_check_error'), registrar.errors.messages[:billing_email].first
end

View file

@ -0,0 +1,63 @@
require 'test_helper'
class VerifyEmailTaskTest < ActiveSupport::TestCase
def setup
@contact = contacts(:john)
@invalid_contact = contacts(:invalid_email)
@contact_verification = @contact.email_verification
@invalid_contact_verification = @invalid_contact.email_verification
@default_whitelist = Truemail.configure.whitelisted_domains
@default_blacklist = Truemail.configure.blacklisted_domains
Truemail.configure.whitelisted_domains = whitelisted_domains
Truemail.configure.blacklisted_domains = blacklisted_domains
end
def teardown
Truemail.configure.whitelisted_domains = @default_whitelist
Truemail.configure.blacklisted_domains = @default_blacklist
end
def domain(email)
Mail::Address.new(email).domain
rescue Mail::Field::IncompleteParseError
nil
end
def whitelisted_domains
[domain(@contact.email)].reject(&:blank?)
end
def blacklisted_domains
[domain(@invalid_contact.email)].reject(&:blank?)
end
def test_tasks_verifies_emails
capture_io { run_task }
@contact_verification.reload
@invalid_contact_verification.reload
assert @contact_verification.verified?
assert @invalid_contact_verification.failed?
end
def test_domain_task_verifies_for_one_domain
capture_io { run_single_domain_task(@contact_verification.domain) }
@contact_verification.reload
@invalid_contact_verification.reload
assert @contact_verification.verified?
assert @invalid_contact_verification.not_verified?
end
def run_task
Rake::Task['verify_email:all_domains'].execute
end
def run_single_domain_task(domain)
Rake::Task["verify_email:domain"].invoke(domain)
end
end