# Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/ require 'rails_helper' RSpec.describe SetMailSSLDefault, :aggregate_failures, type: :db_migration do let(:email_notification_smtp) { create(:email_notification_channel, :smtp) } let(:email_notification_smtp_nonssl) { create(:email_notification_channel, :smtp, outbound_port: 25) } let(:email_notification_sendmail) { create(:email_notification_channel, :sendmail) } let(:email_channel_smtp_imap) { create(:email_channel, :smtp, :imap) } let(:email_channel_smtp_nonssl) { create(:email_channel, :smtp, outbound_port: 25) } let(:email_channel_sendmail_pop3) { create(:email_channel, :sendmail, :pop3) } let(:email_gmail) { create(:google_channel) } let(:email_microsoft) { create(:microsoft365_channel) } before do [ email_notification_smtp, email_notification_sendmail, email_channel_smtp_imap, email_channel_sendmail_pop3, email_channel_smtp_nonssl, email_notification_smtp_nonssl, email_gmail, email_microsoft ].each do |elem| if elem.options[:outbound][:options] elem.options[:outbound][:options].delete :ssl_verify if elem.options[:outbound][:adapter] == 'smtp' elem.options[:outbound][:options].delete :ssl end end if elem.options[:inbound] elem.options[:inbound][:options].delete :ssl_verify end elem.save! end migrate end it 'sets Oauth channels to verify SSL' do [email_gmail, email_microsoft].each do |elem| expect(elem.reload.options).to include( inbound: include( options: include(ssl_verify: true) ), outbound: include( options: include(ssl_verify: true) ) ) end end it 'sets custom channels to not verify SSL' do expect(email_channel_smtp_imap.reload.options).to include( inbound: include( adapter: 'imap', options: include(ssl_verify: false) ), outbound: include( adapter: 'smtp', options: include(ssl_verify: false) ) ) expect(email_channel_sendmail_pop3.reload.options).to include( outbound: include( adapter: 'sendmail', ), inbound: include( adapter: 'pop3', options: include(ssl_verify: false) ) ) expect(email_channel_sendmail_pop3.options[:outbound]).not_to have_key('options') expect(email_notification_smtp.reload.options).to include( outbound: include( adapter: 'smtp', options: include(ssl_verify: false) ) ) expect(email_notification_sendmail.options[:outbound]).not_to have_key('options') end end