require "test_helper" class MailIdentityTest < ActiveSupport::TestCase test "smtp settings use starttls on port 587" do identity = MailIdentity.new( name: "Test", from_name: "Test", from_email: "hello@example.com", smtp_host: "smtp.example.com", smtp_port: 587, encryption: "starttls", smtp_authentication: "plain", active: true ) assert identity.valid? settings = identity.smtp_settings assert settings[:enable_starttls_auto] assert_not settings[:ssl] end test "smtp settings use ssl on port 465" do identity = MailIdentity.new( name: "Test", from_name: "Test", from_email: "hello@example.com", smtp_host: "smtps.example.com", smtp_port: 465, encryption: "tls", smtp_authentication: "plain", active: true ) assert identity.valid? settings = identity.smtp_settings assert settings[:ssl] assert_not settings[:enable_starttls_auto] assert_equal 15, settings[:open_timeout] assert_equal 60, settings[:read_timeout] end test "rejects ssl encryption on port 587" do identity = MailIdentity.new( name: "Test", from_name: "Test", from_email: "hello@example.com", smtp_host: "smtps.example.com", smtp_port: 587, encryption: "tls", smtp_authentication: "plain", active: true ) assert_not identity.valid? assert_includes identity.errors[:smtp_port], "con SSL/TLS va usata la porta 465 (es. smtps.aruba.it)" end test "infers aruba imap host from smtp" do identity = MailIdentity.new( name: "Aruba", from_name: "Info", from_email: "info@example.com", smtp_host: "smtps.aruba.it", smtp_port: 465, encryption: "tls", smtp_authentication: "plain", smtp_username: "info@example.com", smtp_password: "secret", active: true ) assert identity.valid? assert_equal "imaps.aruba.it", identity.effective_imap_host assert_equal 993, identity.effective_imap_port assert identity.imap_ready? settings = identity.imap_settings assert_equal "imaps.aruba.it", settings[:address] assert_equal 993, settings[:port] assert settings[:ssl] assert_equal "info@example.com", settings[:user_name] assert_equal "secret", settings[:password] end end