diff --git a/lib/api/internal.rb b/lib/api/internal.rb index c7705aeb59a..2200208b946 100644 --- a/lib/api/internal.rb +++ b/lib/api/internal.rb @@ -16,7 +16,7 @@ module API # helpers do - def wiki + def wiki? @wiki ||= params[:project].end_with?('.wiki') && !Project.find_with_namespace(params[:project]) end @@ -38,12 +38,12 @@ module API # Strip out the .wiki from the pathname before finding the # project. This applies the correct project permissions to # the wiki repository as well. - project_path.chomp!('.wiki') if wiki + project_path.chomp!('.wiki') if wiki? project = Project.find_with_namespace(project_path) access = - if wiki + if wiki? Gitlab::GitAccessWiki.new(actor, project) else Gitlab::GitAccess.new(actor, project) diff --git a/spec/requests/api/internal_spec.rb b/spec/requests/api/internal_spec.rb index d47474d761c..1398dcc1918 100644 --- a/spec/requests/api/internal_spec.rb +++ b/spec/requests/api/internal_spec.rb @@ -6,6 +6,8 @@ describe API::API, api: true do let(:key) { create(:key, user: user) } let(:project) { create(:project) } let(:secret_token) { File.read Gitlab.config.gitlab_shell.secret_file } + # Project with path ending in .wiki + let(:project_wiki) { create(:project, name: 'my.wiki', path: 'my.wiki') } describe "GET /internal/check", no_db: true do it do @@ -55,9 +57,13 @@ describe API::API, api: true do end context "git push with project.wiki" do - let(:project) { create(:project, name: 'my.wiki', path: 'my.wiki') } + + before do + project_wiki.team << [user, :developer] + end + it do - push(key, project) + push(key, project_wiki) expect(response.status).to eq(200) expect(json_response["status"]).to be_truthy