Mercurial > hg > soundsoftware-site
comparison test/unit/mail_handler_test.rb @ 1517:dffacf8a6908 redmine-2.5
Update to Redmine SVN revision 13367 on 2.5-stable branch
author | Chris Cannam |
---|---|
date | Tue, 09 Sep 2014 09:29:00 +0100 |
parents | e248c7af89ec |
children |
comparison
equal
deleted
inserted
replaced
1516:b450a9d58aed | 1517:dffacf8a6908 |
---|---|
39 Setting.clear_cache | 39 Setting.clear_cache |
40 end | 40 end |
41 | 41 |
42 def test_add_issue | 42 def test_add_issue |
43 ActionMailer::Base.deliveries.clear | 43 ActionMailer::Base.deliveries.clear |
44 lft1 = new_issue_lft | |
44 # This email contains: 'Project: onlinestore' | 45 # This email contains: 'Project: onlinestore' |
45 issue = submit_email('ticket_on_given_project.eml') | 46 issue = submit_email('ticket_on_given_project.eml') |
46 assert issue.is_a?(Issue) | 47 assert issue.is_a?(Issue) |
47 assert !issue.new_record? | 48 assert !issue.new_record? |
48 issue.reload | 49 issue.reload |
56 assert_equal '2010-12-31', issue.due_date.to_s | 57 assert_equal '2010-12-31', issue.due_date.to_s |
57 assert_equal User.find_by_login('jsmith'), issue.assigned_to | 58 assert_equal User.find_by_login('jsmith'), issue.assigned_to |
58 assert_equal Version.find_by_name('Alpha'), issue.fixed_version | 59 assert_equal Version.find_by_name('Alpha'), issue.fixed_version |
59 assert_equal 2.5, issue.estimated_hours | 60 assert_equal 2.5, issue.estimated_hours |
60 assert_equal 30, issue.done_ratio | 61 assert_equal 30, issue.done_ratio |
61 assert_equal [issue.id, 1, 2], [issue.root_id, issue.lft, issue.rgt] | 62 assert_equal [issue.id, lft1, lft1 + 1], [issue.root_id, issue.lft, issue.rgt] |
62 # keywords should be removed from the email body | 63 # keywords should be removed from the email body |
63 assert !issue.description.match(/^Project:/i) | 64 assert !issue.description.match(/^Project:/i) |
64 assert !issue.description.match(/^Status:/i) | 65 assert !issue.description.match(/^Status:/i) |
65 assert !issue.description.match(/^Start Date:/i) | 66 assert !issue.description.match(/^Start Date:/i) |
66 # Email notification should be sent | 67 # Email notification should be sent |
200 issue = submit_email('ticket_on_given_project.eml') do |email| | 201 issue = submit_email('ticket_on_given_project.eml') do |email| |
201 email.sub!(/^Assigned to.*$/, 'Assigned to: Foo Bar Foo baz') | 202 email.sub!(/^Assigned to.*$/, 'Assigned to: Foo Bar Foo baz') |
202 end | 203 end |
203 assert issue.is_a?(Issue) | 204 assert issue.is_a?(Issue) |
204 assert_equal user, issue.assigned_to | 205 assert_equal user, issue.assigned_to |
206 end | |
207 | |
208 def test_add_issue_should_set_default_start_date | |
209 with_settings :default_issue_start_date_to_creation_date => '1' do | |
210 issue = submit_email('ticket_with_cc.eml', :issue => {:project => 'ecookbook'}) | |
211 assert issue.is_a?(Issue) | |
212 assert_equal Date.today, issue.start_date | |
213 end | |
205 end | 214 end |
206 | 215 |
207 def test_add_issue_with_cc | 216 def test_add_issue_with_cc |
208 issue = submit_email('ticket_with_cc.eml', :issue => {:project => 'ecookbook'}) | 217 issue = submit_email('ticket_with_cc.eml', :issue => {:project => 'ecookbook'}) |
209 assert issue.is_a?(Issue) | 218 assert issue.is_a?(Issue) |
262 end | 271 end |
263 end | 272 end |
264 end | 273 end |
265 | 274 |
266 def test_add_issue_by_anonymous_user_on_private_project_without_permission_check | 275 def test_add_issue_by_anonymous_user_on_private_project_without_permission_check |
276 lft1 = new_issue_lft | |
267 assert_no_difference 'User.count' do | 277 assert_no_difference 'User.count' do |
268 assert_difference 'Issue.count' do | 278 assert_difference 'Issue.count' do |
269 issue = submit_email( | 279 issue = submit_email( |
270 'ticket_by_unknown_user.eml', | 280 'ticket_by_unknown_user.eml', |
271 :issue => {:project => 'onlinestore'}, | 281 :issue => {:project => 'onlinestore'}, |
273 :unknown_user => 'accept' | 283 :unknown_user => 'accept' |
274 ) | 284 ) |
275 assert issue.is_a?(Issue) | 285 assert issue.is_a?(Issue) |
276 assert issue.author.anonymous? | 286 assert issue.author.anonymous? |
277 assert !issue.project.is_public? | 287 assert !issue.project.is_public? |
278 assert_equal [issue.id, 1, 2], [issue.root_id, issue.lft, issue.rgt] | 288 assert_equal [issue.id, lft1, lft1 + 1], [issue.root_id, issue.lft, issue.rgt] |
279 end | 289 end |
280 end | 290 end |
281 end | 291 end |
282 | 292 |
283 def test_add_issue_by_created_user | 293 def test_add_issue_by_created_user |
353 Role.anonymous.add_permission!(:add_issues) | 363 Role.anonymous.add_permission!(:add_issues) |
354 assert_equal false, submit_email('ticket_without_from_header.eml') | 364 assert_equal false, submit_email('ticket_without_from_header.eml') |
355 end | 365 end |
356 | 366 |
357 def test_add_issue_with_invalid_attributes | 367 def test_add_issue_with_invalid_attributes |
358 issue = submit_email( | 368 with_settings :default_issue_start_date_to_creation_date => '0' do |
359 'ticket_with_invalid_attributes.eml', | 369 issue = submit_email( |
360 :allow_override => 'tracker,category,priority' | 370 'ticket_with_invalid_attributes.eml', |
361 ) | 371 :allow_override => 'tracker,category,priority' |
362 assert issue.is_a?(Issue) | 372 ) |
363 assert !issue.new_record? | 373 assert issue.is_a?(Issue) |
364 issue.reload | 374 assert !issue.new_record? |
365 assert_nil issue.assigned_to | 375 issue.reload |
366 assert_nil issue.start_date | 376 assert_nil issue.assigned_to |
367 assert_nil issue.due_date | 377 assert_nil issue.start_date |
368 assert_equal 0, issue.done_ratio | 378 assert_nil issue.due_date |
369 assert_equal 'Normal', issue.priority.to_s | 379 assert_equal 0, issue.done_ratio |
370 assert issue.description.include?('Lorem ipsum dolor sit amet, consectetuer adipiscing elit.') | 380 assert_equal 'Normal', issue.priority.to_s |
381 assert issue.description.include?('Lorem ipsum dolor sit amet, consectetuer adipiscing elit.') | |
382 end | |
371 end | 383 end |
372 | 384 |
373 def test_add_issue_with_invalid_project_should_be_assigned_to_default_project | 385 def test_add_issue_with_invalid_project_should_be_assigned_to_default_project |
374 issue = submit_email('ticket_on_given_project.eml', :issue => {:project => 'ecookbook'}, :allow_override => 'project') do |email| | 386 issue = submit_email('ticket_on_given_project.eml', :issue => {:project => 'ecookbook'}, :allow_override => 'project') do |email| |
375 email.gsub!(/^Project:.+$/, 'Project: invalid') | 387 email.gsub!(/^Project:.+$/, 'Project: invalid') |
534 ) | 546 ) |
535 assert_kind_of Issue, issue | 547 assert_kind_of Issue, issue |
536 ja = "\xe3\x83\x86\xe3\x82\xb9\xe3\x83\x88" | 548 ja = "\xe3\x83\x86\xe3\x82\xb9\xe3\x83\x88" |
537 ja.force_encoding('UTF-8') if ja.respond_to?(:force_encoding) | 549 ja.force_encoding('UTF-8') if ja.respond_to?(:force_encoding) |
538 assert_equal ja, issue.subject | 550 assert_equal ja, issue.subject |
551 end | |
552 | |
553 def test_add_issue_with_korean_body | |
554 # Make sure mail bodies with a charset unknown to Ruby | |
555 # but known to the Mail gem 2.5.4 are handled correctly | |
556 kr = "\xEA\xB3\xA0\xEB\xA7\x99\xEC\x8A\xB5\xEB\x8B\x88\xEB\x8B\xA4." | |
557 if !kr.respond_to?(:force_encoding) | |
558 puts "\nOn Ruby 1.8, skip Korean encoding mail body test" | |
559 else | |
560 kr.force_encoding('UTF-8') | |
561 issue = submit_email( | |
562 'body_ks_c_5601-1987.eml', | |
563 :issue => {:project => 'ecookbook'} | |
564 ) | |
565 assert_kind_of Issue, issue | |
566 assert_equal kr, issue.description | |
567 end | |
539 end | 568 end |
540 | 569 |
541 def test_add_issue_with_no_subject_header | 570 def test_add_issue_with_no_subject_header |
542 issue = submit_email( | 571 issue = submit_email( |
543 'no_subject_header.eml', | 572 'no_subject_header.eml', |
644 end | 673 end |
645 end | 674 end |
646 end | 675 end |
647 end | 676 end |
648 end | 677 end |
649 journal = Journal.first(:order => 'id DESC') | 678 journal = Journal.order('id DESC').first |
650 assert_equal Issue.find(2), journal.journalized | 679 assert_equal Issue.find(2), journal.journalized |
651 assert_equal 1, journal.details.size | 680 assert_equal 1, journal.details.size |
652 | 681 |
653 detail = journal.details.first | 682 detail = journal.details.first |
654 assert_equal 'attachment', detail.property | 683 assert_equal 'attachment', detail.property |
827 'fullname_of_sender_as_utf8_encoded.eml', | 856 'fullname_of_sender_as_utf8_encoded.eml', |
828 :issue => {:project => 'ecookbook'}, | 857 :issue => {:project => 'ecookbook'}, |
829 :unknown_user => 'create' | 858 :unknown_user => 'create' |
830 ) | 859 ) |
831 end | 860 end |
832 | 861 user = User.order('id DESC').first |
833 user = User.first(:order => 'id DESC') | |
834 assert_equal "foo@example.org", user.mail | 862 assert_equal "foo@example.org", user.mail |
835 str1 = "\xc3\x84\xc3\xa4" | 863 str1 = "\xc3\x84\xc3\xa4" |
836 str2 = "\xc3\x96\xc3\xb6" | 864 str2 = "\xc3\x96\xc3\xb6" |
837 str1.force_encoding('UTF-8') if str1.respond_to?(:force_encoding) | 865 str1.force_encoding('UTF-8') if str1.respond_to?(:force_encoding) |
838 str2.force_encoding('UTF-8') if str2.respond_to?(:force_encoding) | 866 str2.force_encoding('UTF-8') if str2.respond_to?(:force_encoding) |