From 46fbb5fae8d37b64d4cdb42a4458907a73a88f1a Mon Sep 17 00:00:00 2001 From: Natanael Silva <nsilva@gitlab.com> Date: Fri, 1 Nov 2024 20:33:07 +0000 Subject: [PATCH] fixed: Redirect behaviour for git-upload-pack requests change rubocop exception to inline option fixed: using let() for creating projects potentially making tests slower Adding request spec examples fix: updating tests Changelog: fixed EE: true --- .../git_http_client_controller.rb | 2 +- ee/spec/requests/git_http_geo_spec.rb | 24 +++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/ee/app/controllers/ee/repositories/git_http_client_controller.rb b/ee/app/controllers/ee/repositories/git_http_client_controller.rb index 482314fed8edb..0aefcfcc18e32 100644 --- a/ee/app/controllers/ee/repositories/git_http_client_controller.rb +++ b/ee/app/controllers/ee/repositories/git_http_client_controller.rb @@ -93,7 +93,7 @@ def redirect? def out_of_date_redirect? return false unless project - git_upload_pack_request? && repository_out_of_date?(project) + info_refs_request? && git_upload_pack_request? && repository_out_of_date?(project) end private diff --git a/ee/spec/requests/git_http_geo_spec.rb b/ee/spec/requests/git_http_geo_spec.rb index 2b787f7862297..237f889643114 100644 --- a/ee/spec/requests/git_http_geo_spec.rb +++ b/ee/spec/requests/git_http_geo_spec.rb @@ -258,22 +258,22 @@ def make_request it_behaves_like 'a Geo git request' it_behaves_like 'a Geo 200 git request' end - end - - context 'when the repository does not exist' do - let_it_be(:project) { project_no_repo } - - let(:endpoint_path) { "/#{project.full_path}.git/git-upload-pack" } - let(:redirect_url) { full_redirected_url } - it_behaves_like 'a Geo 302 redirect to Primary' + context 'when the repository has been updated' do + let(:geo_gl_id) { "key-#{key.id}" } + # to avoid "Unexpected actor :geo." error + let(:auth_token) { Gitlab::Geo::BaseRequest.new(scope: project.full_path, gl_id: geo_gl_id).authorization } + let(:project_with_repo_but_not_synced) { create(:project, :repository, :private) } + let(:project) { project_with_repo_but_not_synced } - context 'when terms are enforced' do - before do - enforce_terms + subject do + post "/#{project_with_repo_but_not_synced.full_path}.git/git-upload-pack", params: {}, headers: env + response end - it_behaves_like 'a Geo 302 redirect to Primary' + it 'is not redirected' do + is_expected.to have_gitlab_http_status(:ok) + end end end end -- GitLab