diff options
author | Grzegorz Bizon <grzegorz@gitlab.com> | 2017-12-25 07:10:28 +0000 |
---|---|---|
committer | Grzegorz Bizon <grzegorz@gitlab.com> | 2017-12-25 07:10:28 +0000 |
commit | 228f42b58b8f23b53494d32ff964aca47e90ac2e (patch) | |
tree | 735809a3269588affde298a1758db15b0003759a | |
parent | d6e16693dcfe24df35508fad6d2f03f3d26c0765 (diff) | |
parent | 36bdf3dc9ac290058b73ab54abeb9ba84b211b29 (diff) | |
download | gitlab-ce-228f42b58b8f23b53494d32ff964aca47e90ac2e.tar.gz |
Merge branch 'sh-handle-orphaned-deploy-keys' into 'master'
Gracefully handle orphaned write deploy keys in /internal/post_receive
Closes #41466
See merge request gitlab-org/gitlab-ce!16127
-rw-r--r-- | changelogs/unreleased/sh-handle-orphaned-deploy-keys.yml | 5 | ||||
-rw-r--r-- | lib/api/internal.rb | 9 | ||||
-rw-r--r-- | spec/requests/api/internal_spec.rb | 10 |
3 files changed, 21 insertions, 3 deletions
diff --git a/changelogs/unreleased/sh-handle-orphaned-deploy-keys.yml b/changelogs/unreleased/sh-handle-orphaned-deploy-keys.yml new file mode 100644 index 00000000000..7d3b622534e --- /dev/null +++ b/changelogs/unreleased/sh-handle-orphaned-deploy-keys.yml @@ -0,0 +1,5 @@ +--- +title: Gracefully handle orphaned write deploy keys in /internal/post_receive +merge_request: +author: +type: fixed diff --git a/lib/api/internal.rb b/lib/api/internal.rb index ccaaeca10d4..79b302aae70 100644 --- a/lib/api/internal.rb +++ b/lib/api/internal.rb @@ -190,9 +190,12 @@ module API project = Gitlab::GlRepository.parse(params[:gl_repository]).first user = identify(params[:identifier]) - redirect_message = Gitlab::Checks::ProjectMoved.fetch_redirect_message(user.id, project.id) - if redirect_message - output[:redirected_message] = redirect_message + + # A user is not guaranteed to be returned; an orphaned write deploy + # key could be used + if user + redirect_message = Gitlab::Checks::ProjectMoved.fetch_redirect_message(user.id, project.id) + output[:redirected_message] = redirect_message if redirect_message end output diff --git a/spec/requests/api/internal_spec.rb b/spec/requests/api/internal_spec.rb index bbcd1194ae5..7b25047ea8f 100644 --- a/spec/requests/api/internal_spec.rb +++ b/spec/requests/api/internal_spec.rb @@ -784,6 +784,16 @@ describe API::Internal do expect(json_response["redirected_message"]).to eq(project_moved.redirect_message) end end + + context 'with an orphaned write deploy key' do + it 'does not try to notify that project moved' do + allow_any_instance_of(Gitlab::Identifier).to receive(:identify).and_return(nil) + + post api("/internal/post_receive"), valid_params + + expect(response).to have_gitlab_http_status(200) + end + end end describe 'POST /internal/pre_receive' do |