diff options
Diffstat (limited to 'rt/t/mail/disposition-outgoing.t')
-rw-r--r-- | rt/t/mail/disposition-outgoing.t | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/rt/t/mail/disposition-outgoing.t b/rt/t/mail/disposition-outgoing.t new file mode 100644 index 0000000..06295a0 --- /dev/null +++ b/rt/t/mail/disposition-outgoing.t @@ -0,0 +1,69 @@ +use strict; +use warnings; + +use RT::Test tests => undef; + +my $queue = RT::Test->load_or_create_queue( Name => 'General' ); +ok $queue->id, 'loaded queue'; + +my ($ok, $msg) = $queue->AddWatcher( + Type => 'AdminCc', + Email => 'test@example.com', +); +ok $ok, $msg; + +my $mail = <<'.'; +From: root@localhost +Subject: I like inline dispositions and I cannot lie +Content-type: multipart/related; boundary="foo" + +--foo +Content-type: text/plain; charset="UTF-8" + +ho hum just some text + +--foo +Content-type: text/x-patch; name="filename.patch" +Content-disposition: inline; filename="filename.patch" + +a fake patch + +--foo +. + +# inline +{ + my $rt = send_and_receive($mail); + like $rt, qr/Content-Disposition:\s*inline.+?filename\.patch/is, 'found inline disposition'; +} + +# attachment +{ + $mail =~ s/(?<=Content-disposition: )inline/attachment/i; + + my $rt = send_and_receive($mail); + like $rt, qr/Content-Disposition:\s*attachment.+?filename\.patch/is, 'found attachment disposition'; +} + +# no disposition +{ + $mail =~ s/^Content-disposition: .+?\n(?=\n)//ism; + + my $rt = send_and_receive($mail); + like $rt, qr/Content-Disposition:\s*inline.+?filename\.patch/is, 'found default (inline) disposition'; +} + +sub send_and_receive { + my $mail = shift; + my ($stat, $id) = RT::Test->send_via_mailgate($mail); + is( $stat >> 8, 0, "The mail gateway exited normally" ); + ok( $id, "created ticket" ); + + my @mails = RT::Test->fetch_caught_mails; + is @mails, 2, "got 2 outgoing emails"; + + # first is autoreply + pop @mails; +} + +done_testing; |