replyr 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,91 @@
1
+ require_relative '../test_helper'
2
+
3
+ setup_database
4
+
5
+ describe Replyr::BounceAddress do
6
+ describe '#new' do
7
+ it 'returns new address' do
8
+ @user = User.create
9
+
10
+ address = Replyr::BounceAddress.new(@user)
11
+ assert_kind_of Replyr::BounceAddress, address
12
+ assert_equal @user, address.model
13
+ end
14
+
15
+ end
16
+
17
+ describe '#new_from_address' do
18
+ it 'returns new instance if address is valid' do
19
+ user = User.create
20
+ correct_address = Replyr::BounceAddress.new(user).address
21
+ address = Replyr::BounceAddress.new_from_address(correct_address)
22
+ assert_kind_of Replyr::BounceAddress, address
23
+ assert_equal user.id, address.model.id
24
+ assert_equal user.class.name, address.model.class.name
25
+ end
26
+
27
+ it 'return nil if email address is malformed (no reply email)' do
28
+ assert_equal nil, Replyr::BounceAddress.new_from_address("malformed@example.com")
29
+ end
30
+
31
+ it 'returns nil if addreess is invalid' do
32
+ assert_equal nil, Replyr::BounceAddress.new_from_address("reply-comment-1-1-wrongtoken@example.com")
33
+ end
34
+ end
35
+
36
+ describe '#token_valid?' do
37
+ before do
38
+ @address = Replyr::BounceAddress.new(User.create)
39
+ end
40
+
41
+ it 'return true if the passed token is valid' do
42
+ assert_equal true, @address.token_valid?(@address.token)
43
+ end
44
+
45
+ it 'return false if the passed token is valid' do
46
+ assert_equal false, @address.token_valid?("wrong_token")
47
+ end
48
+ end
49
+
50
+ describe '#ensure_valid_token!' do
51
+ before do
52
+ @address = Replyr::BounceAddress.new(User.create)
53
+ end
54
+
55
+ it 'throws exception if token is invalid' do
56
+ assert_raises RuntimeError do
57
+ @address.ensure_valid_token!("wrong_token")
58
+ end
59
+ end
60
+
61
+ it 'throws exception if token is invalid' do
62
+ assert_equal nil, @address.ensure_valid_token!(@address.token)
63
+ end
64
+ end
65
+
66
+ describe '#token' do
67
+ before do
68
+ @user1 = User.create
69
+ @user2 = User.create
70
+ end
71
+
72
+ it 'returns an auth token' do
73
+ address = Replyr::BounceAddress.new(@user1)
74
+ assert_kind_of String, address.token
75
+ end
76
+
77
+ it 'return the same auth token for same arguments' do
78
+ address1 = Replyr::BounceAddress.new(@user2)
79
+ address2 = Replyr::BounceAddress.new(@user2)
80
+ assert_equal address1.token, address2.token
81
+ end
82
+
83
+ it 'return a different auth token for different user' do
84
+ address1 = Replyr::BounceAddress.new(@user1)
85
+ address2 = Replyr::BounceAddress.new(@user2)
86
+ refute_equal address1.token, address2.token
87
+ end
88
+
89
+ end
90
+
91
+ end
@@ -0,0 +1,93 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require_relative '../test_helper'
3
+ require 'mail'
4
+
5
+ describe Replyr::Email do
6
+ describe "#new" do
7
+ it 'parses plain message object correctly' do
8
+ email = Replyr::Email.new(Mail.read('test/replyr/emails/reply_plain.eml'))
9
+ assert_equal "wursttheke@me.com", email.from
10
+ assert_equal "Das ist wunderschön", email.stripped_body
11
+ end
12
+
13
+ it 'parses multipart message object correctly' do
14
+ email = Replyr::Email.new(Mail.read('test/replyr/emails/reply_multipart.eml'))
15
+ assert_equal "wursttheke@me.com", email.from
16
+ assert_equal "Das ist wunderschön", email.stripped_body
17
+ end
18
+
19
+ it 'removes signature from message object' do
20
+ email = Replyr::Email.new(Mail.read('test/replyr/emails/reply_plain_signature.eml'))
21
+ assert_equal "wursttheke@me.com", email.from
22
+ assert_equal "Das ist wunderschön", email.stripped_body
23
+ end
24
+
25
+ end
26
+
27
+ describe '#is_bounce_email?' do
28
+ it 'returns true for a bounce mail (failed)' do
29
+ email = Replyr::Email.new(Mail.read('test/replyr/emails/bounce_530.eml'))
30
+ assert_equal true, email.is_bounce_email?
31
+ end
32
+
33
+ it 'returns false for a bounce mail (temporary failure)' do
34
+ email = Replyr::Email.new(Mail.read('test/replyr/emails/bounce_422.eml'))
35
+ assert_equal false, email.is_bounce_email?
36
+ end
37
+
38
+ it 'returns false for a normal mail' do
39
+ email = Replyr::Email.new(Mail.read('test/replyr/emails/reply_plain.eml'))
40
+ assert_equal false, email.is_bounce_email?
41
+ end
42
+ end
43
+
44
+ describe '#failed_permanently?' do
45
+ it 'returns true for a bounce mail of type 5.x.x' do
46
+ email = Replyr::Email.new(Mail.read('test/replyr/emails/bounce_530.eml'))
47
+ assert_equal true, email.failed_permanently?
48
+ end
49
+
50
+ it 'returns true for a bounce mail of type 4.x.x' do
51
+ email = Replyr::Email.new(Mail.read('test/replyr/emails/bounce_422.eml'))
52
+ assert_equal false, email.failed_permanently?
53
+ end
54
+ end
55
+
56
+ describe '#process' do
57
+ it 'returns false if mail is invalid' do
58
+ mail = Mail.read('test/replyr/emails/reply_plain.eml')
59
+ email = Replyr::Email.new(mail)
60
+ assert_equal false, email.process
61
+ end
62
+
63
+ it "processes reply mail if it's valid and return true" do
64
+ address = Replyr::ReplyAddress.new(Comment.create, User.create).address
65
+ mail = Mail.read('test/replyr/emails/reply_plain.eml')
66
+ mail.to = address # set correct address
67
+ email = Replyr::Email.new(mail)
68
+
69
+ assert true, email.is_reply_email?
70
+
71
+ comment_count = Comment.count
72
+ assert_equal true, email.process
73
+ assert_equal comment_count + 1, Comment.count
74
+ end
75
+
76
+ it "processes bounce mail if it's valid and return true" do
77
+ user = User.create(email: "test@example.com")
78
+ address = Replyr::BounceAddress.new(user).address
79
+ mail = Mail.read('test/replyr/emails/bounce_530.eml')
80
+ mail.to = address # set correct address
81
+ email = Replyr::Email.new(mail)
82
+
83
+ assert_equal true, email.is_bounce_email?
84
+ assert_equal false, user.email_invalid?
85
+ assert_equal true, email.process
86
+ assert_equal true, user.reload.email_invalid?
87
+ end
88
+
89
+
90
+ end
91
+
92
+
93
+ end
@@ -0,0 +1,98 @@
1
+ Return-Path: <mail_dump@ns1.sssssss.net.au>
2
+ Received: from acomputer ([unix socket])
3
+ by imap01.sssssss.net (Cyrus) with LMTPA;
4
+ Wed, 16 Jan 2008 13:51:42 -0800
5
+ X-Sieve: CMU Sieve 2.2
6
+ Received: from smtp.sssssss.org (unknown [198.0.0.92])
7
+ by imap01.sssssss.net (Postfix) with ESMTP id BFE6477FAE
8
+ for <aaaa@sssssss.net>; Wed, 16 Jan 2008 13:51:40 -0800 (PST)
9
+ Received: from ns1.sssssss.net.au (ns1.sssssss.net.au [202.0.0.246])
10
+ by smtp.sssssss.org (Postfix) with ESMTP id 96E5C6C6830
11
+ for <aaaa@sssssss.net>; Wed, 16 Jan 2008 11:08:14 -0800 (PST)
12
+ Received: from ns1.sssssss.net.au (unknown [127.0.0.1])
13
+ by ns1.sssssss.net.au (Postfix) with ESMTP id E1BCEF227
14
+ for <aaaa@sssssss.net>; Thu, 17 Jan 2008 03:40:53 +1100 (EST)
15
+ Received: from ns1.sssssss.net.au (ns1.sssssss.net.au [202.0.0.246])
16
+ by localhost (FormatMessage) with SMTP id ceaa681bbcb6c7f6
17
+ for <jennifer@sss.sssssss.net.au>; Thu, 17 Jan 2008 03:40:53 +1100 (EST)
18
+ Received: from mail11.tppppp.com.au (unknown [203.0.0.161])
19
+ by ns1.sssssss.net.au (Postfix) with ESMTP id 7F2D2F225
20
+ for <jennifer@sss.sssssss.net.au>; Thu, 17 Jan 2008 03:40:52 +1100 (EST)
21
+ Received: from localhost (localhost)
22
+ by mail11.tppppp.com.au (envelope-from MAILER-DAEMON) (8.14.2/8.14.2) id m0GFZ1c3009410;
23
+ Thu, 17 Jan 2008 03:40:52 +1100
24
+ Date: Thu, 17 Jan 2008 03:40:52 +1100
25
+ From: Mail Delivery Subsystem <MAILER-DAEMON@tppppp.com.au>
26
+ Message-Id: <200801161640.m0GFZ1c3009410@mail11.ttttt.com.au>
27
+ To: <jennifer@sss.sssssss.net.au>
28
+ MIME-Version: 1.0
29
+ Content-Type: multipart/report; report-type=delivery-status;
30
+ boundary="m0GFZ1c3009410.1200501652/mail11.ttttt.com.au"
31
+ Subject: Warning: could not send message for past 8 hours
32
+ Auto-Submitted: auto-generated (warning-timeout)
33
+ Resent-Date: Thu, 17 Jan 2008 03:40:53 +1100 (EST)
34
+ Resent-From: <mail_dump@ns1.sssssss.net.au>
35
+ Resent-To: <mikel@sssssss.net>
36
+ Resent-Message-ID: <ceaa681bbcb6c7f6.1200501653@sssssss.net.au>
37
+ X-Spam-Status: No
38
+
39
+
40
+ --m0GFZ1c3009410.1200501652/mail11.ttttt.com.au
41
+ Content-Type: text/plain
42
+
43
+ **********************************************
44
+ ** THIS IS A WARNING MESSAGE ONLY **
45
+ ** YOU DO NOT NEED TO RESEND YOUR MESSAGE **
46
+ **********************************************
47
+
48
+ The original message was received at Wed, 16 Jan 2008 19:38:07 +1100
49
+ from 60-0-0-61.static.tppppp.com.au [60.0.0.61]
50
+
51
+ This message was generated by mail11.tppppp.com.au
52
+
53
+ ----- Transcript of session follows -----
54
+ .... while talking to mail.oooooooo.com.au.:
55
+ >>> DATA
56
+ <<< 452 4.2.2 <fraser@oooooooo.com.au>... Mailbox full
57
+ <fraser@oooooooo.com.au>... Deferred: 452 4.2.2 <fraser@oooooooo.com.au>... Mailbox full
58
+ <<< 503 5.0.0 Need RCPT (recipient)
59
+ Warning: message still undelivered after 8 hours
60
+ Will keep trying until message is 5 days old
61
+
62
+ --
63
+ This message has been scanned for viruses and
64
+ dangerous content by MailScanner, and is
65
+ believed to be clean.
66
+
67
+
68
+ --m0GFZ1c3009410.1200501652/mail11.ttttt.com.au
69
+ Content-Type: message/delivery-status
70
+
71
+ Reporting-MTA: dns; mail11.ttttt.com.au
72
+ Arrival-Date: Wed, 16 Jan 2008 19:38:07 +1100
73
+
74
+ Final-Recipient: RFC822; fraser@oooooooo.com.au
75
+ Action: delayed
76
+ Status: 4.2.2
77
+ Remote-MTA: DNS; mail.oooooooo.com.au
78
+ Diagnostic-Code: SMTP; 452 4.2.2 <fraser@oooooooo.com.au>... Mailbox full
79
+ Last-Attempt-Date: Thu, 17 Jan 2008 03:40:52 +1100
80
+
81
+ --m0GFZ1c3009410.1200501652/mail11.ttttt.com.au
82
+ Content-Type: text/rfc822-headers
83
+
84
+ Return-Path: <jennifer@sss.sssssss.net.au>
85
+ Received: from k1s2yo86 (60-0-0-61.static.tppppp.com.au [60.0.0.61])
86
+ by mail11.tppppp.com.au (envelope-from jennifer@sss.sssssss.net.au) (8.14.2/8.14.2) with ESMTP id m0G8c0fR020461
87
+ for <fraser@oooooooo.com.au>; Wed, 16 Jan 2008 19:38:07 +1100
88
+ Date: Wed, 16 Jan 2008 19:38:07 +1100
89
+ From: Sydney <jennifer@sss.sssssss.net.au>
90
+ Message-ID: <15655788.13.1200472642578.JavaMail.Administrator@mail.ttttt.com.au>
91
+ Subject: Wanted
92
+ MIME-Version: 1.0
93
+ Content-Type: multipart/mixed;
94
+ boundary="----=_Part_12_28168925.1200472642578"
95
+ X-Virus-Scanned: ClamAV 0.91.2/5484/Wed Jan 16 06:31:27 2008 on mail11.tppppp.com.au
96
+ X-Virus-Status: Clean
97
+
98
+ --m0GFZ1c3009410.1200501652/mail11.ttttt.com.au--
@@ -0,0 +1,96 @@
1
+ Return-Path: <MAILER-DAEMON@imap01.sssss.net>
2
+ Received: from acomputer ([unix socket])
3
+ by imap01.sssss.net (Cyrus) with LMTPA;
4
+ Sun, 23 Dec 2007 15:04:04 -0800
5
+ X-Sieve: CMU Sieve 2.2
6
+ Received: from smtp.sssss.org (unknown [198.0.0.92])
7
+ by imap01.sssss.net (Postfix) with ESMTP id E434877FB0
8
+ for <mikel@sssss.net>; Sun, 23 Dec 2007 15:04:03 -0800 (PST)
9
+ Received: from mail12.tttttt.com.au (mail12.tttttt.com.au [203.0.0.162])
10
+ by smtp.sssss.org (Postfix) with ESMTP id 53313B42B7
11
+ for <mikel@sssss.net>; Sun, 23 Dec 2007 15:03:54 -0800 (PST)
12
+ Received: from localhost (localhost)
13
+ by mail12.tttttt.com.au (envelope-from MAILER-DAEMON) (8.14.2/8.14.2) id lBNN3rDp003436;
14
+ Mon, 24 Dec 2007 10:03:53 +1100
15
+ Date: Mon, 24 Dec 2007 10:03:53 +1100
16
+ From: Mail Delivery Subsystem <MAILER-DAEMON@tttttt.com.au>
17
+ Message-Id: <200712232303.lBNN3rDp003436@mail12.rrrr.com.au>
18
+ To: <mikel@sssss.net>
19
+ MIME-Version: 1.0
20
+ Content-Type: multipart/report; report-type=delivery-status;
21
+ boundary="lBNN3rDp003436.1198451033/mail12.rrrr.com.au"
22
+ Subject: Returned mail: see transcript for details
23
+ Auto-Submitted: auto-generated (failure)
24
+ X-Spam-Status: No
25
+
26
+ This is a MIME-encapsulated message
27
+
28
+ --lBNN3rDp003436.1198451033/mail12.rrrr.com.au
29
+
30
+ The original message was received at Mon, 24 Dec 2007 10:03:47 +1100
31
+ from 60-0-0-146.static.tttttt.com.au [60.0.0.146]
32
+
33
+ This message was generated by mail12.tttttt.com.au
34
+
35
+ ----- The following addresses had permanent fatal errors -----
36
+ <edwin@zzzzzzz.com>
37
+ (reason: 553 5.3.0 <edwin@zzzzzzz.com>... Unknown E-Mail Address)
38
+
39
+ ----- Transcript of session follows -----
40
+ ... while talking to mail.zzzzzz.com.:
41
+ >>> DATA
42
+ <<< 553 5.3.0 <edwin@zzzzzzz.com>... Unknown E-Mail Address
43
+ 550 5.1.1 <edwin@zzzzzzz.com>... User unknown
44
+ <<< 503 5.0.0 Need RCPT (recipient)
45
+
46
+ --
47
+ This message has been scanned for viruses and
48
+ dangerous content by MailScanner, and is
49
+ believed to be clean.
50
+
51
+
52
+ --lBNN3rDp003436.1198451033/mail12.rrrr.com.au
53
+ Content-Type: message/delivery-status
54
+
55
+ Reporting-MTA: dns; mail12.rrrr.com.au
56
+ Received-From-MTA: DNS; 60-0-0-146.static.tttttt.com.au
57
+ Arrival-Date: Mon, 24 Dec 2007 10:03:47 +1100
58
+
59
+ Final-Recipient: RFC822; edwin@zzzzzzz.com
60
+ Action: failed
61
+ Status: 5.3.0
62
+ Remote-MTA: DNS; mail.zzzzzz.com
63
+ Diagnostic-Code: SMTP; 553 5.3.0 <edwin@zzzzzzz.com>... Unknown E-Mail Address
64
+ Last-Attempt-Date: Mon, 24 Dec 2007 10:03:53 +1100
65
+
66
+ --lBNN3rDp003436.1198451033/mail12.rrrr.com.au
67
+ Content-Type: text/rfc822-headers
68
+
69
+ Return-Path: <mikel@sssss.net>
70
+ Received: from [192.168.0.3] (60-0-0-146.static.tttttt.com.au [60.0.0.146])
71
+ by mail12.tttttt.com.au (envelope-from mikel@sssss.net) (8.14.2/8.14.2) with ESMTP id lBNN3jDq002941
72
+ for <edwin@zzzzzzz.com>; Mon, 24 Dec 2007 10:03:47 +1100
73
+ Resent-Date: Mon, 24 Dec 2007 10:03:47 +1100
74
+ Date: Mon, 24 Dec 2007 10:03:47 +1100
75
+ Resent-Message-Id: <200712232303.lBNN3jDq002941@mail12.rrrr.com.au>
76
+ Message-Id: <200712232303.lBNN3jDq002941@mail12.rrrr.com.au>
77
+ Mime-Version: 1.0
78
+ Content-Type: multipart/report;
79
+ report-type=delivery-status;
80
+ boundary=80874BE0-2DFF-4BCB-8AA1-A00E17ACA2EA
81
+ Received: from murder ([unix socket]) by imap01.sssss.net (Cyrus v2.2.12-Invoca-RPM-2.2.12-6.fc4) with LMTPA; Sun, 23 Dec 2007 12:59:14 -0800
82
+ Received: from smtp.sssss.org (unknown [198.0.0.92]) by imap01.sssss.net (Postfix) with ESMTP id 0AC9F77EDD for <mikel@sssss.net>; Sun, 23 Dec 2007 12:59:14 -0800 (PST)
83
+ Received: from ns1.sssss.net.au (ns1.sssss.net.au [202.0.0.246]) by smtp.sssss.org (Postfix) with ESMTP id 6FC83B42B4 for <mikel@sssss.net>; Sun, 23 Dec 2007 12:59:09 -0800 (PST)
84
+ Received: from unicom (unknown [85.0.0.121]) by ns1.sssss.net.au (Postfix) with ESMTP id 85ED5F1F7 for <webmaster@dianetics.org.au>; Mon, 24 Dec 2007 07:59:02 +1100 (EST)
85
+ Received: from [85.0.0.121] by mail.zzzzzz.com; , 23 Dec 2007 12:57:34 -0800
86
+ X-Mailer: Apple Mail (2.753)
87
+ From: postoffice
88
+ Subject: Returned mail: User unknown
89
+ Resent-From: mikel@sssss.net
90
+ Auto-Submitted: auto-generated (failure)
91
+ To: "Merrill" <edwin@zzzzzzz.com>
92
+ X-Virus-Scanned: ClamAV 0.91.2/5229/Mon Dec 24 07:36:55 2007 on mail12.tttttt.com.au
93
+ X-Virus-Status: Clean
94
+
95
+ --lBNN3rDp003436.1198451033/mail12.rrrr.com.au--
96
+
@@ -0,0 +1,33 @@
1
+ require_relative '../test_helper'
2
+
3
+ setup_database
4
+
5
+ describe Replyr::HandleBounce do
6
+ describe '#bounce_address_object' do
7
+ it 'returns bounce return_path address object' do
8
+ @user = User.create
9
+ address = @user.bounce_address_object
10
+ assert_kind_of Replyr::BounceAddress, address
11
+ assert_equal @user, address.model
12
+ end
13
+ end
14
+
15
+ describe '#bounce_address' do
16
+ it 'returns bounce return_path address string' do
17
+ @user = User.create
18
+ address = @user.bounce_address
19
+ assert_kind_of String, address
20
+ end
21
+ end
22
+
23
+ describe '#handle_bounce' do
24
+ it 'receives the passed reply and calls block' do
25
+ user = User.create(email: "test@example.com")
26
+ assert_equal false, user.email_invalid?
27
+ user.handle_bounce(user.email)
28
+ new_count = Comment.count
29
+ assert_equal true, user.email_invalid?
30
+ end
31
+ end
32
+
33
+ end
@@ -2,7 +2,7 @@ require_relative '../test_helper'
2
2
 
