]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/modules/InboundEmail/DecodeHeaderTest.php
Release 6.5.10
[Github/sugarcrm.git] / tests / modules / InboundEmail / DecodeHeaderTest.php
1 <?php
2 /*********************************************************************************
3  * SugarCRM Community Edition is a customer relationship management program developed by
4  * SugarCRM, Inc. Copyright (C) 2004-2013 SugarCRM Inc.
5  * 
6  * This program is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU Affero General Public License version 3 as published by the
8  * Free Software Foundation with the addition of the following permission added
9  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
10  * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
11  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
12  * 
13  * This program is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15  * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
16  * details.
17  * 
18  * You should have received a copy of the GNU Affero General Public License along with
19  * this program; if not, see http://www.gnu.org/licenses or write to the Free
20  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21  * 02110-1301 USA.
22  * 
23  * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
24  * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
25  * 
26  * The interactive user interfaces in modified source and object code versions
27  * of this program must display Appropriate Legal Notices, as required under
28  * Section 5 of the GNU Affero General Public License version 3.
29  * 
30  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
31  * these Appropriate Legal Notices must retain the display of the "Powered by
32  * SugarCRM" logo. If the display of the logo is not reasonably feasible for
33  * technical reasons, the Appropriate Legal Notices must display the words
34  * "Powered by SugarCRM".
35  ********************************************************************************/
36
37  
38
39 require_once('modules/InboundEmail/InboundEmail.php');
40
41 /**
42  * @ticket 49983
43  */
44 class DecodeHeaderTest extends Sugar_PHPUnit_Framework_TestCase
45 {
46         protected $ie = null;
47
48         public function setUp()
49     {
50                 $this->ie = new InboundEmail();
51         }
52
53     public function getDecodingHeader()
54     {
55         return array(
56             array('Content-Type: text/html; charset="utf-8"', 
57                 array(
58                     "Content-Type" => array(
59                         "type" => "text/html",
60                         "charset" => "utf-8",
61                         ),
62                     ),
63                 ),
64             array('Content-Type: text/html; charset=utf-8', 
65                 array(
66                     "Content-Type" => array(
67                         "type" => "text/html",
68                         "charset" => "utf-8",
69                         ),
70                     ),
71                 ),
72             array('Content-Type: text/html; charset=    utf-8', 
73                 array(
74                     "Content-Type" => array(
75                         "type" => "text/html",
76                         "charset" => "utf-8",
77                         ),
78                     ),
79                 ),
80             );
81     }
82
83     /**
84      * @dataProvider getDecodingHeader
85      * @param string $url
86      */
87         function testDecodingHeader($header, $res)
88         {
89             $ie = new InboundEmail();
90             $this->assertEquals($res,$ie->decodeHeader($header));
91         }
92
93
94     public function intlTextProvider()
95     {
96         return array(
97             // commenting out windows-1256, since PHP doesn't have an easy way to detect this encoding.
98 //            array(
99 //                '7cvU3iDI5d7L7O3TIOUg1cfU7N0g3c4g5ezR1NPd5eHU3csg287a',
100 //                'يثشق بهقثىيس ه صاشىف فخ هىرشسفهلشفث غخع',
101 //                // 'windows-1256'
102 //            ),
103 //            array(
104 //                '7cjT7cjU0+3IwcbExNE=',
105 //                'يبسيبشسيبءئؤؤر',
106 //                // 'windows-1256'
107 //            ),
108             array( // params related to 45059 ticket
109                 'GyRCJWYhPCU2TD4bKEI=',
110                 'ユーザ名',
111                 // 'ISO-2022-JP'
112             ),
113             array(
114                 '5LiN6KaB55u06KeG6ZmM55Sf5Lq655qE55y8552b',
115                 '不要直视陌生人的眼睛',
116                 // 'utf-8'
117             )
118         );
119
120     }
121     /**
122      * @group bug45059
123      * @dataProvider intlTextProvider
124      * @param string $inputText - our input from the provider, base64'ed
125      * @param string $expected - what our goal is
126      */
127     public function testConvertToUtf8($inputText, $expected)
128     {
129         // the email server is down, so this test doesn't work
130         if (!function_exists('mb_convert_encoding')) {
131             $this->markTestSkipped('Need multibyte encoding support');
132         }
133
134         $ie = new InboundEmail();
135         $inputText = base64_decode($inputText);
136         $this->assertEquals($expected, $ie->convertToUtf8($inputText), 'We should be able to convert to UTF-8');
137     }
138
139 }