diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-05-09 19:24:07 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-05-09 19:24:07 +0000 |
commit | cff3950e6bda624c70d09cdda40e098e4b81736a (patch) | |
tree | f9fc1079471dba1ccb5d6a0413d3ce5b4a2a9452 | |
parent | 42193960f2f442e19e044ae0d999fb1a48094b6f (diff) | |
download | redmine-cff3950e6bda624c70d09cdda40e098e4b81736a.tar.gz redmine-cff3950e6bda624c70d09cdda40e098e4b81736a.zip |
Added a test for the mail handler.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@524 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/models/mail_handler.rb | 6 | ||||
-rw-r--r-- | test/fixtures/mail_handler/add_note_to_issue.txt | 14 | ||||
-rw-r--r-- | test/unit/mail_handler_test.rb | 57 |
3 files changed, 74 insertions, 3 deletions
diff --git a/app/models/mail_handler.rb b/app/models/mail_handler.rb index 872174918..39b088bf4 100644 --- a/app/models/mail_handler.rb +++ b/app/models/mail_handler.rb @@ -18,7 +18,7 @@ class MailHandler < ActionMailer::Base # Processes incoming emails - # Currently, it only supports adding notes to an existing issue + # Currently, it only supports adding a note to an existing issue # by replying to the initial notification message def receive(email) # find related issue by parsing the subject @@ -33,8 +33,8 @@ class MailHandler < ActionMailer::Base # check permission return unless Permission.allowed_to_role("issues/add_note", user.role_for_project(issue.project)) - # add the notes - issue.init_journal(user, email.body) + # add the note + issue.init_journal(user, email.body.chomp) issue.save end end diff --git a/test/fixtures/mail_handler/add_note_to_issue.txt b/test/fixtures/mail_handler/add_note_to_issue.txt new file mode 100644 index 000000000..4fc6b68fb --- /dev/null +++ b/test/fixtures/mail_handler/add_note_to_issue.txt @@ -0,0 +1,14 @@ +x-sender: <jsmith@somenet.foo>
+x-receiver: <redmine@somenet.foo>
+Received: from somenet.foo ([127.0.0.1]) by somenet.foo;
+ Sun, 25 Feb 2007 09:57:56 GMT
+Date: Sun, 25 Feb 2007 10:57:56 +0100
+From: jsmith@somenet.foo
+To: redmine@somenet.foo
+Message-Id: <45e15df440c00_b90238570a27b@osiris.tmail>
+In-Reply-To: <45e15df440c29_b90238570a27b@osiris.tmail>
+Subject: [Cookbook - Feature #2]
+Mime-Version: 1.0
+Content-Type: text/plain; charset=utf-8
+
+Note added by mail
diff --git a/test/unit/mail_handler_test.rb b/test/unit/mail_handler_test.rb new file mode 100644 index 000000000..9b6800871 --- /dev/null +++ b/test/unit/mail_handler_test.rb @@ -0,0 +1,57 @@ +# redMine - project management software +# Copyright (C) 2006-2007 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +require File.dirname(__FILE__) + '/../test_helper' + +class MailHandlerTest < Test::Unit::TestCase + fixtures :users, :projects, :roles, :members, :permissions, :issues, :permissions_roles, :trackers, :enumerations + + FIXTURES_PATH = File.dirname(__FILE__) + '/../fixtures' + CHARSET = "utf-8" + + include ActionMailer::Quoting + + def setup + ActionMailer::Base.delivery_method = :test + ActionMailer::Base.perform_deliveries = true + ActionMailer::Base.deliveries = [] + + @expected = TMail::Mail.new + @expected.set_content_type "text", "plain", { "charset" => CHARSET } + @expected.mime_version = '1.0' + end + + def test_add_note_to_issue + raw = read_fixture("add_note_to_issue_2.txt").join + MailHandler.receive(raw) + + issue = Issue.find(2) + journal = issue.journals.find(:first, :order => "created_on DESC") + assert journal + assert_equal User.find_by_mail("jsmith@somenet.foo"), journal.user + assert_equal "Note added by mail", journal.notes + end + + private + def read_fixture(action) + IO.readlines("#{FIXTURES_PATH}/mail_handler/#{action}") + end + + def encode(subject) + quoted_printable(subject, CHARSET) + end +end |