|
@@ -1,299 +0,0 @@
|
|
|
-require 'test_helper'
|
|
|
-
|
|
|
-class EmailProcessOutOfOfficeTest < ActiveSupport::TestCase
|
|
|
-
|
|
|
- test 'process with out of office check - ms' do
|
|
|
-
|
|
|
- ticket = Ticket.create!(
|
|
|
- title: 'ooo check - ms',
|
|
|
- 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: 'ooo check',
|
|
|
- message_id: '<20150830145601.30.608881@edenhofer.zammad.com>',
|
|
|
- body: 'some message bounce 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,
|
|
|
- )
|
|
|
- travel 1.second
|
|
|
-
|
|
|
- # exchange out of office example #1
|
|
|
- email_raw_string = "From: me@example.com
|
|
|
-To: customer@example.com
|
|
|
-Subject: #{ticket.subject_build('some new subject 1')}
|
|
|
-X-MS-Has-Attach:
|
|
|
-X-Auto-Response-Suppress: All
|
|
|
-X-MS-Exchange-Inbox-Rules-Loop: aaa.bbb@example.com
|
|
|
-X-MS-TNEF-Correlator:
|
|
|
-x-olx-disclaimer: Done
|
|
|
-x-tm-as-product-ver: SMEX-11.0.0.4179-8.000.1202-21706.006
|
|
|
-x-tm-as-result: No--39.689200-0.000000-31
|
|
|
-x-tm-as-user-approved-sender: Yes
|
|
|
-x-tm-as-user-blocked-sender: No
|
|
|
-
|
|
|
-Some Text"
|
|
|
-
|
|
|
- ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
|
|
- assert_equal(true, mail['x-zammad-out-of-office'.to_sym])
|
|
|
- ticket = Ticket.find(ticket.id)
|
|
|
- assert_equal(ticket.id, ticket_p.id)
|
|
|
- assert_equal('closed', ticket.state.name)
|
|
|
-
|
|
|
- # normal follow up
|
|
|
- email_raw_string = "From: me@example.com
|
|
|
-To: customer@example.com
|
|
|
-Subject: #{ticket.subject_build('some new subject - none')}
|
|
|
-X-MS-Exchange-Inbox-Rules-Loop: aaa.bbb@example.com
|
|
|
-
|
|
|
-Some Text 2"
|
|
|
-
|
|
|
- ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
|
|
- assert_equal(false, mail['x-zammad-out-of-office'.to_sym])
|
|
|
- ticket = Ticket.find(ticket.id)
|
|
|
- assert_equal(ticket.id, ticket_p.id)
|
|
|
- assert_equal('open', ticket_p.state.name)
|
|
|
-
|
|
|
- ticket = Ticket.find(ticket.id)
|
|
|
- ticket.state = Ticket::State.lookup(name: 'closed')
|
|
|
- ticket.save
|
|
|
-
|
|
|
- # exchange out of office example #2
|
|
|
- email_raw_string = "From: me@example.com
|
|
|
-To: customer@example.com
|
|
|
-Subject: #{ticket.subject_build('some new subject 2')}
|
|
|
-X-MS-Has-Attach:
|
|
|
-X-Auto-Response-Suppress: All
|
|
|
-X-MS-Exchange-Inbox-Rules-Loop: aaa.bbb@example.com
|
|
|
-X-MS-TNEF-Correlator:
|
|
|
-x-exclaimer-md-config: 8c10826d-4052-4c5c-a8e8-e09011276827
|
|
|
-
|
|
|
-Some Text"
|
|
|
-
|
|
|
- ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
|
|
- assert_equal(true, mail['x-zammad-out-of-office'.to_sym])
|
|
|
- ticket = Ticket.find(ticket.id)
|
|
|
- assert_equal(ticket.id, ticket_p.id)
|
|
|
- assert_equal('closed', ticket.state.name)
|
|
|
- travel_back
|
|
|
- end
|
|
|
-
|
|
|
- test 'process with out of office check - zimbra' do
|
|
|
-
|
|
|
- ticket = Ticket.create!(
|
|
|
- title: 'ooo check - zimbra',
|
|
|
- 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: 'ooo check',
|
|
|
- message_id: '<20150830145601.30.608881@edenhofer.zammad.com>',
|
|
|
- body: 'some message bounce 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,
|
|
|
- )
|
|
|
- travel 1.second
|
|
|
-
|
|
|
- # exchange out of office example #1
|
|
|
- email_raw_string = "From: me@example.com
|
|
|
-To: customer@example.com
|
|
|
-Subject: #{ticket.subject_build('some new subject 1')}
|
|
|
-Auto-Submitted: auto-replied (zimbra; vacation)
|
|
|
-Precedence: bulk
|
|
|
-X-Mailer: Zimbra 7.1.3_GA_3346
|
|
|
-
|
|
|
-Some Text"
|
|
|
-
|
|
|
- ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
|
|
- assert_equal(true, mail['x-zammad-out-of-office'.to_sym])
|
|
|
- ticket = Ticket.find(ticket.id)
|
|
|
- assert_equal(ticket.id, ticket_p.id)
|
|
|
- assert_equal('closed', ticket.state.name)
|
|
|
-
|
|
|
- # normal follow up
|
|
|
- email_raw_string = "From: me@example.com
|
|
|
-To: customer@example.com
|
|
|
-Subject: #{ticket.subject_build('some new subject - none')}
|
|
|
-X-Mailer: Zimbra 7.1.3_GA_3346
|
|
|
-
|
|
|
-Some Text 2"
|
|
|
-
|
|
|
- ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
|
|
- assert_equal(false, mail['x-zammad-out-of-office'.to_sym])
|
|
|
- ticket = Ticket.find(ticket.id)
|
|
|
- assert_equal(ticket.id, ticket_p.id)
|
|
|
- assert_equal('open', ticket_p.state.name)
|
|
|
-
|
|
|
- ticket = Ticket.find(ticket.id)
|
|
|
- ticket.state = Ticket::State.lookup(name: 'closed')
|
|
|
- ticket.save
|
|
|
-
|
|
|
- # exchange out of office example #2
|
|
|
- email_raw_string = "From: me@example.com
|
|
|
-To: customer@example.com
|
|
|
-Subject: #{ticket.subject_build('some new subject 2')}
|
|
|
-Auto-Submitted: auto-replied (zimbra; vacation)
|
|
|
-Precedence: bulk
|
|
|
-X-Mailer: Zimbra 7.1.3_GA_3346
|
|
|
-
|
|
|
-Some Text"
|
|
|
-
|
|
|
- ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
|
|
- assert_equal(true, mail['x-zammad-out-of-office'.to_sym])
|
|
|
- ticket = Ticket.find(ticket.id)
|
|
|
- assert_equal(ticket.id, ticket_p.id)
|
|
|
- assert_equal('closed', ticket.state.name)
|
|
|
- travel_back
|
|
|
- end
|
|
|
-
|
|
|
- test 'process with out of office check - cloud' do
|
|
|
-
|
|
|
- ticket = Ticket.create!(
|
|
|
- title: 'ooo check - cloud',
|
|
|
- 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: 'ooo check',
|
|
|
- message_id: '<20150830145601.30.608881@edenhofer.zammad.com>',
|
|
|
- body: 'some message bounce 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,
|
|
|
- )
|
|
|
- travel 1.second
|
|
|
-
|
|
|
- # exchange out of office example #1
|
|
|
- email_raw_string = "From: me@example.com
|
|
|
-To: customer@example.com
|
|
|
-Subject: #{ticket.subject_build('some new subject 1')}
|
|
|
-Auto-submitted: auto-replied; owner-email=\"me@example.com\"
|
|
|
-
|
|
|
-Some Text"
|
|
|
-
|
|
|
- ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
|
|
- assert_equal(true, mail['x-zammad-out-of-office'.to_sym])
|
|
|
- ticket = Ticket.find(ticket.id)
|
|
|
- assert_equal(ticket.id, ticket_p.id)
|
|
|
- assert_equal('closed', ticket.state.name)
|
|
|
-
|
|
|
- # normal follow up
|
|
|
- email_raw_string = "From: me@example.com
|
|
|
-To: customer@example.com
|
|
|
-Subject: #{ticket.subject_build('some new subject - none')}
|
|
|
-
|
|
|
-Some Text 2"
|
|
|
-
|
|
|
- ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
|
|
- assert_equal(false, mail['x-zammad-out-of-office'.to_sym])
|
|
|
- ticket = Ticket.find(ticket.id)
|
|
|
- assert_equal(ticket.id, ticket_p.id)
|
|
|
- assert_equal('open', ticket_p.state.name)
|
|
|
-
|
|
|
- ticket = Ticket.find(ticket.id)
|
|
|
- ticket.state = Ticket::State.lookup(name: 'closed')
|
|
|
- ticket.save
|
|
|
-
|
|
|
- # exchange out of office example #2
|
|
|
- email_raw_string = "From: me@example.com
|
|
|
-To: customer@example.com
|
|
|
-Subject: #{ticket.subject_build('some new subject 2')}
|
|
|
-Auto-submitted: auto-replied; owner-email=\"me@example.com\"
|
|
|
-
|
|
|
-Some Text"
|
|
|
-
|
|
|
- ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
|
|
- assert_equal(true, mail['x-zammad-out-of-office'.to_sym])
|
|
|
- ticket = Ticket.find(ticket.id)
|
|
|
- assert_equal(ticket.id, ticket_p.id)
|
|
|
- assert_equal('closed', ticket.state.name)
|
|
|
- travel_back
|
|
|
- end
|
|
|
-
|
|
|
- test 'process with out of office check - gmail' do
|
|
|
-
|
|
|
- ticket = Ticket.create!(
|
|
|
- title: 'ooo check - gmail',
|
|
|
- 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: 'ooo check',
|
|
|
- message_id: '<20150830145601.30.608881@edenhofer.zammad.com>',
|
|
|
- body: 'some message bounce 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,
|
|
|
- )
|
|
|
- travel 1.second
|
|
|
-
|
|
|
- # gmail out of office example #1
|
|
|
- email_raw_string = "From: me@example.com
|
|
|
-To: customer@example.com
|
|
|
-Subject: vacation: #{ticket.subject_build('some new subject 1')}
|
|
|
-Precedence: bulk
|
|
|
-X-Autoreply: yes
|
|
|
-Auto-Submitted: auto-replied
|
|
|
-
|
|
|
-Some Text"
|
|
|
-
|
|
|
- ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
|
|
- assert_equal(true, mail['x-zammad-out-of-office'.to_sym])
|
|
|
- ticket = Ticket.find(ticket.id)
|
|
|
- assert_equal(ticket.id, ticket_p.id)
|
|
|
- assert_equal('closed', ticket.state.name)
|
|
|
-
|
|
|
- # normal follow up
|
|
|
- email_raw_string = "From: me@example.com
|
|
|
-To: customer@example.com
|
|
|
-Subject: #{ticket.subject_build('some new subject - none')}
|
|
|
-
|
|
|
-Some Text 2"
|
|
|
-
|
|
|
- ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
|
|
- assert_equal(false, mail['x-zammad-out-of-office'.to_sym])
|
|
|
- ticket = Ticket.find(ticket.id)
|
|
|
- assert_equal(ticket.id, ticket_p.id)
|
|
|
- assert_equal('open', ticket_p.state.name)
|
|
|
- travel_back
|
|
|
- end
|
|
|
-
|
|
|
-end
|