Commit 4533c288 authored by Kamil Trzciński's avatar Kamil Trzciński

Merge branch '37759-also-treat-newlines-as-separator' into 'master'

Treat newlines as separators for pipeline emails service

Closes #37759

See merge request gitlab-org/gitlab-ce!14250
parents a0c9ed3a ba3376f3
...@@ -80,6 +80,6 @@ class PipelinesEmailService < Service ...@@ -80,6 +80,6 @@ class PipelinesEmailService < Service
end end
def retrieve_recipients(data) def retrieve_recipients(data)
recipients.to_s.split(',').reject(&:blank?) recipients.to_s.split(/[,(?:\r?\n) ]+/).reject(&:empty?)
end end
end end
---
title: Allow using newlines in pipeline email service recipients
merge_request: 14250
author:
type: fixed
...@@ -6,7 +6,8 @@ describe PipelinesEmailService, :mailer do ...@@ -6,7 +6,8 @@ describe PipelinesEmailService, :mailer do
end end
let(:project) { create(:project, :repository) } let(:project) { create(:project, :repository) }
let(:recipient) { 'test@gitlab.com' } let(:recipients) { 'test@gitlab.com' }
let(:receivers) { [recipients] }
let(:data) do let(:data) do
Gitlab::DataBuilder::Pipeline.build(pipeline) Gitlab::DataBuilder::Pipeline.build(pipeline)
...@@ -48,18 +49,24 @@ describe PipelinesEmailService, :mailer do ...@@ -48,18 +49,24 @@ describe PipelinesEmailService, :mailer do
shared_examples 'sending email' do shared_examples 'sending email' do
before do before do
subject.recipients = recipients
perform_enqueued_jobs do perform_enqueued_jobs do
run run
end end
end end
it 'sends email' do 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
end end
shared_examples 'not sending email' do shared_examples 'not sending email' do
before do before do
subject.recipients = recipients
perform_enqueued_jobs do perform_enqueued_jobs do
run run
end end
...@@ -75,10 +82,6 @@ describe PipelinesEmailService, :mailer do ...@@ -75,10 +82,6 @@ describe PipelinesEmailService, :mailer do
subject.test(data) subject.test(data)
end end
before do
subject.recipients = recipient
end
context 'when pipeline is failed' do context 'when pipeline is failed' do
before do before do
data[:object_attributes][:status] = 'failed' data[:object_attributes][:status] = 'failed'
...@@ -104,10 +107,6 @@ describe PipelinesEmailService, :mailer do ...@@ -104,10 +107,6 @@ describe PipelinesEmailService, :mailer do
end end
context 'with recipients' do context 'with recipients' do
before do
subject.recipients = recipient
end
context 'with failed pipeline' do context 'with failed pipeline' do
before do before do
data[:object_attributes][:status] = 'failed' data[:object_attributes][:status] = 'failed'
...@@ -152,9 +151,7 @@ describe PipelinesEmailService, :mailer do ...@@ -152,9 +151,7 @@ describe PipelinesEmailService, :mailer do
end end
context 'with empty recipients list' do context 'with empty recipients list' do
before do let(:recipients) { ' ,, ' }
subject.recipients = ' ,, '
end
context 'with failed pipeline' do context 'with failed pipeline' do
before do before do
...@@ -165,5 +162,19 @@ describe PipelinesEmailService, :mailer do ...@@ -165,5 +162,19 @@ describe PipelinesEmailService, :mailer do
it_behaves_like 'not sending email' it_behaves_like 'not sending email'
end end
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
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