Commit 333cb573 authored by Robert Speicher's avatar Robert Speicher

Merge branch 'branches-mr-button-permissions' into 'master'

Hides merge request button on branches page

## What does this MR do?

 If user does not have the correct permissions, the merge request button is hidden

## What are the relevant issue numbers?

Closes #21805

See merge request !6181
parents 06438c74 315e6392
...@@ -34,6 +34,7 @@ v 8.12.0 (unreleased) ...@@ -34,6 +34,7 @@ v 8.12.0 (unreleased)
- Add textarea autoresize after comment (ClemMakesApps) - Add textarea autoresize after comment (ClemMakesApps)
- Refresh todos count cache when an Issue/MR is deleted - Refresh todos count cache when an Issue/MR is deleted
- Fix branches page dropdown sort alignment (ClemMakesApps) - Fix branches page dropdown sort alignment (ClemMakesApps)
- Hides merge request button on branches page is user doesn't have permissions
- Add white background for no readme container (ClemMakesApps) - Add white background for no readme container (ClemMakesApps)
- API: Expose issue confidentiality flag. (Robert Schilling) - API: Expose issue confidentiality flag. (Robert Schilling)
- Fix markdown anchor icon interaction (ClemMakesApps) - Fix markdown anchor icon interaction (ClemMakesApps)
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
- diverging_commit_counts = @repository.diverging_commit_counts(branch) - diverging_commit_counts = @repository.diverging_commit_counts(branch)
- number_commits_behind = diverging_commit_counts[:behind] - number_commits_behind = diverging_commit_counts[:behind]
- number_commits_ahead = diverging_commit_counts[:ahead] - number_commits_ahead = diverging_commit_counts[:ahead]
- merge_project = can?(current_user, :create_merge_request, @project) ? @project : (current_user && current_user.fork_of(@project))
%li(class="js-branch-#{branch.name}") %li(class="js-branch-#{branch.name}")
%div %div
= link_to namespace_project_tree_path(@project.namespace, @project, branch.name), class: 'item-title str-truncated' do = link_to namespace_project_tree_path(@project.namespace, @project, branch.name), class: 'item-title str-truncated' do
...@@ -19,12 +20,12 @@ ...@@ -19,12 +20,12 @@
%i.fa.fa-lock %i.fa.fa-lock
protected protected
.controls.hidden-xs .controls.hidden-xs
- if create_mr_button?(@repository.root_ref, branch.name) - if merge_project && create_mr_button?(@repository.root_ref, branch.name)
= link_to create_mr_path(@repository.root_ref, branch.name), class: 'btn btn-default' do = link_to create_mr_path(@repository.root_ref, branch.name), class: 'btn btn-default' do
Merge Request Merge Request
- if branch.name != @repository.root_ref - if branch.name != @repository.root_ref
= link_to namespace_project_compare_index_path(@project.namespace, @project, from: @repository.root_ref, to: branch.name), class: 'btn btn-default', method: :post, title: "Compare" do = link_to namespace_project_compare_index_path(@project.namespace, @project, from: @repository.root_ref, to: branch.name), class: "btn btn-default #{'prepend-left-10' unless merge_project}", method: :post, title: "Compare" do
Compare Compare
= render 'projects/buttons/download', project: @project, ref: branch.name = render 'projects/buttons/download', project: @project, ref: branch.name
......
require 'spec_helper' require 'spec_helper'
describe 'Branches', feature: true do describe 'Branches', feature: true do
let(:project) { create(:project) } let(:project) { create(:project, :public) }
let(:repository) { project.repository } let(:repository) { project.repository }
before do context 'logged in' do
login_as :user before do
project.team << [@user, :developer] login_as :user
end project.team << [@user, :developer]
end
describe 'Initial branches page' do describe 'Initial branches page' do
it 'shows all the branches' do it 'shows all the branches' do
visit namespace_project_branches_path(project.namespace, project) visit namespace_project_branches_path(project.namespace, project)
repository.branches { |branch| expect(page).to have_content("#{branch.name}") } repository.branches { |branch| expect(page).to have_content("#{branch.name}") }
expect(page).to have_content("Protected branches can be managed in project settings") expect(page).to have_content("Protected branches can be managed in project settings")
end
end
describe 'Find branches' do
it 'shows filtered branches', js: true do
visit namespace_project_branches_path(project.namespace, project)
fill_in 'branch-search', with: 'fix'
find('#branch-search').native.send_keys(:enter)
expect(page).to have_content('fix')
expect(find('.all-branches')).to have_selector('li', count: 1)
end
end end
end end
describe 'Find branches' do context 'logged out' do
it 'shows filtered branches', js: true do before do
visit namespace_project_branches_path(project.namespace, project) visit namespace_project_branches_path(project.namespace, project)
end
fill_in 'branch-search', with: 'fix' it 'does not show merge request button' do
find('#branch-search').native.send_keys(:enter) page.within first('.all-branches li') do
expect(page).not_to have_content 'Merge Request'
expect(page).to have_content('fix') end
expect(find('.all-branches')).to have_selector('li', count: 1)
end end
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment