summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzegorz@gitlab.com>2017-12-25 07:10:28 +0000
committerGrzegorz Bizon <grzegorz@gitlab.com>2017-12-25 07:10:28 +0000
commit228f42b58b8f23b53494d32ff964aca47e90ac2e (patch)
tree735809a3269588affde298a1758db15b0003759a
parentd6e16693dcfe24df35508fad6d2f03f3d26c0765 (diff)
parent36bdf3dc9ac290058b73ab54abeb9ba84b211b29 (diff)
downloadgitlab-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.yml5
-rw-r--r--lib/api/internal.rb9
-rw-r--r--spec/requests/api/internal_spec.rb10
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