Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-04-14 17:17:48 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-04-14 17:17:48 +0300
commitd56c47033c32d6d32a864e5c16a3b2fd959b08da (patch)
tree8a249fae71ddfef174030ce966e5ebe6ed2937c5 /spec
parent1b7933f32303f102555ce078716a33a701e434e1 (diff)
Add latest changes from gitlab-org/gitlab@15-10-stable-ee
Diffstat (limited to 'spec')
-rw-r--r--spec/initializers/mail_starttls_patch_spec.rb86
1 files changed, 86 insertions, 0 deletions
diff --git a/spec/initializers/mail_starttls_patch_spec.rb b/spec/initializers/mail_starttls_patch_spec.rb
new file mode 100644
index 00000000000..126ffb98f0e
--- /dev/null
+++ b/spec/initializers/mail_starttls_patch_spec.rb
@@ -0,0 +1,86 @@
+# frozen_string_literal: true
+
+# rubocop:disable RSpec/VariableDefinition, RSpec/VariableName
+
+require 'spec_helper'
+require 'mail'
+require_relative '../../config/initializers/mail_starttls_patch'
+
+RSpec.describe 'Mail STARTTLS patch', feature_category: :integrations do
+ using RSpec::Parameterized::TableSyntax
+
+ let(:message) do
+ Mail.new do
+ from 'sender@example.com'
+ to 'receiver@example.com'
+ subject 'test mesage'
+ end
+ end
+
+ # Taken from https://github.com/mikel/mail/pull/1536#issue-1490438378
+ where(:ssl, :tls, :enable_starttls, :enable_starttls_auto, :smtp_tls, :smtp_starttls_mode) do
+ true | nil | nil | nil | true | false
+ nil | false | nil | nil | false | :auto
+ nil | false | nil | true | false | :auto
+ false | false | true | false | false | :always
+ false | nil | false | false | false | false
+ false | false | false | nil | false | false
+ false | nil | :always | nil | false | :always
+ false | nil | :auto | nil | false | :auto
+ end
+
+ with_them do
+ let(:values) do
+ {
+ ssl: ssl,
+ tls: tls,
+ enable_starttls: enable_starttls,
+ enable_starttls_auto: enable_starttls_auto
+ }
+ end
+
+ let(:mail) { Mail::SMTP.new(values) }
+ let(:smtp) { double }
+
+ it 'sets TLS and STARTTLS settings properly' do
+ expect(smtp).to receive(:open_timeout=)
+ expect(smtp).to receive(:read_timeout=)
+ expect(smtp).to receive(:start)
+
+ if smtp_tls
+ expect(smtp).to receive(:enable_tls)
+ expect(smtp).to receive(:disable_starttls)
+ else
+ expect(smtp).to receive(:disable_tls)
+
+ case smtp_starttls_mode
+ when :always
+ expect(smtp).to receive(:enable_starttls)
+ when :auto
+ expect(smtp).to receive(:enable_starttls_auto)
+ when false
+ expect(smtp).to receive(:disable_starttls)
+ end
+ end
+
+ allow(Net::SMTP).to receive(:new).and_return(smtp)
+ mail.deliver!(message)
+ end
+ end
+
+ context 'when enable_starttls and tls are enabled' do
+ let(:values) do
+ {
+ tls: true,
+ enable_starttls: true
+ }
+ end
+
+ let(:mail) { Mail::SMTP.new(values) }
+
+ it 'raises an argument exception' do
+ expect { mail.deliver!(message) }.to raise_error(ArgumentError)
+ end
+ end
+end
+# rubocop:enable RSpec/VariableDefinition, RSpec/VariableName