Merge branch '45487-slack-tag-push-notifs' into 'master'
Resolve "Slack Tag push notifications are not send (only default branch option)" Closes #45487 See merge request gitlab-org/gitlab-ce!19864
This commit is contained in:
commit
d04ac74556
3 changed files with 70 additions and 17 deletions
|
@ -155,6 +155,7 @@ class ChatNotificationService < Service
|
||||||
end
|
end
|
||||||
|
|
||||||
def notify_for_ref?(data)
|
def notify_for_ref?(data)
|
||||||
|
return true if data[:object_kind] == 'tag_push'
|
||||||
return true if data.dig(:object_attributes, :tag)
|
return true if data.dig(:object_attributes, :tag)
|
||||||
return true unless notify_only_default_branch?
|
return true unless notify_only_default_branch?
|
||||||
|
|
||||||
|
|
5
changelogs/unreleased/45487-slack-tag-push-notifs.yml
Normal file
5
changelogs/unreleased/45487-slack-tag-push-notifs.yml
Normal file
|
@ -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
|
||||||
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
|
describe "Note events" do
|
||||||
let(:user) { create(:user) }
|
let(:user) { create(:user) }
|
||||||
let(:project) { create(:project, :repository, creator: 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
|
expect(result).to be_falsy
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
context 'when disabled' do
|
context 'when disabled' do
|
||||||
|
|
Loading…
Reference in a new issue