Feature #38274 » 1-receive_news_comment_reply_with_tests.patch
| app/models/mail_handler.rb | ||
|---|---|---|
| 305 | 305 |
end |
| 306 | 306 |
end |
| 307 | 307 | |
| 308 |
# Receives a reply to a news entry |
|
| 309 |
def receive_news_reply(news_id) |
|
| 310 |
news = News.find_by_id(news_id) |
|
| 311 |
if news.nil? |
|
| 312 |
raise MissingContainer, "reply to nonexistant news [#{news_id}]"
|
|
| 313 |
end |
|
| 314 | ||
| 315 |
# Never receive emails to projects where adding news comments is not possible |
|
| 316 |
project = news.project |
|
| 317 |
raise NotAllowedInProject, "not possible to add news comments to project [#{project.name}]" unless project.allows_to?(:comment_news)
|
|
| 318 | ||
| 319 |
unless handler_options[:no_permission_check] |
|
| 320 |
unless news.commentable?(user) |
|
| 321 |
raise InsufficientPermissions, "not allowed to comment on news item [#{news.id} #{news.title}]"
|
|
| 322 |
end |
|
| 323 |
end |
|
| 324 | ||
| 325 |
comment = news.comments.new |
|
| 326 |
comment.author = user |
|
| 327 |
comment.comments = cleaned_up_text_body |
|
| 328 |
comment.save! |
|
| 329 |
comment |
|
| 330 |
end |
|
| 331 | ||
| 332 |
# Receives a reply to a comment to a news entry |
|
| 333 |
def receive_comment_reply(comment_id) |
|
| 334 |
comment = Comment.find_by_id(comment_id) |
|
| 335 | ||
| 336 |
if comment && comment.commented_type == 'News' |
|
| 337 |
receive_news_reply(comment.commented.id) |
|
| 338 |
else |
|
| 339 |
raise MissingContainer, "reply to nonexistant comment [#{comment_id}]"
|
|
| 340 |
end |
|
| 341 |
end |
|
| 342 | ||
| 308 | 343 |
def add_attachments(obj) |
| 309 | 344 |
if email.attachments && email.attachments.any? |
| 310 | 345 |
email.attachments.each do |attachment| |
| test/fixtures/mail_handler/news_comment_reply.eml | ||
|---|---|---|
| 1 |
Message-ID: <4974C93E.3071105@somenet.foo> |
|
| 2 |
Date: Mon, 19 Jan 2023 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: News comment reply via email |
|
| 8 |
References: <redmine.comment-1.20230214171800@somenet.foo> |
|
| 9 |
In-Reply-To: <redmine.comment-1.20230214171800@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 comment. |
|
| 14 |
|
|
| 15 |
|
|
| test/fixtures/mail_handler/news_reply.eml | ||
|---|---|---|
| 1 |
Message-ID: <4974C93E.3071005@somenet.foo> |
|
| 2 |
Date: Mon, 19 Jan 2023 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: News comment via email |
|
| 8 |
References: <redmine.news-1.20230214171800@somenet.foo> |
|
| 9 |
In-Reply-To: <redmine.news-1.20230214171800@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 news. |
|
| 14 |
|
|
| 15 |
|
|
| test/unit/mail_handler_test.rb | ||
|---|---|---|
| 28 | 28 |
:workflows, :trackers, :projects_trackers, |
| 29 | 29 |
:versions, :enumerations, :issue_categories, |
| 30 | 30 |
:custom_fields, :custom_fields_trackers, :custom_fields_projects, :custom_values, |
| 31 |
:boards, :messages, :watchers |
|
| 31 |
:boards, :messages, :watchers, :news, :comments
|
|
| 32 | 32 | |
| 33 | 33 |
FIXTURES_PATH = File.dirname(__FILE__) + '/../fixtures/mail_handler' |
| 34 | 34 | |
| ... | ... | |
| 1159 | 1159 |
end |
| 1160 | 1160 |
end |
| 1161 | 1161 | |
| 1162 |
def test_reply_to_a_news |
|
| 1163 |
m = submit_email('news_reply.eml')
|
|
| 1164 |
assert m.is_a?(Comment) |
|
| 1165 |
assert !m.new_record? |
|
| 1166 |
m.reload |
|
| 1167 |
assert_equal News.find(1), m.commented |
|
| 1168 |
assert_equal "This is a reply to a news.", m.content |
|
| 1169 |
end |
|
| 1170 | ||
| 1171 |
def test_reply_to_a_news_comment |
|
| 1172 |
m = submit_email('news_comment_reply.eml')
|
|
| 1173 |
assert m.is_a?(Comment) |
|
| 1174 |
assert !m.new_record? |
|
| 1175 |
m.reload |
|
| 1176 |
assert_equal News.find(1), m.commented |
|
| 1177 |
assert_equal "This is a reply to a comment.", m.content |
|
| 1178 |
end |
|
| 1179 | ||
| 1180 |
def test_reply_to_a_nonexistant_news |
|
| 1181 |
News.find(1).destroy |
|
| 1182 |
assert_no_difference('Comment.count') do
|
|
| 1183 |
assert_not submit_email('news_reply.eml')
|
|
| 1184 |
assert_not submit_email('news_comment_reply.eml')
|
|
| 1185 |
end |
|
| 1186 |
end |
|
| 1187 | ||
| 1188 |
def test_reply_to_a_news_without_permission |
|
| 1189 |
Role.all.each {|r| r.remove_permission! :comment_news}
|
|
| 1190 |
assert_no_difference('Comment.count') do
|
|
| 1191 |
assert_not submit_email('news_reply.eml')
|
|
| 1192 |
assert_not submit_email('news_comment_reply.eml')
|
|
| 1193 |
end |
|
| 1194 |
end |
|
| 1195 | ||
| 1162 | 1196 |
def test_should_convert_tags_of_html_only_emails |
| 1163 | 1197 |
with_settings :text_formatting => 'textile' do |
| 1164 | 1198 |
issue = submit_email('ticket_html_only.eml', :issue => {:project => 'ecookbook'})
|
- « Previous
- 1
- 2
- Next »