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