FIX: 'reply by email addresses' site settings should allow email addresses without a 'reply_key' when 'find related post with key' is disabled

This commit is contained in:
Régis Hanol 2018-03-02 17:53:18 +01:00
parent 334ed74346
commit 6a78669ca3
3 changed files with 13 additions and 4 deletions

View File

@ -705,6 +705,7 @@ email:
validator: "ReplyByEmailEnabledValidator"
reply_by_email_address:
default: ''
validator: "ReplyByEmailAddressValidator"
alternative_reply_by_email_addresses:
default: ''
validator: "AlternativeReplyByEmailAddressesValidator"

View File

@ -4,11 +4,14 @@ class ReplyByEmailAddressValidator
end
def valid_value?(val)
return true if val.blank?
return true if val.blank?
return false if val["@"].nil?
!!val["@"] &&
!!val["%{reply_key}"] &&
val.gsub(/\+?%{reply_key}/, "") != SiteSetting.notification_email
if SiteSetting.find_related_post_with_key
!!val["%{reply_key}"] && val.sub(/\+?%{reply_key}/, "") != SiteSetting.notification_email
else
val != SiteSetting.notification_email
end
end
def error_message

View File

@ -18,6 +18,11 @@ describe ReplyByEmailAddressValidator do
expect(validator.valid_value?('foo@bar.com')).to eq(false)
end
it "returns true if value does not contain '%{reply_key}' but 'find_related_post_with_key' is also disabled" do
SiteSetting.expects(:find_related_post_with_key).returns(false)
expect(validator.valid_value?('foo@bar.com')).to eq(true)
end
it "returns false if value is the same as SiteSetting.notification_email" do
SiteSetting.expects(:notification_email).returns("foo@bar.com")
expect(validator.valid_value?('foo+%{reply_key}@bar.com')).to eq(false)