Commit 915bfedf authored by Grzegorz Bizon's avatar Grzegorz Bizon

Do not allow to move issue if it has not been persisted

parent d967b122
...@@ -4,7 +4,7 @@ v 8.7.0 (unreleased) ...@@ -4,7 +4,7 @@ v 8.7.0 (unreleased)
- Make HTTP(s) label consistent on clone bar (Stan Hu) - Make HTTP(s) label consistent on clone bar (Stan Hu)
v 8.6.1 (unreleased) v 8.6.1 (unreleased)
- Do not allow to move issue if it has not been persisted
v 8.6.0 v 8.6.0
- Add ability to move issue to another project - Add ability to move issue to another project
......
...@@ -146,7 +146,8 @@ class Issue < ActiveRecord::Base ...@@ -146,7 +146,8 @@ class Issue < ActiveRecord::Base
return false unless user.can?(:admin_issue, to_project) return false unless user.can?(:admin_issue, to_project)
end end
!moved? && user.can?(:admin_issue, self.project) !moved? && persisted? &&
user.can?(:admin_issue, self.project)
end end
def to_branch_name def to_branch_name
......
...@@ -78,6 +78,8 @@ module Issues ...@@ -78,6 +78,8 @@ module Issues
end end
def unfold_references(content) def unfold_references(content)
return unless content
rewriter = Gitlab::Gfm::ReferenceRewriter.new(content, @old_project, rewriter = Gitlab::Gfm::ReferenceRewriter.new(content, @old_project,
@current_user) @current_user)
rewriter.rewrite(@new_project) rewriter.rewrite(@new_project)
......
...@@ -85,7 +85,7 @@ ...@@ -85,7 +85,7 @@
- if can? current_user, :admin_label, issuable.project - if can? current_user, :admin_label, issuable.project
= link_to 'Create new label', new_namespace_project_label_path(issuable.project.namespace, issuable.project), target: :blank = link_to 'Create new label', new_namespace_project_label_path(issuable.project.namespace, issuable.project), target: :blank
- if issuable.can_move?(current_user) && issuable.persisted? - if issuable.can_move?(current_user)
%hr %hr
.form-group .form-group
= label_tag :move_to_project_id, 'Move', class: 'control-label' = label_tag :move_to_project_id, 'Move', class: 'control-label'
......
...@@ -152,6 +152,11 @@ describe Issue, models: true do ...@@ -152,6 +152,11 @@ describe Issue, models: true do
it { is_expected.to eq true } it { is_expected.to eq true }
context 'issue not persisted' do
let(:issue) { build(:issue, project: project) }
it { is_expected.to eq false }
end
context 'checking destination project also' do context 'checking destination project also' do
subject { issue.can_move?(user, to_project) } subject { issue.can_move?(user, to_project) }
let(:to_project) { create(:project) } let(:to_project) { create(:project) }
......
...@@ -208,6 +208,12 @@ describe Issues::MoveService, services: true do ...@@ -208,6 +208,12 @@ describe Issues::MoveService, services: true do
it { expect { move }.to raise_error(StandardError, /permissions/) } it { expect { move }.to raise_error(StandardError, /permissions/) }
end end
context 'issue is not persisted' do
include_context 'user can move issue'
let(:old_issue) { build(:issue, project: old_project, author: author) }
it { expect { move }.to raise_error(StandardError, /permissions/) }
end
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