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