3
3
  setup_database
4
4
 
5
- describe Replyr::HandleReply do
5
+ describe Replyr::HandleBounce do
6
6
  describe '#reply_address_object_for_user' do
7
7
  it 'returns reply address object' do
8
8
  @user1 = User.create
@@ -16,7 +16,7 @@ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
16
16
 
17
17
  def setup_database
18
18
  ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS users")
19
- ActiveRecord::Base.connection.execute("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)")
19
+ ActiveRecord::Base.connection.execute("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT, email_invalid BOOLEAN)")
20
20
 
21
21
  ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS comments")
22
22
  ActiveRecord::Base.connection.execute("CREATE TABLE comments (id INTEGER PRIMARY KEY, body TEXT, user_id INTEGER)")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: replyr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Philipp Wüllner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-23 00:00:00.000000000 Z
11
+ date: 2014-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mailman
@@ -108,11 +108,14 @@ files:
108
108
  - lib/generators/replyr/templates/mailman_server
109
109
  - lib/generators/replyr/templates/replyr.rb.erb
110
110
  - lib/mailman_monkey_patch.rb
111
+ - lib/replyr/address_builder.rb
112
+ - lib/replyr/bounce_address.rb
111
113
  - lib/replyr/config.rb
114
+ - lib/replyr/email.rb
112
115
  - lib/replyr/engine.rb
