From 7c5c9fa603e4064f76fab5b7e98b2434a794f218 Mon Sep 17 00:00:00 2001
From: MAEDA Go
<%= f.check_box :private_by_default %>
<%= f.check_box :is_in_roadmap %>
<%= f.text_area :description, :rows => 4 %>
diff --git a/config/locales/en.yml b/config/locales/en.yml index 8c9edb8bc..c9ace4e88 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -319,6 +319,7 @@ en: field_is_public: Public field_parent: Subproject of field_is_in_roadmap: Issues displayed in roadmap + field_private_by_default: Private by default field_login: Login field_mail_notification: Email notifications field_admin: Administrator diff --git a/db/migrate/20230414071513_add_private_by_default_to_trackers.rb b/db/migrate/20230414071513_add_private_by_default_to_trackers.rb new file mode 100644 index 000000000..1b6987a73 --- /dev/null +++ b/db/migrate/20230414071513_add_private_by_default_to_trackers.rb @@ -0,0 +1,5 @@ +class AddPrivateByDefaultToTrackers < ActiveRecord::Migration[6.1] + def change + add_column :trackers, :private_by_default, :boolean, default: false, null: false, after: :default_status_id + end +end diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index c19534b78..34fbfe854 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -5634,6 +5634,35 @@ class IssuesControllerTest < Redmine::ControllerTest assert_equal [], issue.watcher_user_ids end + def test_create_should_respect_private_by_default_per_tracker_setting + @request.session[:user_id] = 2 + tracker = Tracker.find(1) + + post_issue = -> do + post( + :create, + params: { + project_id: 1, + issue: {tracker_id: tracker.id, status_id: '1', subject: '_'} + } + ) + end + + tracker.update_attribute(:private_by_default, true) + assert_difference 'Issue.count' do + post_issue.call + end + issue = Issue.order('id DESC').first + assert issue.is_private? + + tracker.update_attribute(:private_by_default, false) + assert_difference 'Issue.count' do + post_issue.call + end + issue = Issue.order('id DESC').first + assert_not issue.is_private? + end + def test_get_edit @request.session[:user_id] = 2 get(:edit, :params => {:id => 1}) diff --git a/test/integration/api_test/issues_test.rb b/test/integration/api_test/issues_test.rb index c5f0d3496..98e550411 100644 --- a/test/integration/api_test/issues_test.rb +++ b/test/integration/api_test/issues_test.rb @@ -753,6 +753,27 @@ class Redmine::ApiTest::IssuesTest < Redmine::ApiTest::Base assert_response 422 end + test "POST /issues.json should respect the private_by_default per tracker setting" do + tracker = Tracker.find(1) + tracker.update_attribute(:private_by_default, true) + issue = new_record(Issue) do + post( + '/issues.json', + :params => {:issue => {:project_id => 1, :tracker_id => 1, :subject => 'API'}}, + :headers => credentials('jsmith')) + end + assert issue.is_private? + + tracker.update_attribute(:private_by_default, false) + issue = new_record(Issue) do + post( + '/issues.json', + :params => {:issue => {:project_id => 1, :tracker_id => 1, :subject => 'API'}}, + :headers => credentials('jsmith')) + end + assert_not issue.is_private? + end + test "PUT /issues/:id.xml" do assert_difference('Journal.count') do put( -- 2.39.1