Unit tests for Router and PluginManager.

This commit is contained in:
ArthurHoaro 2015-07-16 13:53:39 +02:00
parent 567967fdf9
commit d06265fb57
4 changed files with 184 additions and 184 deletions

354
tests/ConfigTest.php Executable file → Normal file
View file

@ -1,177 +1,177 @@
<?php <?php
/** /**
* Config' tests * Config' tests
*/ */
require_once 'application/Config.php'; require_once 'application/Config.php';
/** /**
* Unitary tests for Shaarli config related functions * Unitary tests for Shaarli config related functions
*/ */
class ConfigTest extends PHPUnit_Framework_TestCase class ConfigTest extends PHPUnit_Framework_TestCase
{ {
// Configuration input set. // Configuration input set.
private static $_configFields; private static $configFields;
/** /**
* Executed before each test. * Executed before each test.
*/ */
public function setUp() public function setUp()
{ {
self::$_configFields = array( self::$configFields = array(
'login' => 'login', 'login' => 'login',
'hash' => 'hash', 'hash' => 'hash',
'salt' => 'salt', 'salt' => 'salt',
'timezone' => 'Europe/Paris', 'timezone' => 'Europe/Paris',
'title' => 'title', 'title' => 'title',
'titleLink' => 'titleLink', 'titleLink' => 'titleLink',
'redirector' => '', 'redirector' => '',
'disablesessionprotection' => false, 'disablesessionprotection' => false,
'privateLinkByDefault' => false, 'privateLinkByDefault' => false,
'config' => array( 'config' => array(
'CONFIG_FILE' => 'tests/config.php', 'CONFIG_FILE' => 'tests/config.php',
'DATADIR' => 'tests', 'DATADIR' => 'tests',
'config1' => 'config1data', 'config1' => 'config1data',
'config2' => 'config2data', 'config2' => 'config2data',
) )
); );
} }
/** /**
* Executed after each test. * Executed after each test.
* *
* @return void * @return void
*/ */
public function tearDown() public function tearDown()
{ {
if (is_file(self::$_configFields['config']['CONFIG_FILE'])) { if (is_file(self::$configFields['config']['CONFIG_FILE'])) {
unlink(self::$_configFields['config']['CONFIG_FILE']); unlink(self::$configFields['config']['CONFIG_FILE']);
} }
} }
/** /**
* Test writeConfig function, valid use case, while being logged in. * Test writeConfig function, valid use case, while being logged in.
*/ */
public function testWriteConfig() public function testWriteConfig()
{ {
writeConfig(self::$_configFields, true); writeConfig(self::$configFields, true);
include self::$_configFields['config']['CONFIG_FILE']; include self::$configFields['config']['CONFIG_FILE'];
$this->assertEquals(self::$_configFields['login'], $GLOBALS['login']); $this->assertEquals(self::$configFields['login'], $GLOBALS['login']);
$this->assertEquals(self::$_configFields['hash'], $GLOBALS['hash']); $this->assertEquals(self::$configFields['hash'], $GLOBALS['hash']);
$this->assertEquals(self::$_configFields['salt'], $GLOBALS['salt']); $this->assertEquals(self::$configFields['salt'], $GLOBALS['salt']);
$this->assertEquals(self::$_configFields['timezone'], $GLOBALS['timezone']); $this->assertEquals(self::$configFields['timezone'], $GLOBALS['timezone']);
$this->assertEquals(self::$_configFields['title'], $GLOBALS['title']); $this->assertEquals(self::$configFields['title'], $GLOBALS['title']);
$this->assertEquals(self::$_configFields['titleLink'], $GLOBALS['titleLink']); $this->assertEquals(self::$configFields['titleLink'], $GLOBALS['titleLink']);
$this->assertEquals(self::$_configFields['redirector'], $GLOBALS['redirector']); $this->assertEquals(self::$configFields['redirector'], $GLOBALS['redirector']);
$this->assertEquals(self::$_configFields['disablesessionprotection'], $GLOBALS['disablesessionprotection']); $this->assertEquals(self::$configFields['disablesessionprotection'], $GLOBALS['disablesessionprotection']);
$this->assertEquals(self::$_configFields['privateLinkByDefault'], $GLOBALS['privateLinkByDefault']); $this->assertEquals(self::$configFields['privateLinkByDefault'], $GLOBALS['privateLinkByDefault']);
$this->assertEquals(self::$_configFields['config']['config1'], $GLOBALS['config']['config1']); $this->assertEquals(self::$configFields['config']['config1'], $GLOBALS['config']['config1']);
$this->assertEquals(self::$_configFields['config']['config2'], $GLOBALS['config']['config2']); $this->assertEquals(self::$configFields['config']['config2'], $GLOBALS['config']['config2']);
} }
/** /**
* Test writeConfig option while logged in: * Test writeConfig option while logged in:
* 1. init fields. * 1. init fields.
* 2. update fields, add new sub config, add new root config. * 2. update fields, add new sub config, add new root config.
* 3. rewrite config. * 3. rewrite config.
* 4. check result. * 4. check result.
*/ */
public function testWriteConfigFieldUpdate() public function testWriteConfigFieldUpdate()
{ {
writeConfig(self::$_configFields, true); writeConfig(self::$configFields, true);
self::$_configFields['title'] = 'ok'; self::$configFields['title'] = 'ok';
self::$_configFields['config']['config1'] = 'ok'; self::$configFields['config']['config1'] = 'ok';
self::$_configFields['config']['config_new'] = 'ok'; self::$configFields['config']['config_new'] = 'ok';
self::$_configFields['new'] = 'should not be saved'; self::$configFields['new'] = 'should not be saved';
writeConfig(self::$_configFields, true); writeConfig(self::$configFields, true);
include self::$_configFields['config']['CONFIG_FILE']; include self::$configFields['config']['CONFIG_FILE'];
$this->assertEquals('ok', $GLOBALS['title']); $this->assertEquals('ok', $GLOBALS['title']);
$this->assertEquals('ok', $GLOBALS['config']['config1']); $this->assertEquals('ok', $GLOBALS['config']['config1']);
$this->assertEquals('ok', $GLOBALS['config']['config_new']); $this->assertEquals('ok', $GLOBALS['config']['config_new']);
$this->assertFalse(isset($GLOBALS['new'])); $this->assertFalse(isset($GLOBALS['new']));
} }
/** /**
* Test writeConfig function with an empty array. * Test writeConfig function with an empty array.
* *
* @expectedException MissingFieldConfigException * @expectedException MissingFieldConfigException
*/ */
public function testWriteConfigEmpty() public function testWriteConfigEmpty()
{ {
writeConfig(array(), true); writeConfig(array(), true);
} }
/** /**
* Test writeConfig function with a missing mandatory field. * Test writeConfig function with a missing mandatory field.
* *
* @expectedException MissingFieldConfigException * @expectedException MissingFieldConfigException
*/ */
public function testWriteConfigMissingField() public function testWriteConfigMissingField()
{ {
unset(self::$_configFields['login']); unset(self::$configFields['login']);
writeConfig(self::$_configFields, true); writeConfig(self::$configFields, true);
} }
/** /**
* Test writeConfig function while being logged out, and there is no config file existing. * Test writeConfig function while being logged out, and there is no config file existing.
*/ */
public function testWriteConfigLoggedOutNoFile() public function testWriteConfigLoggedOutNoFile()
{ {
writeConfig(self::$_configFields, false); writeConfig(self::$configFields, false);
} }
/** /**
* Test writeConfig function while being logged out, and a config file already exists. * Test writeConfig function while being logged out, and a config file already exists.
* *
* @expectedException UnauthorizedConfigException * @expectedException UnauthorizedConfigException
*/ */
public function testWriteConfigLoggedOutWithFile() public function testWriteConfigLoggedOutWithFile()
{ {
file_put_contents(self::$_configFields['config']['CONFIG_FILE'], ''); file_put_contents(self::$configFields['config']['CONFIG_FILE'], '');
writeConfig(self::$_configFields, false); writeConfig(self::$configFields, false);
} }
/** /**
* Test mergeDeprecatedConfig while being logged in: * Test mergeDeprecatedConfig while being logged in:
* 1. init a config file. * 1. init a config file.
* 2. init a options.php file with update value. * 2. init a options.php file with update value.
* 3. merge. * 3. merge.
* 4. check updated value in config file. * 4. check updated value in config file.
*/ */
public function testMergeDeprecatedConfig() public function testMergeDeprecatedConfig()
{ {
// init // init
writeConfig(self::$_configFields, true); writeConfig(self::$configFields, true);
$configCopy = self::$_configFields; $configCopy = self::$configFields;
$invert = !$configCopy['privateLinkByDefault']; $invert = !$configCopy['privateLinkByDefault'];
$configCopy['privateLinkByDefault'] = $invert; $configCopy['privateLinkByDefault'] = $invert;
// Use writeConfig to create a options.php // Use writeConfig to create a options.php
$configCopy['config']['CONFIG_FILE'] = 'tests/options.php'; $configCopy['config']['CONFIG_FILE'] = 'tests/options.php';
writeConfig($configCopy, true); writeConfig($configCopy, true);
$this->assertTrue(is_file($configCopy['config']['CONFIG_FILE'])); $this->assertTrue(is_file($configCopy['config']['CONFIG_FILE']));
// merge configs // merge configs
mergeDeprecatedConfig(self::$_configFields, true); mergeDeprecatedConfig(self::$configFields, true);
// make sure updated field is changed // make sure updated field is changed
include self::$_configFields['config']['CONFIG_FILE']; include self::$configFields['config']['CONFIG_FILE'];
$this->assertEquals($invert, $GLOBALS['privateLinkByDefault']); $this->assertEquals($invert, $GLOBALS['privateLinkByDefault']);
$this->assertFalse(is_file($configCopy['config']['CONFIG_FILE'])); $this->assertFalse(is_file($configCopy['config']['CONFIG_FILE']));
} }
/** /**
* Test mergeDeprecatedConfig while being logged in without options file. * Test mergeDeprecatedConfig while being logged in without options file.
*/ */
public function testMergeDeprecatedConfigNoFile() public function testMergeDeprecatedConfigNoFile()
{ {
writeConfig(self::$_configFields, true); writeConfig(self::$configFields, true);
mergeDeprecatedConfig(self::$_configFields, true); mergeDeprecatedConfig(self::$configFields, true);
include self::$_configFields['config']['CONFIG_FILE']; include self::$configFields['config']['CONFIG_FILE'];
$this->assertEquals(self::$_configFields['login'], $GLOBALS['login']); $this->assertEquals(self::$configFields['login'], $GLOBALS['login']);
} }
} }

