]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/modules/EmailTemplates/Bug46984Test.php
Release 6.5.5
[Github/sugarcrm.git] / tests / modules / EmailTemplates / Bug46984Test.php
1 <?php
2 /*********************************************************************************
3  * SugarCRM Community Edition is a customer relationship management program developed by
4  * SugarCRM, Inc. Copyright (C) 2004-2012 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  * Bug 46984:
40  *  EmailTemplate.parse_tracker_urls
41  * @ticket 46984
42  * @author arymarchik@sugarcrm.com
43  */
44 class Bug46984Test extends Sugar_PHPUnit_Framework_TestCase
45 {
46     private $_user;
47
48     public function setUp()
49     {
50         $beanList = array();
51         $beanFiles = array();
52         require('include/modules.php');
53         $GLOBALS['beanList'] = $beanList;
54         $GLOBALS['beanFiles'] = $beanFiles;
55         $GLOBALS['app_strings'] = return_application_language($GLOBALS['current_language']);
56         $GLOBALS['app_list_strings'] = return_app_list_strings_language($GLOBALS['current_language']);
57
58         $this->_user = SugarTestUserUtilities::createAnonymousUser(false);
59         $this->_user->is_admin = 1;
60         $this->_user->save();
61         $GLOBALS['current_user'] = $this->_user;
62     }
63
64     public function tearDown()
65     {
66         SugarTestUserUtilities::removeAllCreatedAnonymousUsers();
67     }
68
69     /**
70      * Testing EmailTemplate::parse_tracker_urls
71      * @group 46984
72      * @dataProvider templatesProvider
73      */
74     public function testParseTrackerUrl($data, $expects, $result)
75     {
76         $et =new EmailTemplate();
77         $res = $et->parse_tracker_urls($data[0], $data[1], $data[2], $data[3]);
78         if($result)
79         {
80             $this->assertEquals($expects, $res);
81         }
82         else
83         {
84             $this->assertNotEquals($expects, $res);
85         }
86     }
87
88     public function templatesProvider()
89     {
90         global $sugar_config;
91         $result = array();
92         $text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin id leo at eros dictum fringilla. In sit amet est lacus. Vivamus luctus dapibus erat, vitae malesuada elit hendrerit ut. Etiam convallis auctor lectus eu blandit. Fusce condimentum sodales metus, et aliquam eros ornare eget. Quisque ultrices risus arcu. Aliquam sit amet turpis nunc.
93
94  Nam congue, lorem vitae congue dapibus, nulla nulla tristique turpis, ut convallis enim libero in quam. Nulla feugiat, ligula nec sagittis lobortis, massa odio hendrerit nisl, at vehicula arcu sapien at magna. Duis quis justo nisl. Proin tempus nunc et nulla tincidunt vehicula. In vestibulum euismod sollicitudin. Cras dictum lectus pharetra nibh eleifend iaculis. Praesent vitae est enim, a mattis massa. Morbi accumsan ligula eu dui iaculis a laoreet lectus elementum. Maecenas a odio augue. Suspendisse congue, turpis id venenatis ornare, enim justo commodo magna, a ornare mauris lacus at eros. Suspendisse pretium cursus dui ut bibendum. Vivamus euismod, erat ac dignissim tincidunt, odio augue cursus elit, a venenatis ante nunc et urna. Integer dignissim gravida dui vitae facilisis. Sed nec turpis id elit venenatis mattis.
95
96  Nam cursus consectetur neque, vel mattis augue gravida nec. Quisque est massa, fermentum ut fermentum et, sagittis ac lacus. Quisque vulputate sagittis ultricies. Fusce mattis lectus eget urna elementum vitae condimentum libero ultrices. Aenean accumsan, diam quis fermentum placerat, enim quam eleifend justo, ac dictum massa magna a nunc. Sed id quam lectus, id sodales lectus. Maecenas ut lorem quis urna pulvinar blandit et in erat. Phasellus tortor nibh, luctus id suscipit non, laoreet in nisi. Donec aliquet accumsan lorem, vitae cursus enim feugiat at. Ut in felis lectus, at sollicitudin nibh. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Quisque sit amet sagittis urna. Cras aliquet orci at lectus dignissim vel convallis nunc pretium. Proin eget tortor risus, a accumsan velit. Aliquam a dui libero, non dignissim leo. Proin sed tellus tellus.
97
98  Integer luctus ligula id justo dapibus facilisis. Aenean non ipsum at justo rhoncus lacinia. Sed in risus sed erat malesuada malesuada in in tellus. Donec sit amet erat libero, eget ultricies justo. Curabitur viverra urna quis tellus scelerisque et porttitor justo malesuada. Donec ultrices, lorem sed posuere accumsan, mi nulla scelerisque mi, eget lacinia urna metus quis sem. Donec ullamcorper ante scelerisque odio interdum consectetur. Ut a mi ligula, ac interdum tortor. Sed lectus quam, fringilla ut condimentum id, vehicula sit amet tortor. Curabitur lacinia fringilla consequat. Curabitur sit amet erat sed enim sagittis viverra lacinia ut nisi. Sed ac ligula dolor. Suspendisse lacinia, sem ut rhoncus congue, ligula ligula interdum urna, id sollicitudin massa ligula vel erat. Mauris lobortis imperdiet orci, ac fermentum velit dignissim eu.
99
100  Phasellus metus felis, lacinia eget malesuada sed, porta at arcu. Aliquam erat volutpat. Aenean pretium sapien at nisl faucibus pellentesque. Mauris tristique lorem non arcu elementum accumsan tincidunt lacus scelerisque. Nulla convallis elementum libero et eleifend. Quisque lectus urna, imperdiet vitae laoreet rutrum, condimentum a tortor. Quisque in enim sed lacus elementum aliquet. Aliquam ultrices hendrerit odio, quis luctus neque ultrices vel. Sed felis quam, auctor nec convallis at, porta ut purus. Aliquam vitae tempor enim. Nunc rutrum augue quis justo tincidunt eu rutrum nisl lobortis. Sed id lorem ante. Donec enim erat, fringilla sed cursus eget, posuere sit amet nunc. Nulla tempus consectetur viverra. Proin odio odio, malesuada sit amet placerat nec, vulputate nec diam. Cras facilisis molestie auctor.";
101         $text_len = strlen($text);
102         $removeme = 'bad_trackers_url';
103         for($i = 0; $i < 10; $i++)
104         {
105             $res1 = $res2 = $text;
106             $tracker_urls = array();
107             $guid = create_guid();
108             $j_rand = rand(3,7);
109             $limit = floor($text_len/$j_rand);
110             for($j = $j_rand; $j > 1; $j--)
111             {
112                 $guid_tr = create_guid();
113                 $tr_name = "tr_url{$j}";
114                 $tracker_urls["{{$tr_name}}"] = array(
115                     'tracker_name' => $tr_name,
116                     'tracker_key' => $j,
117                     'id' => $guid_tr,
118                     'is_optout' => $j % 2
119                 );
120
121                 $ins_ind = rand( $limit*($j - 2) , $limit * ($j - 1));
122                 $res1 = substr_replace($res1, "{{$tr_name}}", $ins_ind, 0);
123                 if($j % 2 == 1)
124                 {
125                     $res2 = substr_replace($res2, $removeme, $ins_ind, 0);
126                 }
127                 else
128                 {
129                     $res2 = substr_replace($res2, "{$sugar_config['site_url']}index.php?entryPoint=campaign_trackerv2&track={$tracker_urls["{{$tr_name}}"]['id']}&{$guid}", $ins_ind, 0);
130                 }
131             }
132             $result[$i]  = array(
133                 array(
134                     array('body' => $res1),
135                     "{$sugar_config['site_url']}index.php?entryPoint=campaign_trackerv2&track=%s&{$guid}",
136                     $tracker_urls,
137                     $removeme
138                 ),
139                 array('body' => $res2),
140                 true
141             );
142         }
143         return $result;
144     }
145 }