PageRenderTime 74ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/test/unit/test_tmail_bouncer.rb

https://github.com/tangofoxtrot/tmail_bouncer
Ruby | 265 lines | 194 code | 71 blank | 0 comment | 0 complexity | ddf09dca202a0021b900fc2e74e1ab8b MD5 | raw file
  1. require 'test_helper'
  2. class TmailBouncerTest < Test::Unit::TestCase
  3. context "Yahoo Bounce" do
  4. setup do
  5. @email = read_email('yahoo.eml')
  6. end
  7. should "be a tmail object" do
  8. assert @email.is_a?(TMail::Mail), "Whoops Im a #{@email.class}"
  9. end
  10. should "return StandardBouncer" do
  11. assert @email.undeliverable_info.is_a?(TmailBouncer::StandardBouncer) , "Whoops Im a #{@email.class}"
  12. end
  13. should "detect bounced" do
  14. assert_equal @email.undeliverable_info.status, "Failure"
  15. end
  16. should "detect original sender" do
  17. assert_equal @email.undeliverable_info.original_sender, "joe@example.com"
  18. end
  19. should "detect original recipient" do
  20. assert_equal @email.undeliverable_info.original_recipient, "fred@somewhere.com"
  21. end
  22. should "detect original subject" do
  23. assert_equal @email.undeliverable_info.original_subject, "I like turtles"
  24. end
  25. should "detect original_message_id" do
  26. assert_equal @email.undeliverable_info.original_message_id, "<1234.1212@example.com>"
  27. end
  28. should "return status of failure" do
  29. assert_equal "Failure", @email.undeliverable_info.status
  30. end
  31. end
  32. context "Yahoo Legit Email" do
  33. setup do
  34. @email = read_email('yahoo_legit.eml')
  35. end
  36. should "be a tmail object" do
  37. assert @email.is_a?(TMail::Mail), "Whoops Im a #{@email.class}"
  38. end
  39. should "return NoBounce" do
  40. assert @email.undeliverable_info.is_a?(TmailBouncer::NoBouncer) , "Whoops Im a #{@email.class}"
  41. end
  42. should "return status of Success" do
  43. assert_equal "Success", @email.undeliverable_info.status
  44. end
  45. end
  46. context "AOL Bounce" do
  47. setup do
  48. @email = read_email('aol.eml')
  49. end
  50. should "be a tmail object" do
  51. assert @email.is_a?(TMail::Mail), "Whoops Im a #{@email.class}"
  52. end
  53. should "return StandardBouncer" do
  54. assert @email.undeliverable_info.is_a?(TmailBouncer::StandardBouncer) , "Whoops Im a #{@email.class}"
  55. end
  56. should "detect bounced" do
  57. assert_equal @email.undeliverable_info.status, "Failure"
  58. end
  59. should "detect original sender" do
  60. assert_equal @email.undeliverable_info.original_sender, "joe@example.com"
  61. end
  62. should "detect original recipient" do
  63. assert_equal @email.undeliverable_info.original_recipient, "fred@aol.com"
  64. end
  65. should "detect original subject" do
  66. assert_equal @email.undeliverable_info.original_subject, "I like turtles"
  67. end
  68. should "detect original_message_id" do
  69. assert_equal @email.undeliverable_info.original_message_id, "<1234.1212@example.com>"
  70. end
  71. should "return status of failure" do
  72. assert_equal "Failure", @email.undeliverable_info.status
  73. end
  74. end
  75. context "Box Full Bounce" do
  76. setup do
  77. @email = read_email('box_full.eml')
  78. end
  79. should "be a tmail object" do
  80. assert @email.is_a?(TMail::Mail), "Whoops Im a #{@email.class}"
  81. end
  82. should "return BoxFullBouncer" do
  83. assert @email.undeliverable_info.is_a?(TmailBouncer::BoxFullBouncer) , "Whoops Im a #{@email.class}"
  84. end
  85. should "detect bounced" do
  86. assert_equal @email.undeliverable_info.status, "Failure"
  87. end
  88. should "detect original sender" do
  89. assert_equal @email.undeliverable_info.original_sender, "joe@example.com"
  90. end
  91. should "detect original recipient" do
  92. assert_equal @email.undeliverable_info.original_recipient, "fred@example.com"
  93. end
  94. should "detect original subject" do
  95. assert_equal @email.undeliverable_info.original_subject, "I like turtles"
  96. end
  97. should "detect original_message_id" do
  98. assert_equal @email.undeliverable_info.original_message_id, "<1234.1212@example.com>"
  99. end
  100. should "return status of failure" do
  101. assert_equal "Failure", @email.undeliverable_info.status
  102. end
  103. end
  104. context "Out of Office Bounce" do
  105. setup do
  106. @email = read_email('out_of_office.eml')
  107. end
  108. should "be a tmail object" do
  109. assert @email.is_a?(TMail::Mail), "Whoops Im a #{@email.class}"
  110. end
  111. should "return OutOfOfficeBouncer" do
  112. assert @email.undeliverable_info.is_a?(TmailBouncer::OutOfOfficeBouncer) , "Whoops Im a #{@email.class}"
  113. end
  114. should "detect bounced" do
  115. assert_equal @email.undeliverable_info.status, "Failure"
  116. end
  117. should "detect original sender" do
  118. assert_equal @email.undeliverable_info.original_sender, "joe@example.com"
  119. end
  120. should "detect original recipient" do
  121. assert_equal @email.undeliverable_info.original_recipient, "fred@example.com"
  122. end
  123. should "detect original subject" do
  124. assert_equal @email.undeliverable_info.original_subject, "Out of Office: I like turtles"
  125. end
  126. should "detect original_message_id" do
  127. assert_equal @email.undeliverable_info.original_message_id, "<1234.1212@example.com>"
  128. end
  129. should "return status of failure" do
  130. assert_equal "Failure", @email.undeliverable_info.status
  131. end
  132. end
  133. context "Legit Email with quota words" do
  134. setup do
  135. @email = read_email('legit_with_quota.eml')
  136. end
  137. should "be a tmail object" do
  138. assert @email.is_a?(TMail::Mail), "Whoops Im a #{@email.class}"
  139. end
  140. should "return NoBounce" do
  141. assert @email.undeliverable_info.is_a?(TmailBouncer::NoBouncer) , "Whoops Im a #{@email.class}"
  142. end
  143. should "return status of Success" do
  144. assert_equal "Success", @email.undeliverable_info.status
  145. end
  146. end
  147. context "Legit Multipart Email" do
  148. setup do
  149. @email = read_email('legit_multipart.eml')
  150. end
  151. should "be a tmail object" do
  152. assert @email.is_a?(TMail::Mail), "Whoops Im a #{@email.class}"
  153. end
  154. should "return NoBounce" do
  155. assert @email.undeliverable_info.is_a?(TmailBouncer::NoBouncer) , "Whoops Im a #{@email.class}"
  156. end
  157. should "return status of Success" do
  158. assert_equal "Success", @email.undeliverable_info.status
  159. end
  160. end
  161. context "Verizon Bounce" do
  162. setup do
  163. @email = read_email('verizon.eml')
  164. end
  165. should "be a tmail object" do
  166. assert @email.is_a?(TMail::Mail), "Whoops Im a #{@email.class}"
  167. end
  168. should "return StandardBouncer" do
  169. assert @email.undeliverable_info.is_a?(TmailBouncer::StandardBouncer) , "Whoops Im a #{@email.class}"
  170. end
  171. should "detect bounced" do
  172. assert_equal @email.undeliverable_info.status, "Failure"
  173. end
  174. should "detect original sender" do
  175. assert_equal @email.undeliverable_info.original_sender, "joe@example.com"
  176. end
  177. should "detect original recipient" do
  178. assert_equal @email.undeliverable_info.original_recipient, "fred@somewhere.com"
  179. end
  180. should "detect original subject" do
  181. assert_equal @email.undeliverable_info.original_subject, "I like turtles"
  182. end
  183. should "detect original_message_id" do
  184. assert_equal @email.undeliverable_info.original_message_id, "<1234.1212@example.com>"
  185. end
  186. should "return status of failure" do
  187. assert_equal "Failure", @email.undeliverable_info.status
  188. end
  189. end
  190. protected
  191. def read_email(name)
  192. TMail::Mail.parse(File.read('test/fixtures/' + name))
  193. end
  194. end