summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/mail_handler.rb4
-rw-r--r--extra/mail_handler/rdm-mailhandler.rb1
-rw-r--r--lib/tasks/email.rake1
-rw-r--r--test/functional/mail_handler_controller_test.rb15
-rw-r--r--test/unit/mail_handler_test.rb7
5 files changed, 28 insertions, 0 deletions
diff --git a/app/models/mail_handler.rb b/app/models/mail_handler.rb
index 408932d57..78cff699b 100644
--- a/app/models/mail_handler.rb
+++ b/app/models/mail_handler.rb
@@ -69,6 +69,9 @@ class MailHandler < ActionMailer::Base
%w(allow_override unknown_user no_permission_check no_account_notice default_group).each do |option|
options[option.to_sym] = env[option] if env[option]
end
+ if env['private']
+ options[:issue][:is_private] = '1'
+ end
options
end
@@ -205,6 +208,7 @@ class MailHandler < ActionMailer::Base
end
issue.description = cleaned_up_text_body
issue.start_date ||= Date.today if Setting.default_issue_start_date_to_creation_date?
+ issue.is_private = (handler_options[:issue][:is_private] == '1')
# add To and Cc as watchers before saving so the watchers can reply to Redmine
add_watchers(issue)
diff --git a/extra/mail_handler/rdm-mailhandler.rb b/extra/mail_handler/rdm-mailhandler.rb
index 36d06cb56..f5fbe3ac9 100644
--- a/extra/mail_handler/rdm-mailhandler.rb
+++ b/extra/mail_handler/rdm-mailhandler.rb
@@ -87,6 +87,7 @@ class RedmineMailHandler
opts.on("-t", "--tracker TRACKER", "name of the target tracker") {|v| self.issue_attributes['tracker'] = v}
opts.on( "--category CATEGORY", "name of the target category") {|v| self.issue_attributes['category'] = v}
opts.on( "--priority PRIORITY", "name of the target priority") {|v| self.issue_attributes['priority'] = v}
+ opts.on( "--private", "create new issues as private") {|v| self.issue_attributes['is_private'] = '1'}
opts.on("-o", "--allow-override ATTRS", "allow email content to override attributes",
"specified by previous options",
"ATTRS is a comma separated list of attributes") {|v| self.allow_override = v}
diff --git a/lib/tasks/email.rake b/lib/tasks/email.rake
index 121afc4a6..82b84788c 100644
--- a/lib/tasks/email.rake
+++ b/lib/tasks/email.rake
@@ -89,6 +89,7 @@ Issue attributes control options:
tracker=TRACKER name of the target tracker
category=CATEGORY name of the target category
priority=PRIORITY name of the target priority
+ private create new issues as private
allow_override=ATTRS allow email content to override attributes
specified by previous options
ATTRS is a comma separated list of attributes
diff --git a/test/functional/mail_handler_controller_test.rb b/test/functional/mail_handler_controller_test.rb
index 3487d5eb2..a966b774d 100644
--- a/test/functional/mail_handler_controller_test.rb
+++ b/test/functional/mail_handler_controller_test.rb
@@ -38,6 +38,21 @@ class MailHandlerControllerTest < ActionController::TestCase
assert_response 201
end
+ def test_should_create_issue_with_options
+ # Enable API and set a key
+ Setting.mail_handler_api_enabled = 1
+ Setting.mail_handler_api_key = 'secret'
+
+ assert_difference 'Issue.count' do
+ post :index, :key => 'secret',
+ :email => IO.read(File.join(FIXTURES_PATH, 'ticket_on_given_project.eml')),
+ :issue => {:is_private => '1'}
+ end
+ assert_response 201
+ issue = Issue.order(:id => :desc).first
+ assert_equal true, issue.is_private
+ end
+
def test_should_respond_with_422_if_not_created
Project.find('onlinestore').destroy
diff --git a/test/unit/mail_handler_test.rb b/test/unit/mail_handler_test.rb
index 2ae3cb5c1..99900666d 100644
--- a/test/unit/mail_handler_test.rb
+++ b/test/unit/mail_handler_test.rb
@@ -94,6 +94,13 @@ class MailHandlerTest < ActiveSupport::TestCase
assert_equal IssueStatus.find_by_name("Resolved"), issue.status
end
+ def test_add_issue_should_accept_is_private_attribute
+ issue = submit_email('ticket_on_given_project.eml', :issue => {:is_private => '1'})
+ assert issue.is_a?(Issue)
+ assert !issue.new_record?
+ assert_equal true, issue.reload.is_private
+ end
+
def test_add_issue_with_attributes_override
issue = submit_email(
'ticket_with_attributes.eml',