From b4cf4fca9d5b5aacd05af33a3be00be213cd893d Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Tue, 17 Jan 2012 20:20:59 +0000 Subject: [PATCH] Fixed an error when trying to copy an issue that does not exist. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8670 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/issues_controller.rb | 7 ++++++- test/functional/issues_controller_test.rb | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 358faf507..82fa5f8ea 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -360,7 +360,12 @@ private def build_new_issue_from_params if params[:id].blank? @issue = Issue.new - @issue.copy_from(params[:copy_from]) if params[:copy_from] + begin + @issue.copy_from(params[:copy_from]) if params[:copy_from] + rescue ActiveRecord::RecordNotFound + render_404 + return + end @issue.project = @project else @issue = @project.issues.visible.find(params[:id]) diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index 13002c296..1273767b4 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -1631,6 +1631,12 @@ class IssuesControllerTest < ActionController::TestCase assert_tag 'input', :attributes => {:name => 'copy_from', :value => '1'} end + def test_new_as_copy_with_invalid_issue_should_respond_with_404 + @request.session[:user_id] = 2 + get :new, :project_id => 1, :copy_from => 99999 + assert_response 404 + end + def test_create_as_copy_on_different_project @request.session[:user_id] = 2 assert_difference 'Issue.count' do