email_process_test.rb 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. # encoding: utf-8
  2. require 'test_helper'
  3. class EmailProcessTest < ActiveSupport::TestCase
  4. test 'process' do
  5. files = [
  6. {
  7. :data => 'From: me@example.com
  8. To: customer@example.com
  9. Subject: some subject
  10. Some Text',
  11. :success => true,
  12. },
  13. {
  14. :data => 'From: me@example.com
  15. To: customer@example.com
  16. Subject: some subject
  17. X-Zammad-Ignore: true
  18. Some Text',
  19. :success => false,
  20. },
  21. {
  22. :data => 'From: me@example.com
  23. To: customer@example.com
  24. Subject: some subject
  25. X-Zammad-Priority: 3 high
  26. X-Zammad-Article-Sender: system
  27. x-Zammad-Article-Type: phone
  28. Some Text',
  29. :success => true,
  30. :result => {
  31. 0 => {
  32. :ticket_priority => '3 high',
  33. :title => 'some subject',
  34. },
  35. 1 => {
  36. :ticket_article_sender => 'System',
  37. :ticket_article_type => 'phone',
  38. },
  39. },
  40. },
  41. {
  42. :data => "From: me@example.com
  43. To: customer@example.com
  44. Subject: äöü some subject
  45. Some Textäöü".encode("ISO-8859-1"),
  46. :success => true,
  47. :result => {
  48. 0 => {
  49. :ticket_priority => '2 normal',
  50. :title => 'äöü some subject',
  51. },
  52. 1 => {
  53. :body => 'Some Textäöü',
  54. :ticket_article_sender => 'Customer',
  55. :ticket_article_type => 'email',
  56. },
  57. },
  58. },
  59. ]
  60. files.each { |file|
  61. parser = Channel::EmailParser.new
  62. result = parser.process( { :trusted => true }, file[:data] )
  63. if file[:success] && result[1]
  64. assert( true )
  65. if file[:result]
  66. [ 0, 1, 2 ].each { |level|
  67. if file[:result][level]
  68. file[:result][level].each { |key, value|
  69. if result[level].send(key).respond_to?('name')
  70. assert_equal( result[level].send(key).name, value.to_s)
  71. else
  72. assert_equal( result[level].send(key), value.to_s)
  73. end
  74. }
  75. end
  76. }
  77. end
  78. elsif !file[:success] && result == true
  79. assert( true )
  80. elsif !file[:success] && result[1]
  81. assert( false, 'ticket should not be created' )
  82. else
  83. assert( false, 'UNKNOWN!' )
  84. end
  85. }
  86. end
  87. end