diff options
-rw-r--r-- | app/mailers/notify.rb | 1 | ||||
-rw-r--r-- | changelogs/unreleased/52477-add-iid-headers-to-emails.yml | 5 | ||||
-rw-r--r-- | spec/support/shared_examples/notify_shared_examples.rb | 17 |
3 files changed, 23 insertions, 0 deletions
diff --git a/app/mailers/notify.rb b/app/mailers/notify.rb index f7347ee61b4..662f3e00047 100644 --- a/app/mailers/notify.rb +++ b/app/mailers/notify.rb @@ -118,6 +118,7 @@ class Notify < BaseMailer add_unsubscription_headers_and_links 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 @reason = headers['X-GitLab-NotificationReason'] diff --git a/changelogs/unreleased/52477-add-iid-headers-to-emails.yml b/changelogs/unreleased/52477-add-iid-headers-to-emails.yml new file mode 100644 index 00000000000..c17b66c5f54 --- /dev/null +++ b/changelogs/unreleased/52477-add-iid-headers-to-emails.yml @@ -0,0 +1,5 @@ +--- +title: Add IID headers to E-Mail notifications +merge_request: 22263 +author: +type: changed diff --git a/spec/support/shared_examples/notify_shared_examples.rb b/spec/support/shared_examples/notify_shared_examples.rb index 5fb9ced3b63..66536e80db2 100644 --- a/spec/support/shared_examples/notify_shared_examples.rb +++ b/spec/support/shared_examples/notify_shared_examples.rb @@ -45,6 +45,20 @@ shared_examples 'an email that contains a header with author username' do 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 it 'has X-GitLab-Project headers' do aggregate_failures do @@ -69,6 +83,7 @@ end 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 IDs' it 'has the characteristics of a threaded reply' do host = Gitlab.config.gitlab.host @@ -85,6 +100,7 @@ end 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 IDs' include_examples 'a new thread email with reply-by-email enabled' it 'includes "Reply to this email directly or <View it on GitLab>"' do @@ -109,6 +125,7 @@ end 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 IDs' include_examples 'a thread answer email with reply-by-email enabled' context 'when reply-by-email is enabled with incoming address with %{key}' do |