email_parser_test.rb 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. # encoding: utf-8
  2. require 'test_helper'
  3. class EmailParserTest < ActiveSupport::TestCase
  4. test 'parse' do
  5. files = [
  6. {
  7. :data => IO.read('test/fixtures/mail1.box'),
  8. :body_md5 => 'fb6ed5070ffbb821b67b15b83239e1db',
  9. :params => {
  10. :from => 'John.Smith@example.com',
  11. :from_email => 'John.Smith@example.com',
  12. :from_display_name => nil,
  13. :subject => 'CI Daten für PublicView ',
  14. },
  15. },
  16. {
  17. :data => IO.read('test/fixtures/mail2.box'),
  18. :body_md5 => '25a1ff722497271965b55e52659784a6',
  19. :params => {
  20. :from => 'Martin Edenhofer <martin@example.com>',
  21. :from_email => 'martin@example.com',
  22. :from_display_name => 'Martin Edenhofer',
  23. :subject => 'aaäöüßad asd',
  24. :plain_part => "äöüß ad asd\r\n\r\n-Martin\r\n\r\n--\r\nOld programmers never die. They just branch to a new address.",
  25. },
  26. },
  27. {
  28. :data => IO.read('test/fixtures/mail3.box'),
  29. :body_md5 => '0914848466334919eb33ad4de79d6189',
  30. :params => {
  31. :from => '"Günther John | Example GmbH" <k.guenther@example.com>',
  32. :from_email => 'k.guenther@example.com',
  33. :from_display_name => 'Günther John | Example GmbH',
  34. :subject => 'Ticket Templates',
  35. },
  36. },
  37. ]
  38. files.each { |file|
  39. parser = Channel::EmailParser.new
  40. data = parser.parse( file[:data] )
  41. # check body
  42. md5 = Digest::MD5.hexdigest( data[:plain_part] )
  43. assert_equal( file[:body_md5], md5 )
  44. puts data[:from]
  45. # check params
  46. file[:params].each { |key, value|
  47. if key.to_s == 'plain_part'
  48. assert_equal( Digest::MD5.hexdigest( file[:params][key.to_sym].to_s ), Digest::MD5.hexdigest( data[key.to_sym].to_s ) )
  49. else
  50. assert_equal( file[:params][key.to_sym], data[key.to_sym] )
  51. end
  52. }
  53. }
  54. end
  55. end