126 lines
3.3 KiB
PHP
126 lines
3.3 KiB
PHP
|
<?php
|
||
|
|
||
|
require_once 'application/config/ConfigJson.php';
|
||
|
|
||
|
/**
|
||
|
* Class ConfigJsonTest
|
||
|
*/
|
||
|
class ConfigJsonTest extends PHPUnit_Framework_TestCase
|
||
|
{
|
||
|
/**
|
||
|
* @var ConfigJson
|
||
|
*/
|
||
|
protected $configIO;
|
||
|
|
||
|
public function setUp()
|
||
|
{
|
||
|
$this->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);
|
||
|
}
|
||
|
}
|