123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- # encoding: utf-8
- require 'test_helper'
- class EmailProcessFollowUpTest < ActiveSupport::TestCase
- test 'process with follow up check' do
- ticket = Ticket.create(
- title: 'follow up check',
- group: Group.lookup(name: 'Users'),
- customer_id: 2,
- state: Ticket::State.lookup(name: 'new'),
- priority: Ticket::Priority.lookup(name: '2 normal'),
- updated_by_id: 1,
- created_by_id: 1,
- )
- article = Ticket::Article.create(
- ticket_id: ticket.id,
- from: 'some_sender@example.com',
- to: 'some_recipient@example.com',
- subject: 'follow up check',
- message_id: '<20150830145601.30.608882@edenhofer.zammad.com>',
- body: 'some message article',
- internal: false,
- sender: Ticket::Article::Sender.lookup(name: 'Agent'),
- type: Ticket::Article::Type.lookup(name: 'email'),
- updated_by_id: 1,
- created_by_id: 1,
- )
- email_raw_string_subject = "From: me@example.com
- To: customer@example.com
- Subject: #{ticket.subject_build('some new subject')}
- Some Text"
- email_raw_string_body = "From: me@example.com
- To: customer@example.com
- Subject: no reference
- Some Text #{ticket.subject_build('some new subject')} "
- email_raw_string_attachment = "From: me@example.com
- Content-Type: multipart/mixed; boundary=\"Apple-Mail=_ED77AC8D-FB6F-40E5-8FBE-D41FF5E1BAF2\"
- Subject: no reference
- Date: Sun, 30 Aug 2015 23:20:54 +0200
- To: Martin Edenhofer <me@znuny.com>
- Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2104\))
- X-Mailer: Apple Mail (2.2104)
- --Apple-Mail=_ED77AC8D-FB6F-40E5-8FBE-D41FF5E1BAF2
- Content-Transfer-Encoding: 7bit
- Content-Type: text/plain;
- charset=us-ascii
- no reference
- --Apple-Mail=_ED77AC8D-FB6F-40E5-8FBE-D41FF5E1BAF2
- Content-Disposition: attachment;
- filename=test1.txt
- Content-Type: text/plain;
- name=\"test.txt\"
- Content-Transfer-Encoding: 7bit
- Some Text #{ticket.subject_build('some new subject')}
- --Apple-Mail=_ED77AC8D-FB6F-40E5-8FBE-D41FF5E1BAF2--"
- email_raw_string_references1 = "From: me@example.com
- To: customer@example.com
- Subject: no reference
- In-Reply-To: <20150830145601.30.608882@edenhofer.zammad.com>
- References: <DA918CD1-BE9A-4262-ACF6-5001E59291B6@znuny.com>
- no reference "
- email_raw_string_references2 = "From: me@example.com
- To: customer@example.com
- Subject: no reference
- References: <DA918CD1-BE9A-4262-ACF6-5001E59291B6@znuny.com> <20150830145601.30.608882@edenhofer.zammad.com> <DA918CD1-BE9A-4262-ACF6-5001E59291XX@znuny.com>
- no reference "
- setting_orig = Setting.get('postmaster_follow_up_search_in')
- Setting.set('postmaster_follow_up_search_in', %w(body attachment references))
- sleep 1
- ticket_p, article_p, user_p = Channel::EmailParser.new.process( {}, email_raw_string_subject)
- assert_equal(ticket.id, ticket_p.id)
- sleep 1
- ticket_p, article_p, user_p = Channel::EmailParser.new.process( {}, email_raw_string_body)
- assert_equal(ticket.id, ticket_p.id)
- sleep 1
- ticket_p, article_p, user_p = Channel::EmailParser.new.process( {}, email_raw_string_attachment)
- assert_equal(ticket.id, ticket_p.id)
- sleep 1
- ticket_p, article_p, user_p = Channel::EmailParser.new.process( {}, email_raw_string_references1)
- assert_equal(ticket.id, ticket_p.id)
- sleep 1
- ticket_p, article_p, user_p = Channel::EmailParser.new.process( {}, email_raw_string_references2)
- assert_equal(ticket.id, ticket_p.id)
- Setting.set('postmaster_follow_up_search_in', setting_orig)
- sleep 1
- ticket_p, article_p, user_p = Channel::EmailParser.new.process( {}, email_raw_string_subject)
- assert_equal(ticket.id, ticket_p.id)
- sleep 1
- ticket_p, article_p, user_p = Channel::EmailParser.new.process( {}, email_raw_string_body)
- assert_not_equal(ticket.id, ticket_p.id)
- sleep 1
- ticket_p, article_p, user_p = Channel::EmailParser.new.process( {}, email_raw_string_attachment)
- assert_not_equal(ticket.id, ticket_p.id)
- sleep 1
- ticket_p, article_p, user_p = Channel::EmailParser.new.process( {}, email_raw_string_references1)
- assert_not_equal(ticket.id, ticket_p.id)
- sleep 1
- ticket_p, article_p, user_p = Channel::EmailParser.new.process( {}, email_raw_string_references2)
- assert_not_equal(ticket.id, ticket_p.id)
- end
- test 'process with follow up check - with auto responses and no T# in subject_build' do
- ticket = Ticket.create(
- title: 'follow up - with references follow up check',
- group: Group.lookup(name: 'Users'),
- customer_id: 2,
- state: Ticket::State.lookup(name: 'closed'),
- priority: Ticket::Priority.lookup(name: '2 normal'),
- updated_by_id: 1,
- created_by_id: 1,
- )
- article = Ticket::Article.create(
- ticket_id: ticket.id,
- from: 'some_sender@example.com',
- to: 'some_recipient@example.com',
- subject: 'follow up with references follow up check',
- message_id: '<20151222145601.30.608881@edenhofer.zammad.com>',
- body: 'some message with references follow up check',
- internal: false,
- sender: Ticket::Article::Sender.lookup(name: 'Agent'),
- type: Ticket::Article::Type.lookup(name: 'email'),
- updated_by_id: 1,
- created_by_id: 1,
- )
- sleep 1
- # auto response without T# in subject, find follow up by references header
- email_raw_string = "From: bob@example.com
- To: customer@example.com
- Subject: =?ISO-8859-1?Q?AUTO=3A_Bob_Smith_ist_au=DFer_Haus=2E_=2F_is_out_of?=
- =?ISO-8859-1?Q?_office=2E_=28R=FCckkehr_am_28=2E12=2E2015=29?=
- In-Reply-To: <20251222081758.116249.983698@portal.znuny.com>
- References: <OF9D1FD72A.878EF84E-ONC1257F22.003D7BB4-C1257F22.003F4503@example.com> <20151222145601.30.608881@edenhofer.zammad.com> <20251222081758.116249.983698@portal.znuny.com>
- Message-ID: <OFD563742F.FC05EEAF-ONC1257F23.002DAE02@example.com>
- Auto-Submitted: auto-replied
- Some Text"
- ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process( {}, email_raw_string)
- ticket = Ticket.find(ticket.id)
- assert_equal(ticket.id, ticket_p.id)
- assert_equal('open', ticket.state.name)
- end
- end
|