From e27c6ceb41053a84e2908742c51e1d2d56dcf404 Mon Sep 17 00:00:00 2001 From: Holger Just Date: Mon, 30 May 2022 12:58:26 +0200 Subject: [PATCH 2/2] Validate fixed_version_id to ensure that a version with the named ID exists #37171 --- app/models/issue.rb | 4 ++-- test/unit/issue_test.rb | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/models/issue.rb b/app/models/issue.rb index 4d3da2ce01..cd9107bd73 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -751,8 +751,8 @@ def validate_issue errors.add :start_date, :earlier_than_minimum_start_date, :date => format_date(soonest_start) end - if project && fixed_version - if !assignable_versions.include?(fixed_version) + if project && fixed_version_id + if fixed_version.nil? || assignable_versions.exclude?(fixed_version) errors.add :fixed_version_id, :inclusion elsif reopening? && fixed_version.closed? errors.add :base, I18n.t(:error_can_not_reopen_issue_on_closed_version) diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb index 0c09ef5e10..f054cee965 100644 --- a/test/unit/issue_test.rb +++ b/test/unit/issue_test.rb @@ -1650,6 +1650,14 @@ def test_assignable_versions assert_equal ['open'], issue.assignable_versions.collect(&:status).uniq end + def test_should_not_be_able_to_set_an_invalid_version_id + issue = Issue.new(:project_id => 1, :tracker_id => 1, :author_id => 1, + :status_id => 1, :fixed_version_id => 424242, + :subject => 'New issue') + assert !issue.save + assert_not_equal [], issue.errors[:fixed_version_id] + end + def test_should_not_be_able_to_assign_a_new_issue_to_a_closed_version issue = Issue.new(:project_id => 1, :tracker_id => 1, :author_id => 1, :status_id => 1, :fixed_version_id => 1, -- 2.34.0