mirror of
https://github.com/internetee/registry.git
synced 2025-07-23 03:06:14 +02:00
Return truemail
This reverts commit 862f5639ebbe4d3e6abd5d5be7fb7840e7b83bdf.
This commit is contained in:
parent
0a7b754c4c
commit
e4a02c2e47
35 changed files with 728 additions and 153 deletions
8
test/fixtures/contacts.yml
vendored
8
test/fixtures/contacts.yml
vendored
|
@ -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
|
||||
|
|
59
test/jobs/verify_emails_job_test.rb
Normal file
59
test/jobs/verify_emails_job_test.rb
Normal 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
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
63
test/tasks/emails/verify_email_task_test.rb
Normal file
63
test/tasks/emails/verify_email_task_test.rb
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue