Commit 5720bce1 authored by Lin Jen-Shin's avatar Lin Jen-Shin

Also treat newlines as separator, as people would do that

Before this fix, I don't know if those emails would work
having newlines in them.
parent 46bdcd64
......@@ -80,6 +80,6 @@ class PipelinesEmailService < Service
end
def retrieve_recipients(data)
recipients.to_s.split(',').reject(&:blank?)
recipients.to_s.split(/[,(?:\r?\n) ]+/).reject(&:empty?)
end
end
......@@ -6,7 +6,8 @@ describe PipelinesEmailService, :mailer do
end
let(:project) { create(:project, :repository) }
let(:recipient) { 'test@gitlab.com' }
let(:recipients) { 'test@gitlab.com' }
let(:receivers) { [recipients] }
let(:data) do
Gitlab::DataBuilder::Pipeline.build(pipeline)
......@@ -48,18 +49,24 @@ describe PipelinesEmailService, :mailer do
shared_examples 'sending email' do
before do
subject.recipients = recipients
perform_enqueued_jobs do
run
end
end
it 'sends email' do
should_only_email(double(notification_email: recipient), kind: :bcc)
emails = receivers.map { |r| double(notification_email: r) }
should_only_email(*emails, kind: :bcc)
end
end
shared_examples 'not sending email' do
before do
subject.recipients = recipients
perform_enqueued_jobs do
run
end
......@@ -75,10 +82,6 @@ describe PipelinesEmailService, :mailer do
subject.test(data)
end
before do
subject.recipients = recipient
end
context 'when pipeline is failed' do
before do
data[:object_attributes][:status] = 'failed'
......@@ -104,10 +107,6 @@ describe PipelinesEmailService, :mailer do
end
context 'with recipients' do
before do
subject.recipients = recipient
end
context 'with failed pipeline' do
before do
data[:object_attributes][:status] = 'failed'
......@@ -152,9 +151,7 @@ describe PipelinesEmailService, :mailer do
end
context 'with empty recipients list' do
before do
subject.recipients = ' ,, '
end
let(:recipients) { ' ,, ' }
context 'with failed pipeline' do
before do
......@@ -165,5 +162,19 @@ describe PipelinesEmailService, :mailer do
it_behaves_like 'not sending email'
end
end
context 'with recipients list separating with newlines' do
let(:recipients) { "\ntest@gitlab.com, \r\nexample@gitlab.com" }
let(:receivers) { %w[test@gitlab.com example@gitlab.com] }
context 'with failed pipeline' do
before do
data[:object_attributes][:status] = 'failed'
pipeline.update(status: 'failed')
end
it_behaves_like 'sending email'
end
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment