1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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;
|