@@ -0,0 +1,15 | |||
|
1 | Message-ID: <4974C93E.3070005@somenet.foo> | |
|
2 | Date: Mon, 19 Jan 2009 19:41:02 +0100 | |
|
3 | From: "John Smith" <jsmith@somenet.foo> | |
|
4 | User-Agent: Thunderbird 2.0.0.19 (Windows/20081209) | |
|
5 | MIME-Version: 1.0 | |
|
6 | To: redmine@somenet.foo | |
|
7 | Subject: Reply via email | |
|
8 | References: <redmine.message-2.20070512171800@somenet.foo> | |
|
9 | In-Reply-To: <redmine.message-2.20070512171800@somenet.foo> | |
|
10 | Content-Type: text/plain; charset=UTF-8; format=flowed | |
|
11 | Content-Transfer-Encoding: 7bit | |
|
12 | ||
|
13 | This is a reply to a forum message. | |
|
14 | ||
|
15 |
@@ -158,6 +158,24 class MailHandler < ActionMailer::Base | |||
|
158 | 158 | end |
|
159 | 159 | end |
|
160 | 160 | |
|
161 | # Receives a reply to a forum message | |
|
162 | def receive_message_reply(message_id) | |
|
163 | message = Message.find_by_id(message_id) | |
|
164 | if message | |
|
165 | message = message.root | |
|
166 | if user.allowed_to?(:add_messages, message.project) && !message.locked? | |
|
167 | reply = Message.new(:subject => email.subject, :content => plain_text_body) | |
|
168 | reply.author = user | |
|
169 | reply.board = message.board | |
|
170 | message.children << reply | |
|
171 | add_attachments(reply) | |
|
172 | reply | |
|
173 | else | |
|
174 | raise UnauthorizedAction | |
|
175 | end | |
|
176 | end | |
|
177 | end | |
|
178 | ||
|
161 | 179 | def add_attachments(obj) |
|
162 | 180 | if email.has_attachments? |
|
163 | 181 | email.attachments.each do |attachment| |
@@ -30,7 +30,9 class MailHandlerTest < Test::Unit::TestCase | |||
|
30 | 30 | :enumerations, |
|
31 | 31 | :issue_categories, |
|
32 | 32 | :custom_fields, |
|
33 | :custom_fields_trackers | |
|
33 | :custom_fields_trackers, | |
|
34 | :boards, | |
|
35 | :messages | |
|
34 | 36 | |
|
35 | 37 | FIXTURES_PATH = File.dirname(__FILE__) + '/../fixtures/mail_handler' |
|
36 | 38 | |
@@ -141,6 +143,16 class MailHandlerTest < Test::Unit::TestCase | |||
|
141 | 143 | assert_equal IssueStatus.find_by_name("Resolved"), issue.status |
|
142 | 144 | end |
|
143 | 145 | |
|
146 | def test_reply_to_a_message | |
|
147 | m = submit_email('message_reply.eml') | |
|
148 | assert m.is_a?(Message) | |
|
149 | assert !m.new_record? | |
|
150 | m.reload | |
|
151 | assert_equal 'Reply via email', m.subject | |
|
152 | # The email replies to message #2 which is part of the thread of message #1 | |
|
153 | assert_equal Message.find(1), m.parent | |
|
154 | end | |
|
155 | ||
|
144 | 156 | def test_should_strip_tags_of_html_only_emails |
|
145 | 157 | issue = submit_email('ticket_html_only.eml', :issue => {:project => 'ecookbook'}) |
|
146 | 158 | assert issue.is_a?(Issue) |
General Comments 0
You need to be logged in to leave comments.
Login now