From 6cffab991911a87181b3fb54081e1d9a35f6e8d8 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 3 Mar 2013 08:41:52 +0000 Subject: [PATCH] Mail handler: adds --no-account-notice option for not sending account information to the created user (#11498). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11525 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/mail_handler.rb | 7 +++++-- extra/mail_handler/rdm-mailhandler.rb | 8 ++++++-- test/unit/mail_handler_test.rb | 16 ++++++++++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/app/models/mail_handler.rb b/app/models/mail_handler.rb index f85b50d73..43e656d86 100644 --- a/app/models/mail_handler.rb +++ b/app/models/mail_handler.rb @@ -38,7 +38,8 @@ class MailHandler < ActionMailer::Base # Status overridable by default @@handler_options[:allow_override] << 'status' unless @@handler_options[:issue].has_key?(:status) - @@handler_options[:no_permission_check] = (@@handler_options[:no_permission_check].to_s == '1' ? true : false) + @@handler_options[:no_account_notice] = (@@handler_options[:no_account_notice].to_s == '1') + @@handler_options[:no_permission_check] = (@@handler_options[:no_permission_check].to_s == '1') email.force_encoding('ASCII-8BIT') if email.respond_to?(:force_encoding) super(email) @@ -98,7 +99,9 @@ class MailHandler < ActionMailer::Base logger.info "MailHandler: [#{@user.login}] account created" end add_user_to_group(@@handler_options[:default_group]) - Mailer.account_information(@user, @user.password).deliver + unless @@handler_options[:no_account_notice] + Mailer.account_information(@user, @user.password).deliver + end else if logger && logger.error logger.error "MailHandler: could not create account for [#{sender_email}]" diff --git a/extra/mail_handler/rdm-mailhandler.rb b/extra/mail_handler/rdm-mailhandler.rb index a4a736e07..9e9bac051 100644 --- a/extra/mail_handler/rdm-mailhandler.rb +++ b/extra/mail_handler/rdm-mailhandler.rb @@ -39,9 +39,10 @@ module Net end class RedmineMailHandler - VERSION = '0.2.2' + VERSION = '0.2.3' - attr_accessor :verbose, :issue_attributes, :allow_override, :unknown_user, :default_group, :no_permission_check, :url, :key, :no_check_certificate + attr_accessor :verbose, :issue_attributes, :allow_override, :unknown_user, :default_group, :no_permission_check, + :url, :key, :no_check_certificate, :no_account_notice def initialize self.issue_attributes = {} @@ -75,6 +76,8 @@ class RedmineMailHandler "* create: create a user account") {|v| self.unknown_user = v} opts.on("--default-group GROUP", "add created user to GROUP (none by default)", "GROUP can be a comma separated list of groups") { |v| self.default_group = v} + opts.on("--no-account-notice", "don't send account information to the newly", + "created user") { |v| self.no_account_notice = '1'} opts.separator("") opts.separator("Issue attributes control options:") opts.on("-p", "--project PROJECT", "identifier of the target project") {|v| self.issue_attributes['project'] = v} @@ -116,6 +119,7 @@ class RedmineMailHandler 'allow_override' => allow_override, 'unknown_user' => unknown_user, 'default_group' => default_group, + 'no_account_notice' => no_account_notice, 'no_permission_check' => no_permission_check} issue_attributes.each { |attr, value| data["issue[#{attr}]"] = value } diff --git a/test/unit/mail_handler_test.rb b/test/unit/mail_handler_test.rb index 269ac9da1..33b4d58c8 100644 --- a/test/unit/mail_handler_test.rb +++ b/test/unit/mail_handler_test.rb @@ -320,6 +320,22 @@ class MailHandlerTest < ActiveSupport::TestCase assert_same_elements [group1, group2], user.groups end + def test_created_user_should_not_receive_account_information_with_no_account_info_option + assert_difference 'User.count' do + submit_email( + 'ticket_by_unknown_user.eml', + :issue => {:project => 'ecookbook'}, + :unknown_user => 'create', + :no_account_notice => '1' + ) + end + + # only 1 email for the new issue notification + assert_equal 1, ActionMailer::Base.deliveries.size + email = ActionMailer::Base.deliveries.first + assert_include 'Ticket by unknown user', email.subject + end + def test_add_issue_without_from_header Role.anonymous.add_permission!(:add_issues) assert_equal false, submit_email('ticket_without_from_header.eml')