]> source.dussan.org Git - redmine.git/commitdiff
Added a test for the mail handler.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Wed, 9 May 2007 19:24:07 +0000 (19:24 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Wed, 9 May 2007 19:24:07 +0000 (19:24 +0000)
git-svn-id: http://redmine.rubyforge.org/svn/trunk@524 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/mail_handler.rb
test/fixtures/mail_handler/add_note_to_issue.txt [new file with mode: 0644]
test/unit/mail_handler_test.rb [new file with mode: 0644]

index 872174918badb6e579b8d741649185021682e063..39b088bf4dbc9b127e0d8eee72039b136d532be9 100644 (file)
@@ -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 (file)
index 0000000..4fc6b68
--- /dev/null
@@ -0,0 +1,14 @@
+x-sender: <jsmith@somenet.foo>\r
+x-receiver: <redmine@somenet.foo>\r
+Received: from somenet.foo ([127.0.0.1]) by somenet.foo;\r
+       Sun, 25 Feb 2007 09:57:56 GMT\r
+Date: Sun, 25 Feb 2007 10:57:56 +0100\r
+From: jsmith@somenet.foo\r
+To: redmine@somenet.foo\r
+Message-Id: <45e15df440c00_b90238570a27b@osiris.tmail>\r
+In-Reply-To: <45e15df440c29_b90238570a27b@osiris.tmail>\r
+Subject: [Cookbook - Feature #2]\r
+Mime-Version: 1.0\r
+Content-Type: text/plain; charset=utf-8\r
+\r
+Note added by mail\r
diff --git a/test/unit/mail_handler_test.rb b/test/unit/mail_handler_test.rb
new file mode 100644 (file)
index 0000000..9b68008
--- /dev/null
@@ -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