summaryrefslogtreecommitdiff
path: root/spec/requests/git_http_spec.rb
diff options
context:
space:
mode:
authorBob Van Landuyt <bob@vanlanduyt.co>2018-05-15 12:25:51 +0200
committerBob Van Landuyt <bob@vanlanduyt.co>2018-06-11 17:35:13 +0200
commit698515313fe38fb3f85fdeec1efa15e2c8b54cfd (patch)
treef48e87c94ddbd458319168056596e993f38e76b2 /spec/requests/git_http_spec.rb
parent75797ac3d2b534a1deda48c8450027055a7c721b (diff)
downloadgitlab-ce-698515313fe38fb3f85fdeec1efa15e2c8b54cfd.tar.gz
Fixes rejected pushes from maintainersbvl-fix-maintainer-push-rejected
Before the push git would make a call to `/:namespace/:project/git-receive-pack`. This would perform an access check without a ref. So the `Project#branch_allows_maintainer_push?` would return false. This adjusts `Project#branch_allows_maintainer_push?` to return true when passing no branch name if there are merge requests open that would allow the user to push. The actual check then happens when a call to `/api/v4/internal/allowed` is made from a git hook.
Diffstat (limited to 'spec/requests/git_http_spec.rb')
-rw-r--r--spec/requests/git_http_spec.rb17
1 files changed, 17 insertions, 0 deletions
diff --git a/spec/requests/git_http_spec.rb b/spec/requests/git_http_spec.rb
index 2514dab1714..92fcfb65269 100644
--- a/spec/requests/git_http_spec.rb
+++ b/spec/requests/git_http_spec.rb
@@ -1,6 +1,7 @@
require "spec_helper"
describe 'Git HTTP requests' do
+ include ProjectForksHelper
include TermsHelper
include GitHttpHelpers
include WorkhorseHelpers
@@ -305,6 +306,22 @@ describe 'Git HTTP requests' do
expect(response.body).to eq(change_access_error(:push_code))
end
end
+
+ context 'when merge requests are open that allow maintainer access' do
+ let(:canonical_project) { create(:project, :public, :repository) }
+ let(:project) { fork_project(canonical_project, nil, repository: true) }
+
+ before do
+ canonical_project.add_master(user)
+ create(:merge_request,
+ source_project: project,
+ target_project: canonical_project,
+ source_branch: 'fixes',
+ allow_collaboration: true)
+ end
+
+ it_behaves_like 'pushes are allowed'
+ end
end
end