diff options
author | Lee Tickett <lee@tickett.net> | 2019-09-06 16:16:39 +0000 |
---|---|---|
committer | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2019-09-06 16:16:39 +0000 |
commit | 6639aa3f489b6ad2a6184f9b748c887d512ec4b4 (patch) | |
tree | f7984e35c5ad89877539409f0ac36fbe2faca9ff | |
parent | af0eb56ea1be60a1b99d6ba7a8dd8848f0a29a6c (diff) | |
download | gitlab-ce-6639aa3f489b6ad2a6184f9b748c887d512ec4b4.tar.gz |
Only show `/copy_metadata` when usable
3 files changed, 19 insertions, 1 deletions
diff --git a/changelogs/unreleased/31735-only-show-copy_metadata-when-usable.yml b/changelogs/unreleased/31735-only-show-copy_metadata-when-usable.yml new file mode 100644 index 00000000000..9f34a912dc5 --- /dev/null +++ b/changelogs/unreleased/31735-only-show-copy_metadata-when-usable.yml @@ -0,0 +1,5 @@ +--- +title: Only show /copy_metadata quick action when usable +merge_request: 31735 +author: Lee Tickett +type: fixed diff --git a/lib/gitlab/quick_actions/issue_and_merge_request_actions.rb b/lib/gitlab/quick_actions/issue_and_merge_request_actions.rb index 533c74ba9b4..183191f31a6 100644 --- a/lib/gitlab/quick_actions/issue_and_merge_request_actions.rb +++ b/lib/gitlab/quick_actions/issue_and_merge_request_actions.rb @@ -122,7 +122,7 @@ module Gitlab params '#issue | !merge_request' types Issue, MergeRequest condition do - current_user.can?(:"update_#{quick_action_target.to_ability_name}", quick_action_target) + current_user.can?(:"admin_#{quick_action_target.to_ability_name}", quick_action_target) end parse_params do |issuable_param| extract_references(issuable_param, :issue).first || diff --git a/spec/services/quick_actions/interpret_service_spec.rb b/spec/services/quick_actions/interpret_service_spec.rb index 6ca0a3fa448..b65ee16c189 100644 --- a/spec/services/quick_actions/interpret_service_spec.rb +++ b/spec/services/quick_actions/interpret_service_spec.rb @@ -1140,6 +1140,19 @@ describe QuickActions::InterpretService do let(:todo_label) { create(:label, project: project, title: 'To Do') } let(:inreview_label) { create(:label, project: project, title: 'In Review') } + it 'is available when the user is a developer' do + expect(service.available_commands(issue)).to include(a_hash_including(name: :copy_metadata)) + end + + context 'when the user does not have permission' do + let(:guest) { create(:user) } + let(:service) { described_class.new(project, guest) } + + it 'is not available' do + expect(service.available_commands(issue)).not_to include(a_hash_including(name: :copy_metadata)) + end + end + it_behaves_like 'empty command' do let(:content) { '/copy_metadata' } let(:issuable) { issue } |