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)