<?php
+use Shaarli\Config\ConfigJson;
+use Shaarli\Config\ConfigManager;
+use Shaarli\Config\ConfigPhp;
-require_once 'application/config/ConfigManager.php';
require_once 'tests/Updater/DummyUpdater.php';
require_once 'inc/rain.tpl.class.php';
unlink('sandbox/'. $theme .'/linklist.html');
rmdir('sandbox/'. $theme);
}
+
+ /**
+ * Test updateMethodDefaultThemeVintage with the default theme enabled.
+ */
+ public function testSetDefaultThemeToVintage()
+ {
+ $sandboxConf = 'sandbox/config';
+ copy(self::$configFile . '.json.php', $sandboxConf . '.json.php');
+ $this->conf = new ConfigManager($sandboxConf);
+
+ $this->conf->set('resource.theme', 'default');
+ $updater = new Updater([], [], $this->conf, true);
+ $this->assertTrue($updater->updateMethodDefaultThemeVintage());
+ $this->assertEquals('vintage', $this->conf->get('resource.theme'));
+
+ // reload from file
+ $this->conf = new ConfigManager($sandboxConf);
+ $this->assertEquals('vintage', $this->conf->get('resource.theme'));
+ }
+
+ /**
+ * Test updateMethodDefaultThemeVintage with custom theme enabled => nothing to do.
+ */
+ public function testSetDefaultThemeNothingToDo()
+ {
+ $sandboxConf = 'sandbox/config';
+ copy(self::$configFile . '.json.php', $sandboxConf . '.json.php');
+ $this->conf = new ConfigManager($sandboxConf);
+
+ $theme = 'myawesometheme';
+ $this->conf->set('resource.theme', $theme);
+ $this->conf->write(true);
+ $updater = new Updater([], [], $this->conf, true);
+ $this->assertTrue($updater->updateMethodDefaultThemeVintage());
+ $this->assertEquals($theme, $this->conf->get('resource.theme'));
+
+ // reload from file
+ $this->conf = new ConfigManager($sandboxConf);
+ $this->assertEquals($theme, $this->conf->get('resource.theme'));
+ }
+
+ /**
+ * Test updateMethodEscapeMarkdown with markdown plugin enabled
+ * => setting markdown_escape set to false.
+ */
+ public function testEscapeMarkdownSettingToFalse()
+ {
+ $sandboxConf = 'sandbox/config';
+ copy(self::$configFile . '.json.php', $sandboxConf . '.json.php');
+ $this->conf = new ConfigManager($sandboxConf);
+
+ $this->conf->set('general.enabled_plugins', ['markdown']);
+ $updater = new Updater([], [], $this->conf, true);
+ $this->assertTrue($updater->updateMethodEscapeMarkdown());
+ $this->assertFalse($this->conf->get('security.markdown_escape'));
+
+ // reload from file
+ $this->conf = new ConfigManager($sandboxConf);
+ $this->assertFalse($this->conf->get('security.markdown_escape'));
+ }
+
+
+ /**
+ * Test updateMethodEscapeMarkdown with markdown plugin disabled
+ * => setting markdown_escape set to true.
+ */
+ public function testEscapeMarkdownSettingToTrue()
+ {
+ $sandboxConf = 'sandbox/config';
+ copy(self::$configFile . '.json.php', $sandboxConf . '.json.php');
+ $this->conf = new ConfigManager($sandboxConf);
+
+ $this->conf->set('general.enabled_plugins', []);
+ $updater = new Updater([], [], $this->conf, true);
+ $this->assertTrue($updater->updateMethodEscapeMarkdown());
+ $this->assertTrue($this->conf->get('security.markdown_escape'));
+
+ // reload from file
+ $this->conf = new ConfigManager($sandboxConf);
+ $this->assertTrue($this->conf->get('security.markdown_escape'));
+ }
+
+ /**
+ * Test updateMethodEscapeMarkdown with nothing to do (setting already enabled)
+ */
+ public function testEscapeMarkdownSettingNothingToDoEnabled()
+ {
+ $sandboxConf = 'sandbox/config';
+ copy(self::$configFile . '.json.php', $sandboxConf . '.json.php');
+ $this->conf = new ConfigManager($sandboxConf);
+ $this->conf->set('security.markdown_escape', true);
+ $updater = new Updater([], [], $this->conf, true);
+ $this->assertTrue($updater->updateMethodEscapeMarkdown());
+ $this->assertTrue($this->conf->get('security.markdown_escape'));
+ }
+
+ /**
+ * Test updateMethodEscapeMarkdown with nothing to do (setting already disabled)
+ */
+ public function testEscapeMarkdownSettingNothingToDoDisabled()
+ {
+ $this->conf->set('security.markdown_escape', false);
+ $updater = new Updater([], [], $this->conf, true);
+ $this->assertTrue($updater->updateMethodEscapeMarkdown());
+ $this->assertFalse($this->conf->get('security.markdown_escape'));
+ }
+
+ /**
+ * Test updateMethodPiwikUrl with valid data
+ */
+ public function testUpdatePiwikUrlValid()
+ {
+ $sandboxConf = 'sandbox/config';
+ copy(self::$configFile . '.json.php', $sandboxConf . '.json.php');
+ $this->conf = new ConfigManager($sandboxConf);
+ $url = 'mypiwik.tld';
+ $this->conf->set('plugins.PIWIK_URL', $url);
+ $updater = new Updater([], [], $this->conf, true);
+ $this->assertTrue($updater->updateMethodPiwikUrl());
+ $this->assertEquals('http://'. $url, $this->conf->get('plugins.PIWIK_URL'));
+
+ // reload from file
+ $this->conf = new ConfigManager($sandboxConf);
+ $this->assertEquals('http://'. $url, $this->conf->get('plugins.PIWIK_URL'));
+ }
+
+ /**
+ * Test updateMethodPiwikUrl without setting
+ */
+ public function testUpdatePiwikUrlEmpty()
+ {
+ $updater = new Updater([], [], $this->conf, true);
+ $this->assertTrue($updater->updateMethodPiwikUrl());
+ $this->assertEmpty($this->conf->get('plugins.PIWIK_URL'));
+ }
+
+ /**
+ * Test updateMethodPiwikUrl: valid URL, nothing to do
+ */
+ public function testUpdatePiwikUrlNothingToDo()
+ {
+ $url = 'https://mypiwik.tld';
+ $this->conf->set('plugins.PIWIK_URL', $url);
+ $updater = new Updater([], [], $this->conf, true);
+ $this->assertTrue($updater->updateMethodPiwikUrl());
+ $this->assertEquals($url, $this->conf->get('plugins.PIWIK_URL'));
+ }
+
+ /**
+ * Test updateMethodAtomDefault with show_atom set to false
+ * => update to true.
+ */
+ public function testUpdateMethodAtomDefault()
+ {
+ $sandboxConf = 'sandbox/config';
+ copy(self::$configFile . '.json.php', $sandboxConf . '.json.php');
+ $this->conf = new ConfigManager($sandboxConf);
+ $this->conf->set('feed.show_atom', false);
+ $updater = new Updater([], [], $this->conf, true);
+ $this->assertTrue($updater->updateMethodAtomDefault());
+ $this->assertTrue($this->conf->get('feed.show_atom'));
+ // reload from file
+ $this->conf = new ConfigManager($sandboxConf);
+ $this->assertTrue($this->conf->get('feed.show_atom'));
+ }
+ /**
+ * Test updateMethodAtomDefault with show_atom not set.
+ * => nothing to do
+ */
+ public function testUpdateMethodAtomDefaultNoExist()
+ {
+ $sandboxConf = 'sandbox/config';
+ copy(self::$configFile . '.json.php', $sandboxConf . '.json.php');
+ $this->conf = new ConfigManager($sandboxConf);
+ $updater = new Updater([], [], $this->conf, true);
+ $this->assertTrue($updater->updateMethodAtomDefault());
+ $this->assertTrue($this->conf->get('feed.show_atom'));
+ }
+ /**
+ * Test updateMethodAtomDefault with show_atom set to true.
+ * => nothing to do
+ */
+ public function testUpdateMethodAtomDefaultAlreadyTrue()
+ {
+ $sandboxConf = 'sandbox/config';
+ copy(self::$configFile . '.json.php', $sandboxConf . '.json.php');
+ $this->conf = new ConfigManager($sandboxConf);
+ $this->conf->set('feed.show_atom', true);
+ $updater = new Updater([], [], $this->conf, true);
+ $this->assertTrue($updater->updateMethodAtomDefault());
+ $this->assertTrue($this->conf->get('feed.show_atom'));
+ }
}