chore: restore MX check
This commit is contained in:
@@ -16,7 +16,7 @@ class Account::SignUpEmailValidationService
|
||||
|
||||
raise InvalidEmail.new({ domain_blocked: true }) if domain_blocked?
|
||||
|
||||
raise InvalidEmail.new({ valid: true, disposable: true }) if address.disposable_domain?
|
||||
raise InvalidEmail.new({ valid: true, disposable: true }) if address.disposable?
|
||||
|
||||
raise InvalidEmail.new({ free_email_provider: true }) if !@allow_free_email_provider && address.deny_listed?
|
||||
|
||||
|
||||
@@ -5,9 +5,9 @@ require 'rails_helper'
|
||||
RSpec.describe Account::SignUpEmailValidationService, type: :service do
|
||||
let(:service) { described_class.new(email) }
|
||||
let(:blocked_domains) { "gmail.com\noutlook.com" }
|
||||
let(:valid_email_address) { instance_double(ValidEmail2::Address, valid?: true, disposable_domain?: false, deny_listed?: false) }
|
||||
let(:free_provider_email_address) { instance_double(ValidEmail2::Address, valid?: true, disposable_domain?: false, deny_listed?: true) }
|
||||
let(:disposable_email_address) { instance_double(ValidEmail2::Address, valid?: true, disposable_domain?: true) }
|
||||
let(:valid_email_address) { instance_double(ValidEmail2::Address, valid?: true, disposable?: false, deny_listed?: false) }
|
||||
let(:free_provider_email_address) { instance_double(ValidEmail2::Address, valid?: true, disposable?: false, deny_listed?: true) }
|
||||
let(:disposable_email_address) { instance_double(ValidEmail2::Address, valid?: true, disposable?: true) }
|
||||
let(:invalid_email_address) { instance_double(ValidEmail2::Address, valid?: false) }
|
||||
|
||||
before do
|
||||
@@ -91,6 +91,11 @@ RSpec.describe Account::SignUpEmailValidationService, type: :service do
|
||||
describe '#perform with the real deny list' do
|
||||
before do
|
||||
allow(GlobalConfigService).to receive(:load).with('BLOCKED_EMAIL_DOMAINS', '').and_return('')
|
||||
# ValidEmail2::Dns is instantiated lazily inside ValidEmail2::Address per call,
|
||||
# so we cannot capture the instance to stub it. Stubbing the class-level constructor
|
||||
# would also break ValidEmail2's internal caching. Returning empty MX/A records keeps
|
||||
# disposable? and valid_mx? offline and deterministic in CI.
|
||||
allow_any_instance_of(ValidEmail2::Dns).to receive_messages(mx_servers: [], a_servers: []) # rubocop:disable RSpec/AnyInstance
|
||||
end
|
||||
|
||||
%w[user@gmail.com user@outlook.com user@hotmail.com user@yahoo.com user@protonmail.com user@icloud.com].each do |email|
|
||||
|
||||
Reference in New Issue
Block a user