X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=tests%2FConfigTest.php;h=7200aae644e712dfdd4a394814e051f9249f4bd6;hb=510377d2cb4b12d1a421e8a88bd7edb86f223451;hp=a239d8b7d3a2004e57ba03fde078bc8f7b5bfb99;hpb=96db105e4c0833324f7168edb5673278de8ccd54;p=github%2Fshaarli%2FShaarli.git diff --git a/tests/ConfigTest.php b/tests/ConfigTest.php old mode 100755 new mode 100644 index a239d8b7..7200aae6 --- a/tests/ConfigTest.php +++ b/tests/ConfigTest.php @@ -1,177 +1,244 @@ - 'login', - 'hash' => 'hash', - 'salt' => 'salt', - 'timezone' => 'Europe/Paris', - 'title' => 'title', - 'titleLink' => 'titleLink', - 'redirector' => '', - 'disablesessionprotection' => false, - 'privateLinkByDefault' => false, - 'config' => array( - 'CONFIG_FILE' => 'tests/config.php', - 'DATADIR' => 'tests', - 'config1' => 'config1data', - 'config2' => 'config2data', - ) - ); - } - - /** - * Executed after each test. - * - * @return void - */ - public function tearDown() - { - if (is_file(self::$_configFields['config']['CONFIG_FILE'])) { - unlink(self::$_configFields['config']['CONFIG_FILE']); - } - } - - /** - * Test writeConfig function, valid use case, while being logged in. - */ - public function testWriteConfig() - { - writeConfig(self::$_configFields, true); - - include self::$_configFields['config']['CONFIG_FILE']; - $this->assertEquals(self::$_configFields['login'], $GLOBALS['login']); - $this->assertEquals(self::$_configFields['hash'], $GLOBALS['hash']); - $this->assertEquals(self::$_configFields['salt'], $GLOBALS['salt']); - $this->assertEquals(self::$_configFields['timezone'], $GLOBALS['timezone']); - $this->assertEquals(self::$_configFields['title'], $GLOBALS['title']); - $this->assertEquals(self::$_configFields['titleLink'], $GLOBALS['titleLink']); - $this->assertEquals(self::$_configFields['redirector'], $GLOBALS['redirector']); - $this->assertEquals(self::$_configFields['disablesessionprotection'], $GLOBALS['disablesessionprotection']); - $this->assertEquals(self::$_configFields['privateLinkByDefault'], $GLOBALS['privateLinkByDefault']); - $this->assertEquals(self::$_configFields['config']['config1'], $GLOBALS['config']['config1']); - $this->assertEquals(self::$_configFields['config']['config2'], $GLOBALS['config']['config2']); - } - - /** - * Test writeConfig option while logged in: - * 1. init fields. - * 2. update fields, add new sub config, add new root config. - * 3. rewrite config. - * 4. check result. - */ - public function testWriteConfigFieldUpdate() - { - writeConfig(self::$_configFields, true); - self::$_configFields['title'] = 'ok'; - self::$_configFields['config']['config1'] = 'ok'; - self::$_configFields['config']['config_new'] = 'ok'; - self::$_configFields['new'] = 'should not be saved'; - writeConfig(self::$_configFields, true); - - include self::$_configFields['config']['CONFIG_FILE']; - $this->assertEquals('ok', $GLOBALS['title']); - $this->assertEquals('ok', $GLOBALS['config']['config1']); - $this->assertEquals('ok', $GLOBALS['config']['config_new']); - $this->assertFalse(isset($GLOBALS['new'])); - } - - /** - * Test writeConfig function with an empty array. - * - * @expectedException MissingFieldConfigException - */ - public function testWriteConfigEmpty() - { - writeConfig(array(), true); - } - - /** - * Test writeConfig function with a missing mandatory field. - * - * @expectedException MissingFieldConfigException - */ - public function testWriteConfigMissingField() - { - unset(self::$_configFields['login']); - writeConfig(self::$_configFields, true); - } - - /** - * Test writeConfig function while being logged out, and there is no config file existing. - */ - public function testWriteConfigLoggedOutNoFile() - { - writeConfig(self::$_configFields, false); - } - - /** - * Test writeConfig function while being logged out, and a config file already exists. - * - * @expectedException UnauthorizedConfigException - */ - public function testWriteConfigLoggedOutWithFile() - { - file_put_contents(self::$_configFields['config']['CONFIG_FILE'], ''); - writeConfig(self::$_configFields, false); - } - - /** - * Test mergeDeprecatedConfig while being logged in: - * 1. init a config file. - * 2. init a options.php file with update value. - * 3. merge. - * 4. check updated value in config file. - */ - public function testMergeDeprecatedConfig() - { - // init - writeConfig(self::$_configFields, true); - $configCopy = self::$_configFields; - $invert = !$configCopy['privateLinkByDefault']; - $configCopy['privateLinkByDefault'] = $invert; - - // Use writeConfig to create a options.php - $configCopy['config']['CONFIG_FILE'] = 'tests/options.php'; - writeConfig($configCopy, true); - - $this->assertTrue(is_file($configCopy['config']['CONFIG_FILE'])); - - // merge configs - mergeDeprecatedConfig(self::$_configFields, true); - - // make sure updated field is changed - include self::$_configFields['config']['CONFIG_FILE']; - $this->assertEquals($invert, $GLOBALS['privateLinkByDefault']); - $this->assertFalse(is_file($configCopy['config']['CONFIG_FILE'])); - } - - /** - * Test mergeDeprecatedConfig while being logged in without options file. - */ - public function testMergeDeprecatedConfigNoFile() - { - writeConfig(self::$_configFields, true); - mergeDeprecatedConfig(self::$_configFields, true); - - include self::$_configFields['config']['CONFIG_FILE']; - $this->assertEquals(self::$_configFields['login'], $GLOBALS['login']); - } -} + 'login', + 'hash' => 'hash', + 'salt' => 'salt', + 'timezone' => 'Europe/Paris', + 'title' => 'title', + 'titleLink' => 'titleLink', + 'redirector' => '', + 'disablesessionprotection' => false, + 'privateLinkByDefault' => false, + 'config' => array( + 'CONFIG_FILE' => 'tests/config.php', + 'DATADIR' => 'tests', + 'config1' => 'config1data', + 'config2' => 'config2data', + ) + ); + } + + /** + * Executed after each test. + * + * @return void + */ + public function tearDown() + { + if (is_file(self::$configFields['config']['CONFIG_FILE'])) { + unlink(self::$configFields['config']['CONFIG_FILE']); + } + } + + /** + * Test writeConfig function, valid use case, while being logged in. + */ + public function testWriteConfig() + { + writeConfig(self::$configFields, true); + + include self::$configFields['config']['CONFIG_FILE']; + $this->assertEquals(self::$configFields['login'], $GLOBALS['login']); + $this->assertEquals(self::$configFields['hash'], $GLOBALS['hash']); + $this->assertEquals(self::$configFields['salt'], $GLOBALS['salt']); + $this->assertEquals(self::$configFields['timezone'], $GLOBALS['timezone']); + $this->assertEquals(self::$configFields['title'], $GLOBALS['title']); + $this->assertEquals(self::$configFields['titleLink'], $GLOBALS['titleLink']); + $this->assertEquals(self::$configFields['redirector'], $GLOBALS['redirector']); + $this->assertEquals(self::$configFields['disablesessionprotection'], $GLOBALS['disablesessionprotection']); + $this->assertEquals(self::$configFields['privateLinkByDefault'], $GLOBALS['privateLinkByDefault']); + $this->assertEquals(self::$configFields['config']['config1'], $GLOBALS['config']['config1']); + $this->assertEquals(self::$configFields['config']['config2'], $GLOBALS['config']['config2']); + } + + /** + * Test writeConfig option while logged in: + * 1. init fields. + * 2. update fields, add new sub config, add new root config. + * 3. rewrite config. + * 4. check result. + */ + public function testWriteConfigFieldUpdate() + { + writeConfig(self::$configFields, true); + self::$configFields['title'] = 'ok'; + self::$configFields['config']['config1'] = 'ok'; + self::$configFields['config']['config_new'] = 'ok'; + self::$configFields['new'] = 'should not be saved'; + writeConfig(self::$configFields, true); + + include self::$configFields['config']['CONFIG_FILE']; + $this->assertEquals('ok', $GLOBALS['title']); + $this->assertEquals('ok', $GLOBALS['config']['config1']); + $this->assertEquals('ok', $GLOBALS['config']['config_new']); + $this->assertFalse(isset($GLOBALS['new'])); + } + + /** + * Test writeConfig function with an empty array. + * + * @expectedException MissingFieldConfigException + */ + public function testWriteConfigEmpty() + { + writeConfig(array(), true); + } + + /** + * Test writeConfig function with a missing mandatory field. + * + * @expectedException MissingFieldConfigException + */ + public function testWriteConfigMissingField() + { + unset(self::$configFields['login']); + writeConfig(self::$configFields, true); + } + + /** + * Test writeConfig function while being logged out, and there is no config file existing. + */ + public function testWriteConfigLoggedOutNoFile() + { + writeConfig(self::$configFields, false); + } + + /** + * Test writeConfig function while being logged out, and a config file already exists. + * + * @expectedException UnauthorizedConfigException + */ + public function testWriteConfigLoggedOutWithFile() + { + file_put_contents(self::$configFields['config']['CONFIG_FILE'], ''); + writeConfig(self::$configFields, false); + } + + /** + * Test save_plugin_config with valid data. + * + * @throws PluginConfigOrderException + */ + public function testSavePluginConfigValid() + { + $data = array( + 'order_plugin1' => 2, // no plugin related + 'plugin2' => 0, // new - at the end + 'plugin3' => 0, // 2nd + 'order_plugin3' => 8, + 'plugin4' => 0, // 1st + 'order_plugin4' => 5, + ); + + $expected = array( + 'plugin3', + 'plugin4', + 'plugin2', + ); + + $out = save_plugin_config($data); + $this->assertEquals($expected, $out); + } + + /** + * Test save_plugin_config with invalid data. + * + * @expectedException PluginConfigOrderException + */ + public function testSavePluginConfigInvalid() + { + $data = array( + 'plugin2' => 0, + 'plugin3' => 0, + 'order_plugin3' => 0, + 'plugin4' => 0, + 'order_plugin4' => 0, + ); + + save_plugin_config($data); + } + + /** + * Test save_plugin_config without data. + */ + public function testSavePluginConfigEmpty() + { + $this->assertEquals(array(), save_plugin_config(array())); + } + + /** + * Test validate_plugin_order with valid data. + */ + public function testValidatePluginOrderValid() + { + $data = array( + 'order_plugin1' => 2, + 'plugin2' => 0, + 'plugin3' => 0, + 'order_plugin3' => 1, + 'plugin4' => 0, + 'order_plugin4' => 5, + ); + + $this->assertTrue(validate_plugin_order($data)); + } + + /** + * Test validate_plugin_order with invalid data. + */ + public function testValidatePluginOrderInvalid() + { + $data = array( + 'order_plugin1' => 2, + 'order_plugin3' => 1, + 'order_plugin4' => 1, + ); + + $this->assertFalse(validate_plugin_order($data)); + } + + /** + * Test load_plugin_parameter_values. + */ + public function testLoadPluginParameterValues() + { + $plugins = array( + 'plugin_name' => array( + 'parameters' => array( + 'param1' => true, + 'param2' => false, + 'param3' => '', + ) + ) + ); + + $parameters = array( + 'param1' => 'value1', + 'param2' => 'value2', + ); + + $result = load_plugin_parameter_values($plugins, $parameters); + $this->assertEquals('value1', $result['plugin_name']['parameters']['param1']); + $this->assertEquals('value2', $result['plugin_name']['parameters']['param2']); + $this->assertEquals('', $result['plugin_name']['parameters']['param3']); + } +}