Files
eminuxCRM/test/services/mailings/imap_bounce_reader_test.rb
eminuxandCursor 36b3ffe507
CI / scan_ruby (push) Failing after 13m27s
CI / scan_js (push) Successful in 11m45s
CI / lint (push) Failing after 12m4s
Aggiunge IMAP bounce e flag email non valide nel CRM.
Permette di leggere i bounce dalla stessa MailIdentity SMTP, aggiornare le email in anagrafica e saltare gli indirizzi invalidi nei mailing.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 19:46:04 +02:00

41 lines
1.2 KiB
Ruby

require "test_helper"
class Mailings::ImapBounceReaderTest < ActiveSupport::TestCase
test "parses aruba-style delivery failure from raw rfc822" do
identity = create_mail_identity(
from_email: "info@matchlivetv.it",
smtp_username: "info@matchlivetv.it",
smtp_host: "smtps.aruba.it",
smtp_port: 465,
encryption: "tls"
)
raw = <<~EML
From: mail-daemon@example.com
To: info@matchlivetv.it
Subject: Recapito fallito
Date: Mon, 07 Sep 2026 08:14:05 +0200
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Delivery to the following recipients failed permanently:
* broken@club.it
Reason: 550 5.1.1 User unknown
Final-Recipient: rfc822; broken@club.it
Diagnostic-Code: smtp; 550 5.1.1 User unknown
Subject: Più visibilità per ASD Test Club
EML
reader = Mailings::ImapBounceReader.new(identity)
parsed = reader.send(:parse_message, raw, uid: 42)
assert_not_nil parsed
assert_includes parsed[:failed_emails], "broken@club.it"
assert_equal "ASD Test Club", parsed[:club_hint]
assert_match(/550|User unknown/i, parsed[:reason].to_s)
end
end