diff options
author | Go MAEDA <maeda@farend.jp> | 2025-04-19 06:36:44 +0000 |
---|---|---|
committer | Go MAEDA <maeda@farend.jp> | 2025-04-19 06:36:44 +0000 |
commit | d9da09f667d929227ab13c47eb4260b1a01907ef (patch) | |
tree | cdfe5c0e097d7e8cc69840ce6ce964dd169c18bf | |
parent | 9d0a252268488e4c25d3101a82900bdaac3ddc30 (diff) | |
download | redmine-d9da09f667d929227ab13c47eb4260b1a01907ef.tar.gz redmine-d9da09f667d929227ab13c47eb4260b1a01907ef.zip |
Merged r23666 from trunk to 6.0-stable (#42584).
git-svn-id: https://svn.redmine.org/redmine/branches/6.0-stable@23681 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/models/email_address.rb | 6 | ||||
-rw-r--r-- | test/unit/email_address_test.rb | 6 |
2 files changed, 11 insertions, 1 deletions
diff --git a/app/models/email_address.rb b/app/models/email_address.rb index 69ae8a066..de8c86531 100644 --- a/app/models/email_address.rb +++ b/app/models/email_address.rb @@ -74,7 +74,7 @@ class EmailAddress < ApplicationRecord # Returns true if domain belongs to domains list. def self.domain_in?(domain, domains) - domain = domain.downcase + domain = domain.to_s.downcase domains = domains.to_s.split(/[\s,]+/) unless domains.is_a?(Array) domains.reject(&:blank?).map(&:downcase).any? do |s| s.start_with?('.') ? domain.end_with?(s) : domain == s @@ -150,6 +150,10 @@ class EmailAddress < ApplicationRecord def validate_email_domain domain = address.partition('@').last + # Skip domain validation if the email does not contain a domain part, + # to avoid an incomplete error message like "domain not allowed ()" + return if domain.empty? + return if self.class.valid_domain?(domain) if User.current.logged? diff --git a/test/unit/email_address_test.rb b/test/unit/email_address_test.rb index 9d57beb97..923df897a 100644 --- a/test/unit/email_address_test.rb +++ b/test/unit/email_address_test.rb @@ -63,6 +63,12 @@ class EmailAddressTest < ActiveSupport::TestCase end end + def test_domain_in_should_not_raise_exception_when_domain_is_nil + assert_nothing_raised do + assert_not EmailAddress.domain_in?(nil, 'example.com') + end + end + def test_should_reject_invalid_email assert_not EmailAddress.new(address: 'invalid,email@example.com').valid? end |