116
+ - lib/replyr/handle_bounce.rb
113
117
  - lib/replyr/handle_reply.rb
114
118
  - lib/replyr/reply_address.rb
115
- - lib/replyr/reply_email.rb
116
119
  - lib/replyr/version.rb
117
120
  - lib/replyr.rb
118
121
  - lib/tasks/replyr_tasks.rake
@@ -204,13 +207,17 @@ files:
204
207
  - test/email_reply_parser/emails/email_sent_from_my_not_signature.txt
205
208
  - test/email_reply_parser/emails/email_was_showing_as_nothing_visible.txt
206
209
  - test/email_reply_parser/emails/new_content/email_1_2.txt
210
+ - test/replyr/bounce_address_test.rb
211
+ - test/replyr/email_test.rb
212
+ - test/replyr/emails/bounce_422.eml
213
+ - test/replyr/emails/bounce_530.eml
207
214
  - test/replyr/emails/reply_multipart.eml
208
215
  - test/replyr/emails/reply_plain.eml
209
216
  - test/replyr/emails/reply_plain_signature.eml
210
217
  - test/replyr/emails/reply_with_attachment.eml
218
+ - test/replyr/handle_bounce_test.rb
211
219
  - test/replyr/handle_reply_test.rb
212
220
  - test/replyr/reply_address_test.rb
213
- - test/replyr/reply_email_test.rb
214
221
  - test/replyr_test.rb
215
222
  - test/test_helper.rb
216
223
  - CHANGELOG.md