SlackService - respect `notify_only_default_branch` for push events
This commit is contained in:
parent
f330f65960
commit
158514bba3
|
@ -99,7 +99,7 @@ class ChatNotificationService < Service
|
|||
def get_message(object_kind, data)
|
||||
case object_kind
|
||||
when "push", "tag_push"
|
||||
ChatMessage::PushMessage.new(data)
|
||||
ChatMessage::PushMessage.new(data) if notify_for_ref?(data)
|
||||
when "issue"
|
||||
ChatMessage::IssueMessage.new(data) unless update?(data)
|
||||
when "merge_request"
|
||||
|
@ -145,10 +145,16 @@ class ChatNotificationService < Service
|
|||
end
|
||||
|
||||
def notify_for_ref?(data)
|
||||
return true if data[:object_attributes][:tag]
|
||||
return true if data.dig(:object_attributes, :tag)
|
||||
return true unless notify_only_default_branch?
|
||||
|
||||
data[:object_attributes][:ref] == project.default_branch
|
||||
ref = if data[:ref]
|
||||
Gitlab::Git.ref_name(data[:ref])
|
||||
else
|
||||
data.dig(:object_attributes, :ref)
|
||||
end
|
||||
|
||||
ref == project.default_branch
|
||||
end
|
||||
|
||||
def notify_for_pipeline?(data)
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fix Slack/Mattermost notifications not respecting `notify_only_default_branch` setting for pushes
|
||||
merge_request: 17345
|
||||
author:
|
||||
type: fixed
|
|
@ -337,6 +337,7 @@ RSpec.shared_examples 'slack or mattermost notifications' do
|
|||
|
||||
before do
|
||||
chat_service.notify_only_default_branch = true
|
||||
WebMock.stub_request(:post, webhook_url)
|
||||
end
|
||||
|
||||
it 'does not call the Slack/Mattermost API for pipeline events' do
|
||||
|
@ -345,6 +346,23 @@ RSpec.shared_examples 'slack or mattermost notifications' do
|
|||
|
||||
expect(result).to be_falsy
|
||||
end
|
||||
|
||||
it 'does not notify push events if they are not for the default branch' do
|
||||
ref = "#{Gitlab::Git::BRANCH_REF_PREFIX}test"
|
||||
push_sample_data = Gitlab::DataBuilder::Push.build(project, user, nil, nil, ref, [])
|
||||
|
||||
chat_service.execute(push_sample_data)
|
||||
|
||||
expect(WebMock).not_to have_requested(:post, webhook_url)
|
||||
end
|
||||
|
||||
it 'notifies about push events for the default branch' do
|
||||
push_sample_data = Gitlab::DataBuilder::Push.build_sample(project, user)
|
||||
|
||||
chat_service.execute(push_sample_data)
|
||||
|
||||
expect(WebMock).to have_requested(:post, webhook_url).once
|
||||
end
|
||||
end
|
||||
|
||||
context 'when disabled' do
|
||||
|
|
Loading…
Reference in New Issue