module Truemail::RSpec::ValidatorHelper
Attributes
configuration[R]
email[R]
mail_servers[R]
rcptto_error[R]
success[R]
validation_type[R]
Public Instance Methods
create_servers_list(size = nil)
click to toggle source
# File lib/truemail/rspec/validator_helper.rb, line 6 def create_servers_list(size = nil) ::Array.new(size || rand(1..4)) { ::FFaker::Internet.ip_v4_address } end
create_validator( validation_type = nil, email = ::FFaker::Internet.email, mail_servers = create_servers_list, rcptto_error: 'user not found', success: true, configuration: create_configuration )
click to toggle source
# File lib/truemail/rspec/validator_helper.rb, line 10 def create_validator( # rubocop:disable Metrics/ParameterLists validation_type = nil, email = ::FFaker::Internet.email, mail_servers = create_servers_list, rcptto_error: 'user not found', success: true, configuration: create_configuration ) set_expected_result(validation_type, email, mail_servers, success, configuration, rcptto_error) stub_validation_layers validator_instance = ValidatorFactory.call(validation_type, success, email, mail_servers, configuration) unstub_validation_layers validator_instance end
Private Instance Methods
mx_blacklist_layer()
click to toggle source
# File lib/truemail/rspec/validator_helper.rb, line 67 def mx_blacklist_layer # rubocop:disable Metrics/AbcSize allow(Truemail::Validate::Regex).to receive(:check).and_return(true) allow_any_instance_of(Truemail::Validate::Mx).to receive(:mx_records).and_return(mail_servers) allow_any_instance_of(Truemail::Validate::Mx).to receive(:domain_not_include_null_mx).and_return(true) allow_any_instance_of(Truemail::Validate::MxBlacklist).to receive(:not_blacklisted_mail_servers?).and_return(success) end
mx_layer()
click to toggle source
# File lib/truemail/rspec/validator_helper.rb, line 61 def mx_layer allow(Truemail::Validate::Regex).to receive(:check).and_return(true) allow_any_instance_of(Truemail::Validate::Mx).to receive(:mx_records).and_return(mail_servers) allow_any_instance_of(Truemail::Validate::Mx).to receive(:domain_not_include_null_mx).and_return(success) end
regex_layer()
click to toggle source
# File lib/truemail/rspec/validator_helper.rb, line 57 def regex_layer allow_any_instance_of(Truemail::Validate::Regex).to receive(:match_regex_pattern?).and_return(success) end
request_instance()
click to toggle source
# File lib/truemail/rspec/validator_helper.rb, line 74 def request_instance request = Truemail::Validate::Smtp::Request.new( host: mail_servers.first, email: email, configuration: configuration ) request.response.tap do |response| response.port_opened = true response.connection = true response.helo = true response.mailfrom = true response.rcptto = false response.errors[:rcptto] = rcptto_error end request end
set_expected_result(validation_type, email, mail_servers, success, configuration, rcptto_error)
click to toggle source
# File lib/truemail/rspec/validator_helper.rb, line 29 def set_expected_result(validation_type, email, mail_servers, success, configuration, rcptto_error) # rubocop:disable Metrics/ParameterLists @validation_type = validation_type @email = email @mail_servers = mail_servers @success = success @configuration = configuration @rcptto_error = rcptto_error end
smtp_layer()
click to toggle source
# File lib/truemail/rspec/validator_helper.rb, line 93 def smtp_layer # rubocop:disable Metrics/AbcSize allow(Truemail::Validate::Regex).to receive(:check).and_return(true) allow_any_instance_of(Truemail::Validate::Mx).to receive(:mx_records).and_return(mail_servers) allow_any_instance_of(Truemail::Validate::Mx).to receive(:domain_not_include_null_mx).and_return(true) allow_any_instance_of(Truemail::Validate::Smtp).to receive(:establish_smtp_connection).and_return(true) return allow_any_instance_of(Truemail::Validate::Smtp).to receive(:success_response?).and_return(true) if success allow_any_instance_of(Truemail::Validate::Smtp).to receive(:smtp_results).and_return([request_instance]) end
stub_validation_layers()
click to toggle source
# File lib/truemail/rspec/validator_helper.rb, line 38 def stub_validation_layers case validation_type when :regex then regex_layer when :mx then mx_layer when :mx_blacklist then mx_blacklist_layer else smtp_layer end end
unstub_validation_layers()
click to toggle source
# File lib/truemail/rspec/validator_helper.rb, line 47 def unstub_validation_layers # rubocop:disable Metrics/AbcSize allow_any_instance_of(Truemail::Validate::Regex).to receive(:match_regex_pattern?).and_call_original allow(Truemail::Validate::Regex).to receive(:check).and_call_original allow_any_instance_of(Truemail::Validate::Mx).to receive(:mx_records).and_call_original allow_any_instance_of(Truemail::Validate::Mx).to receive(:domain_not_include_null_mx).and_call_original allow_any_instance_of(Truemail::Validate::Smtp).to receive(:establish_smtp_connection).and_call_original allow_any_instance_of(Truemail::Validate::Smtp).to receive(:success_response?).and_call_original allow_any_instance_of(Truemail::Validate::Smtp).to receive(:smtp_results).and_call_original end