2 /*********************************************************************************
3 * SugarCRM Community Edition is a customer relationship management program developed by
4 * SugarCRM, Inc. Copyright (C) 2004-2013 SugarCRM Inc.
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.
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
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
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.
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.
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 ********************************************************************************/
38 /* Original Bug: 27655
40 * This test was expanded to hit both major paths in this file.
44 require_once 'include/SugarTinyMCE.php';
46 class SugarTinyMCETest extends Sugar_PHPUnit_Framework_TestCase{
48 static $customConfigFile = 'custom/include/tinyButtonConfig.php';
49 static $customDefaultConfigFile = 'custom/include/tinyMCEDefaultConfig.php';
50 static $directory = 'custom/include';
54 * Setup: Backup old custom files and create new ones for the test
56 public static function setUpBeforeClass(){
58 if (!file_exists(self::$directory)) {
59 sugar_mkdir(self::$directory, 0777, true);
62 if(file_exists(self::$customConfigFile)){
63 rename(self::$customConfigFile, self::$customConfigFile . ".bak");
65 if(file_exists(self::$customDefaultConfigFile)){
66 rename(self::$customDefaultConfigFile, self::$customDefaultConfigFile . ".bak");
69 file_put_contents(self::$customConfigFile,
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,
75 'buttonConfig3' => 'tablecontrols,separator,advhr,hr,removeformat,separator,insertdate,inserttime,separator,preview'),
76 'badkey1' => 'bad data1');
79 file_put_contents(self::$customDefaultConfigFile,
81 \$defaultConfig = array('extended_valid_elements' => 'upload[testlength|ratio|initialtest|mintestsize|threads|maxchunksize|maxchunkcount],download[testlength|initialtest|mintestsize|threads|maximagesize]',
82 'badkey2' => 'bad data2');
85 $tinySugar = new SugarTinyMCE();
86 self::$MCE = $tinySugar->getInstance();
93 * Teardown: remove new custom files and restore the previous ones
95 public static function tearDownAfterClass(){
96 unlink(self::$customConfigFile);
97 unlink(self::$customDefaultConfigFile);
99 if(file_exists(self::$customConfigFile . ".bak")){
100 rename(self::$customConfigFile . ".bak", self::$customConfigFile);
102 if(file_exists(self::$customDefaultConfigFile . ".bak")){
103 rename(self::$customDefaultConfigFile . ".bak", self::$customDefaultConfigFile);
107 public function testCheckValidCustomButtonOverrdide(){
108 $this->assertContains("testcase", self::$MCE, "TinyMCE custom button not found.");
111 public function testCheckInvalidCustomButtonOverrdide(){
112 $pos = strpos("badkey1", self::$MCE);
116 $this->assertEquals(0, $pos, "Invalid custom button found. Stripping code failed.");
119 public function testCheckValidDefaultOverrdide(){
120 $this->assertContains("download", self::$MCE, "TinyMCE custom config not found.");
123 public function testCheckInvalidDefaultOverrdide(){
124 $pos = strpos("badkey2", self::$MCE);
128 $this->assertEquals(0, $pos, "Invalid custom config found. Stripping code failed.");