123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- # encoding: utf-8
- # rubocop:disable all
- require 'test_helper'
- class EmailPostmasterTest < ActiveSupport::TestCase
- test 'process with postmaster filter' do
- group1 = Group.create_if_not_exists(
- name: 'Test Group1',
- created_by_id: 1,
- updated_by_id: 1,
- )
- group2 = Group.create_if_not_exists(
- name: 'Test Group2',
- created_by_id: 1,
- updated_by_id: 1,
- )
- PostmasterFilter.destroy_all
- PostmasterFilter.create(
- name: 'not used',
- match: {
- from: {
- operator: 'contains',
- value: 'nobody@example.com',
- },
- },
- perform: {
- 'X-Zammad-Ticket-priority' => {
- value: '3 high',
- },
- },
- channel: 'email',
- active: true,
- created_by_id: 1,
- updated_by_id: 1,
- )
- PostmasterFilter.create(
- name: 'used',
- match: {
- from: {
- operator: 'contains',
- value: 'me@example.com',
- },
- },
- perform: {
- 'X-Zammad-Ticket-group_id' => {
- value: group1.id,
- },
- 'x-Zammad-Article-Internal' => {
- value: true,
- },
- },
- channel: 'email',
- active: true,
- created_by_id: 1,
- updated_by_id: 1,
- )
- PostmasterFilter.create(
- name: 'used x-any-recipient',
- match: {
- 'x-any-recipient' => {
- operator: 'contains',
- value: 'any@example.com',
- },
- },
- perform: {
- 'X-Zammad-Ticket-group_id' => {
- value: group2.id,
- },
- 'x-Zammad-Article-Internal' => {
- value: true,
- },
- },
- channel: 'email',
- active: true,
- created_by_id: 1,
- updated_by_id: 1,
- )
- data = 'From: me@example.com
- To: customer@example.com
- Subject: some subject
- Some Text'
- parser = Channel::EmailParser.new
- ticket, article, user = parser.process( { trusted: false }, data )
- assert_equal('Test Group1', ticket.group.name)
- assert_equal('2 normal', ticket.priority.name)
- assert_equal('some subject', ticket.title)
- assert_equal('Customer', article.sender.name)
- assert_equal('email', article.type.name)
- assert_equal(true, article.internal)
- data = 'From: Some Body <somebody@example.com>
- To: Bob <bod@example.com>
- Cc: any@example.com
- Subject: some subject
- Some Text'
- parser = Channel::EmailParser.new
- ticket, article, user = parser.process( { trusted: false }, data )
- assert_equal('Test Group2', ticket.group.name)
- assert_equal('2 normal', ticket.priority.name)
- assert_equal('some subject', ticket.title)
- assert_equal('Customer', article.sender.name)
- assert_equal('email', article.type.name)
- assert_equal(true, article.internal)
- PostmasterFilter.create(
- name: 'used x-any-recipient',
- match: {
- 'x-any-recipient' => {
- operator: 'contains not',
- value: 'any_not@example.com',
- },
- },
- perform: {
- 'X-Zammad-Ticket-group_id' => {
- value: group2.id,
- },
- 'X-Zammad-Ticket-priority_id' => {
- value: '1',
- },
- 'x-Zammad-Article-Internal' => {
- value: 'false',
- },
- },
- channel: 'email',
- active: true,
- created_by_id: 1,
- updated_by_id: 1,
- )
- data = 'From: Some Body <somebody@example.com>
- To: Bob <bod@example.com>
- Cc: any@example.com
- Subject: some subject2
- Some Text'
- parser = Channel::EmailParser.new
- ticket, article, user = parser.process( { trusted: false }, data )
- assert_equal('Test Group2', ticket.group.name)
- assert_equal('1 low', ticket.priority.name)
- assert_equal('some subject2', ticket.title)
- assert_equal('Customer', article.sender.name)
- assert_equal('email', article.type.name)
- assert_equal(false, article.internal)
- PostmasterFilter.destroy_all
- PostmasterFilter.create(
- name: 'used - empty selector',
- match: {
- from: {
- operator: 'contains',
- value: '',
- },
- },
- perform: {
- 'X-Zammad-Ticket-group_id' => {
- value: group2.id,
- },
- 'X-Zammad-Ticket-priority_id' => {
- value: '1',
- },
- 'x-Zammad-Article-Internal' => {
- value: true,
- },
- },
- channel: 'email',
- active: true,
- created_by_id: 1,
- updated_by_id: 1,
- )
- data = 'From: Some Body <somebody@example.com>
- To: Bob <bod@example.com>
- Cc: any@example.com
- Subject: some subject - no selector
- Some Text'
- parser = Channel::EmailParser.new
- ticket, article, user = parser.process( { trusted: false }, data )
- assert_equal('Users', ticket.group.name)
- assert_equal('2 normal', ticket.priority.name)
- assert_equal('some subject - no selector', ticket.title)
- assert_equal('Customer', article.sender.name)
- assert_equal('email', article.type.name)
- assert_equal(false, article.internal)
- PostmasterFilter.destroy_all
- end
- end
|