From b74b96bfbd0b778ac50fd17f5e107c51435b1678 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Sun, 29 May 2016 12:32:14 +0200 Subject: Adds ConfigJson which handle the configuration in JSON format. Also use the Updater to make the transition --- tests/config/ConfigJsonTest.php | 125 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 tests/config/ConfigJsonTest.php (limited to 'tests/config/ConfigJsonTest.php') diff --git a/tests/config/ConfigJsonTest.php b/tests/config/ConfigJsonTest.php new file mode 100644 index 00000000..5b3bce46 --- /dev/null +++ b/tests/config/ConfigJsonTest.php @@ -0,0 +1,125 @@ +configIO = new ConfigJson(); + } + + /** + * Read a simple existing config file. + */ + public function testRead() + { + $conf = $this->configIO->read('tests/utils/config/configJson.json.php'); + $this->assertEquals('root', $conf['login']); + $this->assertEquals('lala', $conf['redirector']); + $this->assertEquals('data/datastore.php', $conf['config']['DATASTORE']); + $this->assertEquals('1', $conf['plugins']['WALLABAG_VERSION']); + } + + /** + * Read a non existent config file -> empty array. + */ + public function testReadNonExistent() + { + $this->assertEquals(array(), $this->configIO->read('nope')); + } + + /** + * Read a non existent config file -> empty array. + * + * @expectedException Exception + * @expectedExceptionMessage An error occured while parsing JSON file: error code #4 + */ + public function testReadInvalidJson() + { + $this->configIO->read('tests/utils/config/configInvalid.json.php'); + } + + /** + * Write a new config file. + */ + public function testWriteNew() + { + $dataFile = 'tests/utils/config/configWrite.json.php'; + $data = array( + 'login' => 'root', + 'redirector' => 'lala', + 'config' => array( + 'DATASTORE' => 'data/datastore.php', + ), + 'plugins' => array( + 'WALLABAG_VERSION' => '1', + ) + ); + $this->configIO->write($dataFile, $data); + // PHP 5.3 doesn't support json pretty print. + if (defined('JSON_PRETTY_PRINT')) { + $expected = '{ + "login": "root", + "redirector": "lala", + "config": { + "DATASTORE": "data\/datastore.php" + }, + "plugins": { + "WALLABAG_VERSION": "1" + } +}'; + } else { + $expected = '{"login":"root","redirector":"lala","config":{"DATASTORE":"data\/datastore.php"},"plugins":{"WALLABAG_VERSION":"1"}}'; + } + $expected = ConfigJson::$PHP_HEADER . $expected; + $this->assertEquals($expected, file_get_contents($dataFile)); + unlink($dataFile); + } + + /** + * Overwrite an existing setting. + */ + public function testOverwrite() + { + $source = 'tests/utils/config/configJson.json.php'; + $dest = 'tests/utils/config/configOverwrite.json.php'; + copy($source, $dest); + $conf = $this->configIO->read($dest); + $conf['redirector'] = 'blabla'; + $this->configIO->write($dest, $conf); + $conf = $this->configIO->read($dest); + $this->assertEquals('blabla', $conf['redirector']); + unlink($dest); + } + + /** + * Write to invalid path. + * + * @expectedException IOException + */ + public function testWriteInvalidArray() + { + $conf = array('conf' => 'value'); + @$this->configIO->write(array(), $conf); + } + + /** + * Write to invalid path. + * + * @expectedException IOException + */ + public function testWriteInvalidBlank() + { + $conf = array('conf' => 'value'); + @$this->configIO->write('', $conf); + } +} -- cgit v1.2.3 From da10377b3c263d96a46cf9101c202554343d2cd0 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Sun, 29 May 2016 16:10:32 +0200 Subject: Rename configuration keys and fix GLOBALS in templates --- tests/config/ConfigJsonTest.php | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) (limited to 'tests/config/ConfigJsonTest.php') diff --git a/tests/config/ConfigJsonTest.php b/tests/config/ConfigJsonTest.php index 5b3bce46..0960c729 100644 --- a/tests/config/ConfigJsonTest.php +++ b/tests/config/ConfigJsonTest.php @@ -23,9 +23,9 @@ class ConfigJsonTest extends PHPUnit_Framework_TestCase public function testRead() { $conf = $this->configIO->read('tests/utils/config/configJson.json.php'); - $this->assertEquals('root', $conf['login']); - $this->assertEquals('lala', $conf['redirector']); - $this->assertEquals('data/datastore.php', $conf['config']['DATASTORE']); + $this->assertEquals('root', $conf['credentials']['login']); + $this->assertEquals('lala', $conf['extras']['redirector']); + $this->assertEquals('tests/utils/config/datastore.php', $conf['path']['datastore']); $this->assertEquals('1', $conf['plugins']['WALLABAG_VERSION']); } @@ -55,10 +55,14 @@ class ConfigJsonTest extends PHPUnit_Framework_TestCase { $dataFile = 'tests/utils/config/configWrite.json.php'; $data = array( - 'login' => 'root', - 'redirector' => 'lala', - 'config' => array( - 'DATASTORE' => 'data/datastore.php', + 'credentials' => array( + 'login' => 'root', + ), + 'path' => array( + 'datastore' => 'data/datastore.php', + ), + 'extras' => array( + 'redirector' => 'lala', ), 'plugins' => array( 'WALLABAG_VERSION' => '1', @@ -68,19 +72,23 @@ class ConfigJsonTest extends PHPUnit_Framework_TestCase // PHP 5.3 doesn't support json pretty print. if (defined('JSON_PRETTY_PRINT')) { $expected = '{ - "login": "root", - "redirector": "lala", - "config": { - "DATASTORE": "data\/datastore.php" + "credentials": { + "login": "root" + }, + "path": { + "datastore": "data\/datastore.php" + }, + "extras": { + "redirector": "lala" }, "plugins": { "WALLABAG_VERSION": "1" } }'; } else { - $expected = '{"login":"root","redirector":"lala","config":{"DATASTORE":"data\/datastore.php"},"plugins":{"WALLABAG_VERSION":"1"}}'; + $expected = '{"credentials":{"login":"root"},"path":{"datastore":"data\/datastore.php"},"extras":{"redirector":"lala"},"plugins":{"WALLABAG_VERSION":"1"}}'; } - $expected = ConfigJson::$PHP_HEADER . $expected; + $expected = ConfigJson::getPhpHeaders() . $expected; $this->assertEquals($expected, file_get_contents($dataFile)); unlink($dataFile); } @@ -94,10 +102,10 @@ class ConfigJsonTest extends PHPUnit_Framework_TestCase $dest = 'tests/utils/config/configOverwrite.json.php'; copy($source, $dest); $conf = $this->configIO->read($dest); - $conf['redirector'] = 'blabla'; + $conf['extras']['redirector'] = 'blabla'; $this->configIO->write($dest, $conf); $conf = $this->configIO->read($dest); - $this->assertEquals('blabla', $conf['redirector']); + $this->assertEquals('blabla', $conf['extras']['redirector']); unlink($dest); } -- cgit v1.2.3 From 894a3c4bf38d8dcadb6941049b9167e5101805bd Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Sat, 11 Jun 2016 09:08:02 +0200 Subject: Rename configuration key for better sections --- tests/config/ConfigJsonTest.php | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'tests/config/ConfigJsonTest.php') diff --git a/tests/config/ConfigJsonTest.php b/tests/config/ConfigJsonTest.php index 0960c729..359e9112 100644 --- a/tests/config/ConfigJsonTest.php +++ b/tests/config/ConfigJsonTest.php @@ -24,8 +24,8 @@ class ConfigJsonTest extends PHPUnit_Framework_TestCase { $conf = $this->configIO->read('tests/utils/config/configJson.json.php'); $this->assertEquals('root', $conf['credentials']['login']); - $this->assertEquals('lala', $conf['extras']['redirector']); - $this->assertEquals('tests/utils/config/datastore.php', $conf['path']['datastore']); + $this->assertEquals('lala', $conf['redirector']['url']); + $this->assertEquals('tests/utils/config/datastore.php', $conf['resource']['datastore']); $this->assertEquals('1', $conf['plugins']['WALLABAG_VERSION']); } @@ -58,11 +58,11 @@ class ConfigJsonTest extends PHPUnit_Framework_TestCase 'credentials' => array( 'login' => 'root', ), - 'path' => array( + 'resource' => array( 'datastore' => 'data/datastore.php', ), - 'extras' => array( - 'redirector' => 'lala', + 'redirector' => array( + 'url' => 'lala', ), 'plugins' => array( 'WALLABAG_VERSION' => '1', @@ -75,18 +75,18 @@ class ConfigJsonTest extends PHPUnit_Framework_TestCase "credentials": { "login": "root" }, - "path": { + "resource": { "datastore": "data\/datastore.php" }, - "extras": { - "redirector": "lala" + "redirector": { + "url": "lala" }, "plugins": { "WALLABAG_VERSION": "1" } }'; } else { - $expected = '{"credentials":{"login":"root"},"path":{"datastore":"data\/datastore.php"},"extras":{"redirector":"lala"},"plugins":{"WALLABAG_VERSION":"1"}}'; + $expected = '{"credentials":{"login":"root"},"resource":{"datastore":"data\/datastore.php"},"redirector":{"url":"lala"},"plugins":{"WALLABAG_VERSION":"1"}}'; } $expected = ConfigJson::getPhpHeaders() . $expected; $this->assertEquals($expected, file_get_contents($dataFile)); @@ -102,10 +102,10 @@ class ConfigJsonTest extends PHPUnit_Framework_TestCase $dest = 'tests/utils/config/configOverwrite.json.php'; copy($source, $dest); $conf = $this->configIO->read($dest); - $conf['extras']['redirector'] = 'blabla'; + $conf['redirector']['url'] = 'blabla'; $this->configIO->write($dest, $conf); $conf = $this->configIO->read($dest); - $this->assertEquals('blabla', $conf['extras']['redirector']); + $this->assertEquals('blabla', $conf['redirector']['url']); unlink($dest); } -- cgit v1.2.3 From 5ff23f02b80ec6ddee28dee869171ee8e3656b7c Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Mon, 20 Jun 2016 18:30:37 +0200 Subject: Add closing PHP tags to JSON config files --- tests/config/ConfigJsonTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests/config/ConfigJsonTest.php') diff --git a/tests/config/ConfigJsonTest.php b/tests/config/ConfigJsonTest.php index 359e9112..99c88820 100644 --- a/tests/config/ConfigJsonTest.php +++ b/tests/config/ConfigJsonTest.php @@ -88,7 +88,7 @@ class ConfigJsonTest extends PHPUnit_Framework_TestCase } else { $expected = '{"credentials":{"login":"root"},"resource":{"datastore":"data\/datastore.php"},"redirector":{"url":"lala"},"plugins":{"WALLABAG_VERSION":"1"}}'; } - $expected = ConfigJson::getPhpHeaders() . $expected; + $expected = ConfigJson::getPhpHeaders() . $expected . ConfigJson::getPhpSuffix(); $this->assertEquals($expected, file_get_contents($dataFile)); unlink($dataFile); } -- cgit v1.2.3