ChatNotificationService - fix sending tag notifications when "only default branch" enabled
This commit is contained in:
parent
fd93d8f044
commit
2fec418336
|
@ -155,6 +155,7 @@ class ChatNotificationService < Service
|
|||
end
|
||||
|
||||
def notify_for_ref?(data)
|
||||
return true if data[:object_kind] == 'tag_push'
|
||||
return true if data.dig(:object_attributes, :tag)
|
||||
return true unless notify_only_default_branch?
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fix chat service tag notifications not sending when only default branch enabled
|
||||
merge_request: 19864
|
||||
author:
|
||||
type: fixed
|
|
@ -245,6 +245,70 @@ RSpec.shared_examples 'slack or mattermost notifications' do
|
|||
end
|
||||
end
|
||||
|
||||
describe 'Push events' do
|
||||
let(:user) { create(:user) }
|
||||
let(:project) { create(:project, :repository, creator: user) }
|
||||
|
||||
before do
|
||||
allow(chat_service).to receive_messages(
|
||||
project: project,
|
||||
service_hook: true,
|
||||
webhook: webhook_url
|
||||
)
|
||||
|
||||
WebMock.stub_request(:post, webhook_url)
|
||||
end
|
||||
|
||||
context 'only notify for the default branch' do
|
||||
context 'when enabled' do
|
||||
before do
|
||||
chat_service.notify_only_default_branch = true
|
||||
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
|
||||
|
||||
it 'still notifies about pushed tags' do
|
||||
ref = "#{Gitlab::Git::TAG_REF_PREFIX}test"
|
||||
push_sample_data = Gitlab::DataBuilder::Push.build(project, user, nil, nil, ref, [])
|
||||
|
||||
chat_service.execute(push_sample_data)
|
||||
|
||||
expect(WebMock).to have_requested(:post, webhook_url).once
|
||||
end
|
||||
end
|
||||
|
||||
context 'when disabled' do
|
||||
before do
|
||||
chat_service.notify_only_default_branch = false
|
||||
end
|
||||
|
||||
it 'notifies about all push events' 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).to have_requested(:post, webhook_url).once
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "Note events" do
|
||||
let(:user) { create(:user) }
|
||||
let(:project) { create(:project, :repository, creator: user) }
|
||||
|
@ -394,23 +458,6 @@ 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