2010-01-30 10:36:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# encoding: utf-8  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#  
						 
					
						
							
								
									
										
										
										
											2009-06-14 14:48:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Redmine - project management software  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Copyright (C) 2006-2009  Jean-Philippe Lang  
						 
					
						
							
								
									
										
										
										
											2007-05-09 19:24:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								#  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# 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.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-12 23:24:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								require  File . expand_path ( '../../test_helper' ,  __FILE__ )  
						 
					
						
							
								
									
										
										
										
											2007-05-09 19:24:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-09-13 17:14:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  MailHandlerTest  <  ActiveSupport :: TestCase  
						 
					
						
							
								
									
										
										
										
											2008-07-06 16:26:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  fixtures  :users ,  :projects ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                   :enabled_modules , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                   :roles , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                   :members , 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-10 10:54:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                   :member_roles , 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-14 13:48:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                   :users , 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-06 16:26:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                   :issues , 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-30 16:00:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                   :issue_statuses , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                   :workflows , 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-06 16:26:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                   :trackers , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                   :projects_trackers , 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-12 11:34:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                   :versions , 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-06 16:26:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                   :enumerations , 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-30 14:57:33 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                   :issue_categories , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                   :custom_fields , 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-19 19:03:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                   :custom_fields_trackers , 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-29 17:36:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                   :custom_fields_projects , 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-19 19:03:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                   :boards , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                   :messages 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-09 19:24:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2008-06-22 10:45:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  FIXTURES_PATH  =  File . dirname ( __FILE__ )  +  '/../fixtures/mail_handler' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2007-05-09 19:24:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  def  setup 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-22 10:45:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ActionMailer :: Base . deliveries . clear 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-29 03:02:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    Setting . notified_events  =  Redmine :: Notifiable . all . collect ( & :name ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-09 19:24:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2008-06-22 10:45:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_add_issue 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-02 19:52:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ActionMailer :: Base . deliveries . clear 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-22 10:45:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # This email contains: 'Project: onlinestore' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue  =  submit_email ( 'ticket_on_given_project.eml' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  issue . is_a? ( Issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  ! issue . new_record? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue . reload 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-29 17:36:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    assert_equal  Project . find ( 2 ) ,  issue . project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  issue . project . trackers . first ,  issue . tracker 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-22 10:45:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    assert_equal  'New ticket on a given project' ,  issue . subject 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  User . find_by_login ( 'jsmith' ) ,  issue . author 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-09 20:17:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    assert_equal  IssueStatus . find_by_name ( 'Resolved' ) ,  issue . status 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-22 10:45:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    assert  issue . description . include? ( 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.' ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-28 23:45:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    assert_equal  '2010-01-01' ,  issue . start_date . to_s 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  '2010-12-31' ,  issue . due_date . to_s 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-29 00:05:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    assert_equal  User . find_by_login ( 'jsmith' ) ,  issue . assigned_to 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-12 11:34:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    assert_equal  Version . find_by_name ( 'alpha' ) ,  issue . fixed_version 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  2 . 5 ,  issue . estimated_hours 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  30 ,  issue . done_ratio 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-20 10:35:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    assert_equal  [ issue . id ,  1 ,  2 ] ,  [ issue . root_id ,  issue . lft ,  issue . rgt ] 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-09 20:17:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # keywords should be removed from the email body 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  ! issue . description . match ( / ^Project: /i ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  ! issue . description . match ( / ^Status: /i ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-02 19:52:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # Email notification should be sent 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    mail  =  ActionMailer :: Base . deliveries . last 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_not_nil  mail 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  mail . subject . include? ( 'New ticket on a given project' ) 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-22 10:45:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-29 17:36:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  test_add_issue_with_default_tracker 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # This email contains: 'Project: onlinestore' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue  =  submit_email ( 'ticket_on_given_project.eml' ,  :issue  = >  { :tracker  = >  'Support request' } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  issue . is_a? ( Issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  ! issue . new_record? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue . reload 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'Support request' ,  issue . tracker . name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-20 06:21:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  test_add_issue_with_status 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # This email contains: 'Project: onlinestore' and 'Status: Resolved' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue  =  submit_email ( 'ticket_on_given_project.eml' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  issue . is_a? ( Issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  ! issue . new_record? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue . reload 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  Project . find ( 2 ) ,  issue . project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  IssueStatus . find_by_name ( " Resolved " ) ,  issue . status 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-22 10:45:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2008-07-06 16:26:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_add_issue_with_attributes_override 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue  =  submit_email ( 'ticket_with_attributes.eml' ,  :allow_override  = >  'tracker,category,priority' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  issue . is_a? ( Issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  ! issue . new_record? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue . reload 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'New ticket on a given project' ,  issue . subject 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  User . find_by_login ( 'jsmith' ) ,  issue . author 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  Project . find ( 2 ) ,  issue . project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'Feature request' ,  issue . tracker . to_s 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'Stock management' ,  issue . category . to_s 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'Urgent' ,  issue . priority . to_s 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  issue . description . include? ( 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  test_add_issue_with_partial_attributes_override 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue  =  submit_email ( 'ticket_with_attributes.eml' ,  :issue  = >  { :priority  = >  'High' } ,  :allow_override  = >  [ 'tracker' ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  issue . is_a? ( Issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  ! issue . new_record? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue . reload 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'New ticket on a given project' ,  issue . subject 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  User . find_by_login ( 'jsmith' ) ,  issue . author 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  Project . find ( 2 ) ,  issue . project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'Feature request' ,  issue . tracker . to_s 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_nil  issue . category 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'High' ,  issue . priority . to_s 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  issue . description . include? ( 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2009-08-12 23:26:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_add_issue_with_spaces_between_attribute_and_separator 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue  =  submit_email ( 'ticket_with_spaces_between_attribute_and_separator.eml' ,  :allow_override  = >  'tracker,category,priority' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  issue . is_a? ( Issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  ! issue . new_record? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue . reload 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'New ticket on a given project' ,  issue . subject 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  User . find_by_login ( 'jsmith' ) ,  issue . author 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  Project . find ( 2 ) ,  issue . project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'Feature request' ,  issue . tracker . to_s 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'Stock management' ,  issue . category . to_s 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'Urgent' ,  issue . priority . to_s 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  issue . description . include? ( 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2008-06-22 10:45:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_add_issue_with_attachment_to_specific_project 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-06 16:26:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    issue  =  submit_email ( 'ticket_with_attachment.eml' ,  :issue  = >  { :project  = >  'onlinestore' } ) 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-22 10:45:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    assert  issue . is_a? ( Issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  ! issue . new_record? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue . reload 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'Ticket created by email with attachment' ,  issue . subject 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  User . find_by_login ( 'jsmith' ) ,  issue . author 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  Project . find ( 2 ) ,  issue . project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'This is  a new ticket with attachments' ,  issue . description 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Attachment properties 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  1 ,  issue . attachments . size 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'Paella.jpg' ,  issue . attachments . first . filename 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'image/jpeg' ,  issue . attachments . first . content_type 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  10790 ,  issue . attachments . first . filesize 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2008-12-30 14:57:33 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_add_issue_with_custom_fields 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue  =  submit_email ( 'ticket_with_custom_fields.eml' ,  :issue  = >  { :project  = >  'onlinestore' } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  issue . is_a? ( Issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  ! issue . new_record? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue . reload 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'New ticket with custom field values' ,  issue . subject 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'Value for a custom field' ,  issue . custom_value_for ( CustomField . find_by_name ( 'Searchable field' ) ) . value 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-09 20:17:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    assert  ! issue . description . match ( / ^searchable field: /i ) 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-30 14:57:33 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2008-11-30 16:00:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_add_issue_with_cc 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue  =  submit_email ( 'ticket_with_cc.eml' ,  :issue  = >  { :project  = >  'ecookbook' } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  issue . is_a? ( Issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  ! issue . new_record? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue . reload 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  issue . watched_by? ( User . find_by_mail ( 'dlopper@somenet.foo' ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-28 18:22:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    assert_equal  1 ,  issue . watcher_user_ids . size 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-30 16:00:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2009-06-14 14:48:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_add_issue_by_unknown_user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_no_difference  'User.count'  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      assert_equal  false ,  submit_email ( 'ticket_by_unknown_user.eml' ,  :issue  = >  { :project  = >  'ecookbook' } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  test_add_issue_by_anonymous_user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Role . anonymous . add_permission! ( :add_issues ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_no_difference  'User.count'  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      issue  =  submit_email ( 'ticket_by_unknown_user.eml' ,  :issue  = >  { :project  = >  'ecookbook' } ,  :unknown_user  = >  'accept' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      assert  issue . is_a? ( Issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      assert  issue . author . anonymous? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2010-06-19 19:24:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  test_add_issue_by_anonymous_user_with_no_from_address 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Role . anonymous . add_permission! ( :add_issues ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_no_difference  'User.count'  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      issue  =  submit_email ( 'ticket_by_empty_user.eml' ,  :issue  = >  { :project  = >  'ecookbook' } ,  :unknown_user  = >  'accept' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      assert  issue . is_a? ( Issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      assert  issue . author . anonymous? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-14 14:48:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2009-12-19 14:08:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_add_issue_by_anonymous_user_on_private_project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Role . anonymous . add_permission! ( :add_issues ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_no_difference  'User.count'  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      assert_no_difference  'Issue.count'  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert_equal  false ,  submit_email ( 'ticket_by_unknown_user.eml' ,  :issue  = >  { :project  = >  'onlinestore' } ,  :unknown_user  = >  'accept' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  test_add_issue_by_anonymous_user_on_private_project_without_permission_check 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_no_difference  'User.count'  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      assert_difference  'Issue.count'  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        issue  =  submit_email ( 'ticket_by_unknown_user.eml' ,  :issue  = >  { :project  = >  'onlinestore' } ,  :no_permission_check  = >  '1' ,  :unknown_user  = >  'accept' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  issue . is_a? ( Issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  issue . author . anonymous? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  ! issue . project . is_public? 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-20 10:35:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        assert_equal  [ issue . id ,  1 ,  2 ] ,  [ issue . root_id ,  issue . lft ,  issue . rgt ] 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-19 14:08:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2009-06-14 14:48:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_add_issue_by_created_user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Setting . default_language  =  'en' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_difference  'User.count'  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      issue  =  submit_email ( 'ticket_by_unknown_user.eml' ,  :issue  = >  { :project  = >  'ecookbook' } ,  :unknown_user  = >  'create' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      assert  issue . is_a? ( Issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      assert  issue . author . active? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      assert_equal  'john.doe@somenet.foo' ,  issue . author . mail 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      assert_equal  'John' ,  issue . author . firstname 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      assert_equal  'Doe' ,  issue . author . lastname 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      # account information 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      email  =  ActionMailer :: Base . deliveries . first 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      assert_not_nil  email 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      assert  email . subject . include? ( 'account activation' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      login  =  email . body . match ( / \ * Login: (.*)$ / ) [ 1 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      password  =  email . body . match ( / \ * Password: (.*)$ / ) [ 1 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      assert_equal  issue . author ,  User . try_to_login ( login ,  password ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2009-03-06 18:25:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_add_issue_without_from_header 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Role . anonymous . add_permission! ( :add_issues ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  false ,  submit_email ( 'ticket_without_from_header.eml' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-12 12:29:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-12 13:08:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_add_issue_with_invalid_attributes 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue  =  submit_email ( 'ticket_with_invalid_attributes.eml' ,  :allow_override  = >  'tracker,category,priority' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  issue . is_a? ( Issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  ! issue . new_record? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue . reload 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-14 13:48:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    assert_nil  issue . assigned_to 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-12 13:08:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    assert_nil  issue . start_date 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_nil  issue . due_date 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  0 ,  issue . done_ratio 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'Normal' ,  issue . priority . to_s 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  issue . description . include? ( 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-12 12:29:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_add_issue_with_localized_attributes 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    User . find_by_mail ( 'jsmith@somenet.foo' ) . update_attribute  'language' ,  'fr' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue  =  submit_email ( 'ticket_with_localized_attributes.eml' ,  :allow_override  = >  'tracker,category,priority' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  issue . is_a? ( Issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  ! issue . new_record? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue . reload 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'New ticket on a given project' ,  issue . subject 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  User . find_by_login ( 'jsmith' ) ,  issue . author 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  Project . find ( 2 ) ,  issue . project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'Feature request' ,  issue . tracker . to_s 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'Stock management' ,  issue . category . to_s 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'Urgent' ,  issue . priority . to_s 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  issue . description . include? ( 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-17 11:00:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  test_add_issue_with_japanese_keywords 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tracker  =  Tracker . create! ( :name  = >  '開発' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Project . find ( 1 ) . trackers  <<  tracker 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue  =  submit_email ( 'japanese_keywords_iso_2022_jp.eml' ,  :issue  = >  { :project  = >  'ecookbook' } ,  :allow_override  = >  'tracker' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_kind_of  Issue ,  issue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  tracker ,  issue . tracker 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 00:38:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-08 13:51:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_should_ignore_emails_from_emission_address 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Role . anonymous . add_permission! ( :add_issues ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_no_difference  'User.count'  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      assert_equal  false ,  submit_email ( 'ticket_from_emission_address.eml' ,  :issue  = >  { :project  = >  'ecookbook' } ,  :unknown_user  = >  'create' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 00:38:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_add_issue_should_send_email_notification 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-28 20:20:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    Setting . notified_events  =  [ 'issue_added' ] 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 00:38:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ActionMailer :: Base . deliveries . clear 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # This email contains: 'Project: onlinestore' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue  =  submit_email ( 'ticket_on_given_project.eml' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  issue . is_a? ( Issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  1 ,  ActionMailer :: Base . deliveries . size 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-06 18:25:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2008-06-22 10:45:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_add_issue_note 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    journal  =  submit_email ( 'ticket_reply.eml' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  journal . is_a? ( Journal ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  User . find_by_login ( 'jsmith' ) ,  journal . user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  Issue . find ( 2 ) ,  journal . journalized 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-20 06:21:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    assert_match  / This is reply / ,  journal . notes 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-29 17:36:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    assert_equal  'Feature request' ,  journal . issue . tracker . name 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-20 06:21:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-05-28 23:45:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_add_issue_note_with_attribute_changes 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-20 06:21:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # This email contains: 'Status: Resolved' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    journal  =  submit_email ( 'ticket_reply_with_status.eml' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  journal . is_a? ( Journal ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue  =  Issue . find ( journal . issue . id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  User . find_by_login ( 'jsmith' ) ,  journal . user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  Issue . find ( 2 ) ,  journal . journalized 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_match  / This is reply / ,  journal . notes 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-29 17:36:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    assert_equal  'Feature request' ,  journal . issue . tracker . name 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-20 06:21:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    assert_equal  IssueStatus . find_by_name ( " Resolved " ) ,  issue . status 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-28 23:45:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    assert_equal  '2010-01-01' ,  issue . start_date . to_s 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  '2010-12-31' ,  issue . due_date . to_s 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-29 00:05:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    assert_equal  User . find_by_login ( 'jsmith' ) ,  issue . assigned_to 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-29 17:36:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    assert_equal  " 52.6 " ,  issue . custom_value_for ( CustomField . find_by_name ( 'Float field' ) ) . value 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-09 19:24:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-28 00:38:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  test_add_issue_note_should_send_email_notification 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ActionMailer :: Base . deliveries . clear 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    journal  =  submit_email ( 'ticket_reply.eml' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  journal . is_a? ( Journal ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  1 ,  ActionMailer :: Base . deliveries . size 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-14 17:10:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2010-12-29 17:38:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_add_issue_note_should_not_set_defaults 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    journal  =  submit_email ( 'ticket_reply.eml' ,  :issue  = >  { :tracker  = >  'Support request' ,  :priority  = >  'High' } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  journal . is_a? ( Journal ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_match  / This is reply / ,  journal . notes 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'Feature request' ,  journal . issue . tracker . name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'Normal' ,  journal . issue . priority . name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2009-01-19 19:03:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_reply_to_a_message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    m  =  submit_email ( 'message_reply.eml' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  m . is_a? ( Message ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  ! m . new_record? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    m . reload 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'Reply via email' ,  m . subject 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # The email replies to message #2 which is part of the thread of message #1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  Message . find ( 1 ) ,  m . parent 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2009-01-21 18:22:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_reply_to_a_message_by_subject 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    m  =  submit_email ( 'message_reply_by_subject.eml' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  m . is_a? ( Message ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  ! m . new_record? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    m . reload 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'Reply to the first post' ,  m . subject 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  Message . find ( 1 ) ,  m . parent 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2008-12-14 17:10:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  test_should_strip_tags_of_html_only_emails 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue  =  submit_email ( 'ticket_html_only.eml' ,  :issue  = >  { :project  = >  'ecookbook' } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  issue . is_a? ( Issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  ! issue . new_record? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue . reload 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'HTML email' ,  issue . subject 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  'This is a html-only email.' ,  issue . description 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-09 19:24:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-23 18:35:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  context  " truncate emails based on the Setting "  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    context  " with no setting "  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      setup  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Setting . mail_handler_body_delimiters  =  '' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      should  " add the entire email into the issue "  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        issue  =  submit_email ( 'ticket_on_given_project.eml' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert_issue_created ( issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  issue . description . include? ( '---' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  issue . description . include? ( 'This paragraph is after the delimiter' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    context  " with a single string "  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      setup  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Setting . mail_handler_body_delimiters  =  '---' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      should  " truncate the email at the delimiter for the issue "  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        issue  =  submit_email ( 'ticket_on_given_project.eml' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert_issue_created ( issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  issue . description . include? ( 'This paragraph is before delimiters' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  issue . description . include? ( '--- This line starts with a delimiter' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  ! issue . description . match ( / ^---$ / ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  ! issue . description . include? ( 'This paragraph is after the delimiter' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-02 19:00:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    context  " with a single quoted reply (e.g. reply to a Redmine email notification) "  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      setup  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Setting . mail_handler_body_delimiters  =  '--- Reply above. Do not remove this line. ---' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      should  " truncate the email at the delimiter with the quoted reply symbols (>) "  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        journal  =  submit_email ( 'issue_update_with_quoted_reply_above.eml' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  journal . is_a? ( Journal ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  journal . notes . include? ( 'An update to the issue by the sender.' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  ! journal . notes . match ( Regexp . escape ( " --- Reply above. Do not remove this line. --- " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  ! journal . notes . include? ( 'Looks like the JSON api for projects was missed.' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    context  " with multiple quoted replies (e.g. reply to a reply of a Redmine email notification) "  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      setup  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Setting . mail_handler_body_delimiters  =  '--- Reply above. Do not remove this line. ---' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      should  " truncate the email at the delimiter with the quoted reply symbols (>) "  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        journal  =  submit_email ( 'issue_update_with_multiple_quoted_reply_above.eml' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  journal . is_a? ( Journal ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  journal . notes . include? ( 'An update to the issue by the sender.' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  ! journal . notes . match ( Regexp . escape ( " --- Reply above. Do not remove this line. --- " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  ! journal . notes . include? ( 'Looks like the JSON api for projects was missed.' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-23 18:35:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    context  " with multiple strings "  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      setup  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Setting . mail_handler_body_delimiters  =  " --- \n BREAK " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      should  " truncate the email at the first delimiter found (BREAK) "  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        issue  =  submit_email ( 'ticket_on_given_project.eml' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert_issue_created ( issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  issue . description . include? ( 'This paragraph is before delimiters' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  ! issue . description . include? ( 'BREAK' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  ! issue . description . include? ( 'This paragraph is between delimiters' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  ! issue . description . match ( / ^---$ / ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        assert  ! issue . description . include? ( 'This paragraph is after the delimiter' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2010-06-20 16:22:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  test_email_with_long_subject_line 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue  =  submit_email ( 'ticket_with_long_subject.eml' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  issue . is_a? ( Issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert_equal  issue . subject ,  'New ticket on a given project with a very long subject line which exceeds 255 chars and should not be ignored but chopped off. And if the subject line is still not long enough, we just add more text. And more text. Wow, this is really annoying. Especially, if you have nothing to say...' [ 0 , 255 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-23 18:35:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-05-09 19:24:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  private 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-22 10:45:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  submit_email ( filename ,  options = { } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    raw  =  IO . read ( File . join ( FIXTURES_PATH ,  filename ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MailHandler . receive ( raw ,  options ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-23 18:35:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  assert_issue_created ( issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  issue . is_a? ( Issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    assert  ! issue . new_record? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    issue . reload 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-09 19:24:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								end