Commit 2063dcf5 authored by Lukas Eipert's avatar Lukas Eipert

Add IID headers to E-Mail notifications

These headers can be used to build URLs for API requests. Good examples
would be Issues and Merge Requests
parent e11ff3b6
...@@ -118,6 +118,7 @@ class Notify < BaseMailer ...@@ -118,6 +118,7 @@ class Notify < BaseMailer
add_unsubscription_headers_and_links add_unsubscription_headers_and_links
headers["X-GitLab-#{model.class.name}-ID"] = model.id headers["X-GitLab-#{model.class.name}-ID"] = model.id
headers["X-GitLab-#{model.class.name}-IID"] = model.iid if model.respond_to?(:iid)
headers['X-GitLab-Reply-Key'] = reply_key headers['X-GitLab-Reply-Key'] = reply_key
@reason = headers['X-GitLab-NotificationReason'] @reason = headers['X-GitLab-NotificationReason']
......
---
title: Add IID headers to E-Mail notifications
merge_request: 22263
author:
type: changed
...@@ -45,6 +45,20 @@ shared_examples 'an email that contains a header with author username' do ...@@ -45,6 +45,20 @@ shared_examples 'an email that contains a header with author username' do
end end
end end
shared_examples 'an email with X-GitLab headers containing IDs' do
it 'has X-GitLab-*-ID header' do
is_expected.to have_header "X-GitLab-#{model.class.name}-ID", "#{model.id}"
end
it 'has X-GitLab-*-IID header if model has iid defined' do
if model.respond_to?(:iid)
is_expected.to have_header "X-GitLab-#{model.class.name}-IID", "#{model.iid}"
else
expect(subject.header["X-GitLab-#{model.class.name}-IID"]).to eq nil
end
end
end
shared_examples 'an email with X-GitLab headers containing project details' do shared_examples 'an email with X-GitLab headers containing project details' do
it 'has X-GitLab-Project headers' do it 'has X-GitLab-Project headers' do
aggregate_failures do aggregate_failures do
...@@ -69,6 +83,7 @@ end ...@@ -69,6 +83,7 @@ end
shared_examples 'a thread answer email with reply-by-email enabled' do shared_examples 'a thread answer email with reply-by-email enabled' do
include_examples 'an email with X-GitLab headers containing project details' include_examples 'an email with X-GitLab headers containing project details'
include_examples 'an email with X-GitLab headers containing IDs'
it 'has the characteristics of a threaded reply' do it 'has the characteristics of a threaded reply' do
host = Gitlab.config.gitlab.host host = Gitlab.config.gitlab.host
...@@ -85,6 +100,7 @@ end ...@@ -85,6 +100,7 @@ end
shared_examples 'an email starting a new thread with reply-by-email enabled' do shared_examples 'an email starting a new thread with reply-by-email enabled' do
include_examples 'an email with X-GitLab headers containing project details' include_examples 'an email with X-GitLab headers containing project details'
include_examples 'an email with X-GitLab headers containing IDs'
include_examples 'a new thread email with reply-by-email enabled' include_examples 'a new thread email with reply-by-email enabled'
it 'includes "Reply to this email directly or <View it on GitLab>"' do it 'includes "Reply to this email directly or <View it on GitLab>"' do
...@@ -109,6 +125,7 @@ end ...@@ -109,6 +125,7 @@ end
shared_examples 'an answer to an existing thread with reply-by-email enabled' do shared_examples 'an answer to an existing thread with reply-by-email enabled' do
include_examples 'an email with X-GitLab headers containing project details' include_examples 'an email with X-GitLab headers containing project details'
include_examples 'an email with X-GitLab headers containing IDs'
include_examples 'a thread answer email with reply-by-email enabled' include_examples 'a thread answer email with reply-by-email enabled'
context 'when reply-by-email is enabled with incoming address with %{key}' do context 'when reply-by-email is enabled with incoming address with %{key}' do
......
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