12
tests/PluginManagerTest.php Executable file → Normal file
View file

@ -13,15 +13,15 @@ class PluginManagerTest extends PHPUnit_Framework_TestCase
{ {
/** /**
* Path to tests plugin. * Path to tests plugin.
* @var string $_PLUGIN_PATH * @var string $pluginPath
*/ */
private static $_PLUGIN_PATH = 'tests/plugins'; private static $pluginPath = 'tests/plugins';
/** /**
* Test plugin. * Test plugin.
* @var string $_PLUGIN_NAME * @var string $pluginName
*/ */
private static $_PLUGIN_NAME = 'test'; private static $pluginName = 'test';
/** /**
* Test plugin loading and hook execution. * Test plugin loading and hook execution.
@ -32,8 +32,8 @@ public function testPlugin()
{ {
$pluginManager = PluginManager::getInstance(); $pluginManager = PluginManager::getInstance();
PluginManager::$PLUGINS_PATH = self::$_PLUGIN_PATH; PluginManager::$PLUGINS_PATH = self::$pluginPath;
$pluginManager->load(array(self::$_PLUGIN_NAME)); $pluginManager->load(array(self::$pluginName));
$this->assertTrue(function_exists('hook_test_random')); $this->assertTrue(function_exists('hook_test_random'));

2
tests/RouterTest.php Executable file → Normal file
View file

@ -512,4 +512,4 @@ public function testFindPageEditlinkInvalid()
Router::findPage('whatever', array(), true) Router::findPage('whatever', array(), true)
); );
} }
} }

0
tests/plugins/test/test.php Executable file → Normal file
View file