diff --git a/config/initializers/truemail.rb b/config/initializers/truemail.rb index 10c7374c8..4893644e9 100644 --- a/config/initializers/truemail.rb +++ b/config/initializers/truemail.rb @@ -9,7 +9,7 @@ Truemail.configure do |config| # config.verifier_domain = 'internet.ee' # Optional parameter. You can override default regex pattern - config.email_pattern = /(?=\A.{6,255}\z)(\A([\p{L}0-9]+[\W\w]*)@(xn--)?((?i-mx:[\p{L}0-9]+([\-.]{1}[\p{L}0-9]+)*\.\p{L}{2,63}))\z)/ + config.email_pattern = /\A([\p{L}0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[\p{L}0-9!#$%&'*+\/=?^_`{|}~-]+)*)@(?i:(xn--)?(?:[\p{L}0-9][\p{L}0-9-]{0,61}[\p{L}0-9]\.)+[\p{L}]{2,63}|\[[\d.a-fA-F:]+\])\z/ # Optional parameter. You can override default regex pattern # config.smtp_error_body_pattern = /regex_pattern/ diff --git a/test/interactions/email_check_test.rb b/test/interactions/email_check_test.rb index adecd37d4..3cf1ac026 100644 --- a/test/interactions/email_check_test.rb +++ b/test/interactions/email_check_test.rb @@ -7,6 +7,33 @@ class EmailCheckTest < ActiveSupport::TestCase @contact = contacts(:john) end + def test_validates_regex_email_format + valid_emails = [ + 'user@domain.com', + 'user_@domain.com', + 'user.name@domain.com', + 'hello.world@example.com', + '_user.email@domain.com', + '__user.email@domain.com', + ] + + valid_emails.each_with_index do |email, index| + assert Actions::EmailCheck.new(email: email, validation_eventable: @contact, check_level: 'regex').call + end + + invalid_emails = [ + 'user..name@domain.com', + '.user@domain.com', + 'user.@domain.com', + 'us"er@domain.com', + 'user@domain..com' + ] + + invalid_emails.each do |email| + refute Actions::EmailCheck.new(email: email, validation_eventable: @contact, check_level: 'regex').call + end + end + def test_invalid_email_in_mx_level_with_a_and_aaaa_records Spy.on_instance_method(Actions::EmailCheck, :check_email).and_return(trumail_result) Spy.on_instance_method(Actions::AAndAaaaEmailValidation, :call).and_return([true])