DEV: Fix SMTP bounce regexp (#16019)

Never trust me with regexp. Follow up to
01ef1d08fc,
which did not take into account codes in
the format X.X.XX (with the 2 digits on the end)
This commit is contained in:
Martin Brennan 2022-02-22 08:54:01 +10:00 committed by GitHub
parent 685d186351
commit fa0c796baf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 4 additions and 2 deletions

View File

@ -15,7 +15,7 @@ class EmailLog < ActiveRecord::Base
} }
# cf. https://www.iana.org/assignments/smtp-enhanced-status-codes/smtp-enhanced-status-codes.xhtml # cf. https://www.iana.org/assignments/smtp-enhanced-status-codes/smtp-enhanced-status-codes.xhtml
SMTP_ERROR_CODE_REGEXP = Regexp.new(/\d\.\d\.\d|\d\d\d/).freeze SMTP_ERROR_CODE_REGEXP = Regexp.new(/\d\.\d\.\d+|\d{3}/).freeze
belongs_to :user belongs_to :user
belongs_to :post belongs_to :post

View File

@ -2,7 +2,7 @@
# #
class ConformBounceErrorCode < ActiveRecord::Migration[6.1] class ConformBounceErrorCode < ActiveRecord::Migration[6.1]
def up def up
DB.exec(<<~SQL, regexp: '\d\.\d\.\d|\d\d\d') DB.exec(<<~SQL, regexp: '\d\.\d\.\d+|\d{3}')
UPDATE email_logs UPDATE email_logs
SET bounce_error_code = ( SET bounce_error_code = (
SELECT array_to_string( SELECT array_to_string(

View File

@ -168,6 +168,8 @@ describe EmailLog do
it "makes sure the bounce_error_code is in the format X.X.X or XXX" do it "makes sure the bounce_error_code is in the format X.X.X or XXX" do
email_log.update!(bounce_error_code: "5.1.1") email_log.update!(bounce_error_code: "5.1.1")
expect(email_log.reload.bounce_error_code).to eq("5.1.1") expect(email_log.reload.bounce_error_code).to eq("5.1.1")
email_log.update!(bounce_error_code: "5.2.23")
expect(email_log.reload.bounce_error_code).to eq("5.2.23")
email_log.update!(bounce_error_code: "5.0.0 (permanent failure)") email_log.update!(bounce_error_code: "5.0.0 (permanent failure)")
expect(email_log.reload.bounce_error_code).to eq("5.0.0") expect(email_log.reload.bounce_error_code).to eq("5.0.0")
email_log.update!(bounce_error_code: "422") email_log.update!(bounce_error_code: "422")