import rt 3.8.7
[freeside.git] / rt / t / mail / mime_decoding.t
1 #!/usr/bin/perl
2 use strict;
3 use warnings;
4 use RT::Test nodata => 1, tests => 6;
5
6 use_ok('RT::I18N');
7
8 diag q{'=' char in a leading part before an encoded part} if $ENV{TEST_VERBOSE};
9 {
10     my $str = 'key="plain"; key="=?UTF-8?B?0LzQvtC5X9GE0LDQudC7LmJpbg==?="';
11     is(
12         RT::I18N::DecodeMIMEWordsToUTF8($str),
13         'key="plain"; key="мой_файл.bin"',
14         "right decoding"
15     );
16 }
17
18 diag q{not compliant with standards, but MUAs send such field when attachment has non-ascii in name}
19     if $ENV{TEST_VERBOSE};
20 {
21     my $str = 'attachment; filename="=?UTF-8?B?0LzQvtC5X9GE0LDQudC7LmJpbg==?="';
22     is(
23         RT::I18N::DecodeMIMEWordsToUTF8($str),
24         'attachment; filename="мой_файл.bin"',
25         "right decoding"
26     );
27 }
28
29 diag q{'=' char in a trailing part after an encoded part} if $ENV{TEST_VERBOSE};
30 {
31     my $str = 'attachment; filename="=?UTF-8?B?0LzQvtC5X9GE0LDQudC7LmJpbg==?="; some_prop="value"';
32     is(
33         RT::I18N::DecodeMIMEWordsToUTF8($str),
34         'attachment; filename="мой_файл.bin"; some_prop="value"',
35         "right decoding"
36     );
37 }
38
39 diag q{regression test for #5248 from rt3.fsck.com} if $ENV{TEST_VERBOSE};
40 {
41     my $str = qq{Subject: =?ISO-8859-1?Q?Re=3A_=5BXXXXXX=23269=5D_=5BComment=5D_Frag?=}
42         . qq{\n =?ISO-8859-1?Q?e_zu_XXXXXX--xxxxxx_/_Xxxxx=FCxxxxxxxxxx?=};
43     is(
44         RT::I18N::DecodeMIMEWordsToUTF8($str),
45         qq{Subject: Re: [XXXXXX#269] [Comment] Frage zu XXXXXX--xxxxxx / Xxxxxüxxxxxxxxxx},
46         "right decoding"
47     );
48 }
49
50 diag q{newline and encoded file name} if $ENV{TEST_VERBOSE};
51 {
52     my $str = qq{application/vnd.ms-powerpoint;\n\tname="=?ISO-8859-1?Q?Main_presentation.ppt?="};
53     is(
54         RT::I18N::DecodeMIMEWordsToUTF8($str),
55         qq{application/vnd.ms-powerpoint;\tname="Main presentation.ppt"},
56         "right decoding"
57     );
58 }
59