0011566: can't set bool config value via --setconfig cli command
authorPhilipp Schüle <p.schuele@metaways.de>
Thu, 21 Jan 2016 09:07:38 +0000 (10:07 +0100)
committerPhilipp Schüle <p.schuele@metaways.de>
Tue, 26 Jan 2016 19:04:50 +0000 (20:04 +0100)
* make sure that we get a bool for values like "true" or "1"
 when fetching config
 * use abstract TestCase in setup tests, too

https://forge.tine20.org/view.php?id=11566

Change-Id: I4a8e484286d0a72e48bf838bf350bb0c9172fe57
Reviewed-on: http://gerrit.tine20.com/customers/2604
Tested-by: Jenkins CI (http://ci.tine20.com/)
Reviewed-by: Philipp Schüle <p.schuele@metaways.de>
tests/setup/Setup/CliTest.php
tests/setup/TestHelper.php
tests/tine20/TestCase.php
tine20/Tinebase/Config/Abstract.php

index 4c3704b..50c15e1 100644 (file)
@@ -4,7 +4,7 @@
  * 
  * @package     Setup
  * @license     http://www.gnu.org/licenses/agpl.html
- * @copyright   Copyright (c) 2008-2014 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @copyright   Copyright (c) 2008-2016 Metaways Infosystems GmbH (http://www.metaways.de)
  * @author      Stefanie Stamer <s.stamer@metaways.de>
  * 
  */
@@ -17,8 +17,10 @@ require_once dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'TestHelper.php'
 /**
  * Test class for Tinebase_Group
  */
-class Setup_CliTest extends PHPUnit_Framework_TestCase
+class Setup_CliTest extends TestCase
 {
+    protected $_oldConfigs = array();
+
     /**
      * Sets up the fixture.
      * This method is called before a test is executed.
@@ -28,20 +30,48 @@ class Setup_CliTest extends PHPUnit_Framework_TestCase
     protected function setUp()
     {
         $this->_cli = new Setup_Frontend_Cli();
+        parent::setUp();
+    }
+
+    protected function tearDown()
+    {
+        parent::tearDown();
+
+        // reset old configs
+        foreach ($this->_oldConfigs as $name => $value) {
+            Tinebase_Config::getInstance()->set($name, $value);
+        }
     }
-    
+
     /**
      * Test SetConfig
      */
     public function testSetConfig()
     {
+        $this->_oldConfigs[Tinebase_Config::ALLOWEDJSONORIGINS] = Tinebase_Config::getInstance()->get(Tinebase_Config::ALLOWEDJSONORIGINS);
         $output = $this->_cliHelper('setconfig', array('--setconfig','--','configkey=allowedJsonOrigins', 'configvalue='.'["foo","bar"]'));
         $this->assertContains('OK - Updated configuration option allowedJsonOrigins for application Tinebase', $output);
         $result = Tinebase_Config_Abstract::factory('Tinebase')->get('allowedJsonOrigins');
         $this->assertEquals("foo", $result[0]);
         $this->assertEquals("bar", $result[1]);
     }
-    
+
+    /**
+     * Test SetBoolConfig
+     */
+    public function testSetBoolConfig()
+    {
+        $this->_oldConfigs[Tinebase_Config::MAINTENANCE_MODE] = Tinebase_Config::getInstance()->get(Tinebase_Config::MAINTENANCE_MODE);
+
+        $values = array(1, "true");
+        foreach ($values as $configValue) {
+            $output = $this->_cliHelper('setconfig', array('--setconfig', '--', 'configkey=maintenanceMode', 'configvalue=' . $configValue));
+            $this->assertContains('OK - Updated configuration option maintenanceMode for application Tinebase', $output);
+            $result = Tinebase_Config_Abstract::factory('Tinebase')->get(Tinebase_Config::MAINTENANCE_MODE);
+            $this->assertTrue($result);
+        }
+    }
+
     /**
      * Test GetConfig
      */
@@ -53,19 +83,4 @@ class Setup_CliTest extends PHPUnit_Framework_TestCase
         $this->assertEquals("foo", $result[0]);
         $this->assertEquals("bar", $result[1]);
     }
-    
-    /**
-     * call handle cli function with params
-     * 
-     * @param array $_params
-     */
-    protected function _cliHelper($command, $_params)
-    {
-        $opts = new Zend_Console_Getopt(array($command => $command));
-        $opts->setArguments($_params);
-        ob_start();
-        $this->_cli->handle($opts, false);
-        $out = ob_get_clean();
-        return $out;
-    }
-}
\ No newline at end of file
+}
index 0dbc23e..f2162a1 100644 (file)
  */
 define('PATH_TO_REAL_DIR', dirname(__FILE__). '/../../tine20');
 define('PATH_TO_TINE_LIBRARY', dirname(__FILE__). '/../../tine20/library');
-define('PATH_TO_TEST_DIR', dirname(__FILE__));
+define('PATH_TO_SETUP_TEST_DIR', dirname(__FILE__));
+define('PATH_TO_TEST_DIR', dirname(__FILE__) . '/../tine20');
 
 $path = array(
     PATH_TO_REAL_DIR,
     get_include_path(),
+    PATH_TO_SETUP_TEST_DIR,
     PATH_TO_TEST_DIR,
     PATH_TO_TINE_LIBRARY
 );
index 71bad22..7ffba34 100644 (file)
@@ -485,4 +485,19 @@ abstract class TestCase extends PHPUnit_Framework_TestCase
     {
         Tinebase_Core::set(Tinebase_Core::USER, $user);
     }
+
+    /**
+     * call handle cli function with params
+     *
+     * @param array $_params
+     */
+    protected function _cliHelper($command, $_params)
+    {
+        $opts = new Zend_Console_Getopt(array($command => $command));
+        $opts->setArguments($_params);
+        ob_start();
+        $this->_cli->handle($opts, false);
+        $out = ob_get_clean();
+        return $out;
+    }
 }
index 283512b..3c8051a 100644 (file)
@@ -647,7 +647,7 @@ abstract class Tinebase_Config_Abstract
 
         switch ($definition['type']) {
             case self::TYPE_INT:        return (int) $_rawData;
-            case self::TYPE_BOOL:       return (bool) (int) $_rawData;
+            case self::TYPE_BOOL:       return $_rawData === "true" || (bool) (int) $_rawData;
             case self::TYPE_STRING:     return (string) $_rawData;
             case self::TYPE_FLOAT:      return (float) $_rawData;
             case self::TYPE_ARRAY:      return (array) $_rawData;