]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/include/SugarTinyMCETest.php
Release 6.5.16
[Github/sugarcrm.git] / tests / include / SugarTinyMCETest.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 /* Original Bug: 27655
39  * 
40  * This test was expanded to hit both major paths in this file.
41  * 
42  */
43
44 require_once 'include/SugarTinyMCE.php';
45
46 class SugarTinyMCETest extends Sugar_PHPUnit_Framework_TestCase{
47         
48         static $customConfigFile = 'custom/include/tinyButtonConfig.php';
49         static $customDefaultConfigFile = 'custom/include/tinyMCEDefaultConfig.php';
50     static $directory = 'custom/include';
51     static $MCE;
52         
53         /*
54          * Setup: Backup old custom files and create new ones for the test
55          */
56         public static function setUpBeforeClass(){
57
58         if (!file_exists(self::$directory)) {
59             sugar_mkdir(self::$directory, 0777, true);
60         }
61
62                 if(file_exists(self::$customConfigFile)){
63                         rename(self::$customConfigFile, self::$customConfigFile . ".bak");
64                 }
65                 if(file_exists(self::$customDefaultConfigFile)){
66                         rename(self::$customDefaultConfigFile, self::$customDefaultConfigFile . ".bak");
67                 }
68                                 
69                 file_put_contents(self::$customConfigFile,
70                         "<?php
71                         \$buttonConfigs = array('default' => array('buttonConfig' =>'testcase',
72                                                                         'buttonConfig2' => 'cut,copy,paste,pastetext,pasteword,selectall,separator,search,replace,separator,bullist,numlist,separator,outdent,
73                                                                 indent,separator,ltr,rtl,separator,undo,redo,separator, link,unlink,anchor,image,separator,sub,sup,separator,charmap,
74                                                                 visualaid', 
75                                                 'buttonConfig3' => 'tablecontrols,separator,advhr,hr,removeformat,separator,insertdate,inserttime,separator,preview'),
76                                                                         'badkey1' => 'bad data1');
77                         ?>");
78                 
79                 file_put_contents(self::$customDefaultConfigFile, 
80                         "<?php
81                         \$defaultConfig = array('extended_valid_elements' => 'upload[testlength|ratio|initialtest|mintestsize|threads|maxchunksize|maxchunkcount],download[testlength|initialtest|mintestsize|threads|maximagesize]',
82                                                                                                                                  'badkey2' => 'bad data2');
83                         ?>"
84                 );
85                 $tinySugar = new SugarTinyMCE();
86                 self::$MCE = $tinySugar->getInstance();
87                                 
88         }
89         
90         
91         
92         /*
93          * Teardown: remove new custom files and restore the previous ones
94          */
95         public static function tearDownAfterClass(){
96                 unlink(self::$customConfigFile);
97                 unlink(self::$customDefaultConfigFile);
98                 
99                 if(file_exists(self::$customConfigFile . ".bak")){
100                         rename(self::$customConfigFile . ".bak", self::$customConfigFile);
101                 }
102                 if(file_exists(self::$customDefaultConfigFile . ".bak")){
103                         rename(self::$customDefaultConfigFile . ".bak", self::$customDefaultConfigFile);
104                 }
105         }
106         
107         public function testCheckValidCustomButtonOverrdide(){
108                 $this->assertContains("testcase", self::$MCE, "TinyMCE custom button not found.");
109         }
110         
111         public function testCheckInvalidCustomButtonOverrdide(){
112                 $pos = strpos("badkey1", self::$MCE);
113                 if($pos === false){
114                         $pos = 0;
115                 }
116                 $this->assertEquals(0, $pos, "Invalid custom button found. Stripping code failed.");
117         }
118
119         public function testCheckValidDefaultOverrdide(){
120                 $this->assertContains("download", self::$MCE, "TinyMCE custom config not found.");
121         }
122         
123         public function testCheckInvalidDefaultOverrdide(){
124                 $pos = strpos("badkey2", self::$MCE);
125                 if($pos === false){
126                         $pos = 0;
127                 }
128                 $this->assertEquals(0, $pos, "Invalid custom config found. Stripping code failed.");
129         }
130 }