Added a test for the mail handler.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@524 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
42193960f2
commit
cff3950e6b
|
@ -18,7 +18,7 @@
|
||||||
class MailHandler < ActionMailer::Base
|
class MailHandler < ActionMailer::Base
|
||||||
|
|
||||||
# Processes incoming emails
|
# 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
|
# by replying to the initial notification message
|
||||||
def receive(email)
|
def receive(email)
|
||||||
# find related issue by parsing the subject
|
# find related issue by parsing the subject
|
||||||
|
@ -33,8 +33,8 @@ class MailHandler < ActionMailer::Base
|
||||||
# check permission
|
# check permission
|
||||||
return unless Permission.allowed_to_role("issues/add_note", user.role_for_project(issue.project))
|
return unless Permission.allowed_to_role("issues/add_note", user.role_for_project(issue.project))
|
||||||
|
|
||||||
# add the notes
|
# add the note
|
||||||
issue.init_journal(user, email.body)
|
issue.init_journal(user, email.body.chomp)
|
||||||
issue.save
|
issue.save
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -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
|
|
@ -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
|
Loading…
Reference in New Issue