Skip to content
Snippets Groups Projects
Commit 0caa8cbc authored by Rémy Coutable's avatar Rémy Coutable
Browse files

Merge branch...

Merge branch 'bmarjanovic/the-test-button-for-system-hooks-sends-the-x-gitlab-event-header-with-the-value-of-the-event' into 'master' 

Fix System hooks  X-GitLab-Event Header

See merge request !132167



Merged-by: default avatarRémy Coutable <remy@rymai.me>
Approved-by: default avatarRémy Coutable <remy@rymai.me>
Reviewed-by: default avatarRémy Coutable <remy@rymai.me>
Co-authored-by: default avatarbmarjanovic <bmarjanovic@gitlab.com>
parents 05fb587c 698851ce
No related branches found
No related tags found
1 merge request!132167Fix System hooks X-GitLab-Event Header
Pipeline #1011269952 failed
......@@ -36,7 +36,9 @@ def initialize
attr_accessor :hook, :data, :hook_name, :request_options
attr_reader :uniqueness_token
def self.hook_to_event(hook_name)
def self.hook_to_event(hook_name, hook = nil)
return hook.class.name.titleize if hook.is_a?(SystemHook)
hook_name.to_s.singularize.titleize
end
......@@ -194,7 +196,7 @@ def build_headers
headers = {
'Content-Type' => 'application/json',
'User-Agent' => "GitLab/#{Gitlab::VERSION}",
Gitlab::WebHooks::GITLAB_EVENT_HEADER => self.class.hook_to_event(hook_name),
Gitlab::WebHooks::GITLAB_EVENT_HEADER => self.class.hook_to_event(hook_name, hook),
Gitlab::WebHooks::GITLAB_UUID_HEADER => SecureRandom.uuid,
Gitlab::WebHooks::GITLAB_INSTANCE_HEADER => Gitlab.config.gitlab.base_url
}
......
......@@ -171,6 +171,23 @@
end
end
context 'with SystemHook' do
let_it_be(:system_hook) { create(:system_hook) }
let(:service_instance) { described_class.new(system_hook, data, :push_hooks) }
before do
stub_full_request(system_hook.url, method: :post)
end
it 'POSTs to the webhook URL with correct headers' do
service_instance.execute
expect(WebMock).to have_requested(:post, stubbed_hostname(system_hook.url)).with(
headers: headers.merge({ 'X-Gitlab-Event' => 'System Hook' })
).once
end
end
it 'POSTs the data as JSON and returns expected headers' do
stub_full_request(project_hook.url, method: :post)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment