X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=tests%2FApplicationUtilsTest.php;h=ff4c9e17944be6de5fa9e53f9574eb1baac5c665;hb=be9ddff2fb8706ce575e95e8cd64458411895dbe;hp=9a99c6c6684b0d00617f53ed55935ec8c226b27c;hpb=0def004963c62ff1edfce16272a87ba9f0c87e16;p=github%2Fshaarli%2FShaarli.git diff --git a/tests/ApplicationUtilsTest.php b/tests/ApplicationUtilsTest.php index 9a99c6c6..ff4c9e17 100644 --- a/tests/ApplicationUtilsTest.php +++ b/tests/ApplicationUtilsTest.php @@ -1,36 +1,323 @@ assertEquals( + '0.5.4', + ApplicationUtils::getVersion( + 'https://raw.githubusercontent.com/shaarli/Shaarli/' + .'v0.5.4/shaarli_version.php', + $testTimeout + ) + ); + $this->assertRegExp( + self::$versionPattern, + ApplicationUtils::getVersion( + 'https://raw.githubusercontent.com/shaarli/Shaarli/' + .'latest/shaarli_version.php', + $testTimeout + ) + ); + } + + /** + * Attempt to retrieve the latest version from an invalid File + */ + public function testGetVersionCodeFromFile() + { + file_put_contents('sandbox/version.php', ''. PHP_EOL); + $this->assertEquals( + '1.2.3', + ApplicationUtils::getVersion('sandbox/version.php', 1) + ); + } + + /** + * Attempt to retrieve the latest version from an invalid File + */ + public function testGetVersionCodeInvalidFile() + { + $oldlog = ini_get('error_log'); + ini_set('error_log', '/dev/null'); + $this->assertFalse( + ApplicationUtils::getVersion('idontexist', 1) + ); + ini_set('error_log', $oldlog); + } + + /** + * Test update checks - the user is logged off + */ + public function testCheckUpdateLoggedOff() + { + $this->assertFalse( + ApplicationUtils::checkUpdate(self::$testVersion, 'null', 0, false, false) + ); + } + + /** + * Test update checks - the user has disabled updates + */ + public function testCheckUpdateUserDisabled() + { + $this->assertFalse( + ApplicationUtils::checkUpdate(self::$testVersion, 'null', 0, false, true) + ); + } + + /** + * A newer version is available + */ + public function testCheckUpdateNewVersionAvailable() + { + $newVersion = '1.8.3'; + FakeApplicationUtils::$VERSION_CODE = $newVersion; + + $version = FakeApplicationUtils::checkUpdate( + self::$testVersion, + self::$testUpdateFile, + 100, + true, + true + ); + + $this->assertEquals($newVersion, $version); + } + + /** + * No available information about versions + */ + public function testCheckUpdateNewVersionUnavailable() + { + $version = FakeApplicationUtils::checkUpdate( + self::$testVersion, + self::$testUpdateFile, + 100, + true, + true + ); + + $this->assertFalse($version); + } + + /** + * Test update checks - invalid Git branch + * @expectedException Exception + * @expectedExceptionMessageRegExp /Invalid branch selected for updates/ + */ + public function testCheckUpdateInvalidGitBranch() + { + ApplicationUtils::checkUpdate('', 'null', 0, true, true, 'unstable'); + } + + /** + * Shaarli is up-to-date + */ + public function testCheckUpdateNewVersionUpToDate() + { + FakeApplicationUtils::$VERSION_CODE = self::$testVersion; + + $version = FakeApplicationUtils::checkUpdate( + self::$testVersion, + self::$testUpdateFile, + 100, + true, + true + ); + + $this->assertFalse($version); + } + + /** + * Time-traveller's Shaarli + */ + public function testCheckUpdateNewVersionMaartiMcFly() + { + FakeApplicationUtils::$VERSION_CODE = '0.4.1'; + + $version = FakeApplicationUtils::checkUpdate( + self::$testVersion, + self::$testUpdateFile, + 100, + true, + true + ); + + $this->assertFalse($version); + } + + /** + * The version has been checked recently and Shaarli is up-to-date + */ + public function testCheckUpdateNewVersionTwiceUpToDate() + { + FakeApplicationUtils::$VERSION_CODE = self::$testVersion; + + // Create the update file + $version = FakeApplicationUtils::checkUpdate( + self::$testVersion, + self::$testUpdateFile, + 100, + true, + true + ); + + $this->assertFalse($version); + + // Reuse the update file + $version = FakeApplicationUtils::checkUpdate( + self::$testVersion, + self::$testUpdateFile, + 100, + true, + true + ); + + $this->assertFalse($version); + } + + /** + * The version has been checked recently and Shaarli is outdated + */ + public function testCheckUpdateNewVersionTwiceOutdated() + { + $newVersion = '1.8.3'; + FakeApplicationUtils::$VERSION_CODE = $newVersion; + + // Create the update file + $version = FakeApplicationUtils::checkUpdate( + self::$testVersion, + self::$testUpdateFile, + 100, + true, + true + ); + $this->assertEquals($newVersion, $version); + + // Reuse the update file + $version = FakeApplicationUtils::checkUpdate( + self::$testVersion, + self::$testUpdateFile, + 100, + true, + true + ); + $this->assertEquals($newVersion, $version); + } + + /** + * Check supported PHP versions + */ + public function testCheckSupportedPHPVersion() + { + $minVersion = '5.3'; + ApplicationUtils::checkPHPVersion($minVersion, '5.4.32'); + ApplicationUtils::checkPHPVersion($minVersion, '5.5'); + ApplicationUtils::checkPHPVersion($minVersion, '5.6.10'); + } + + /** + * Check a unsupported PHP version + * @expectedException Exception + * @expectedExceptionMessageRegExp /Your PHP version is obsolete/ + */ + public function testCheckSupportedPHPVersion51() + { + ApplicationUtils::checkPHPVersion('5.3', '5.1.0'); + } + + /** + * Check another unsupported PHP version + * @expectedException Exception + * @expectedExceptionMessageRegExp /Your PHP version is obsolete/ + */ + public function testCheckSupportedPHPVersion52() + { + ApplicationUtils::checkPHPVersion('5.3', '5.2'); + } + /** * Checks resource permissions for the current Shaarli installation */ public function testCheckCurrentResourcePermissions() { - $config = array( - 'CACHEDIR' => 'cache', - 'CONFIG_FILE' => 'data/config.php', - 'DATADIR' => 'data', - 'DATASTORE' => 'data/datastore.php', - 'IPBANS_FILENAME' => 'data/ipbans.php', - 'LOG_FILE' => 'data/log.txt', - 'PAGECACHE' => 'pagecache', - 'RAINTPL_TMP' => 'tmp', - 'RAINTPL_TPL' => 'tpl', - 'UPDATECHECK_FILENAME' => 'data/lastupdatecheck.txt' - ); + $conf = new ConfigManager(''); + $conf->set('resource.thumbnails_cache', 'cache'); + $conf->set('resource.config', 'data/config.php'); + $conf->set('resource.data_dir', 'data'); + $conf->set('resource.datastore', 'data/datastore.php'); + $conf->set('resource.ban_file', 'data/ipbans.php'); + $conf->set('resource.log', 'data/log.txt'); + $conf->set('resource.page_cache', 'pagecache'); + $conf->set('resource.raintpl_tmp', 'tmp'); + $conf->set('resource.raintpl_tpl', 'tpl'); + $conf->set('resource.theme', 'default'); + $conf->set('resource.update_check', 'data/lastupdatecheck.txt'); + $this->assertEquals( array(), - ApplicationUtils::checkResourcePermissions($config) + ApplicationUtils::checkResourcePermissions($conf) ); } @@ -39,21 +326,22 @@ class ApplicationUtilsTest extends PHPUnit_Framework_TestCase */ public function testCheckCurrentResourcePermissionsErrors() { - $config = array( - 'CACHEDIR' => 'null/cache', - 'CONFIG_FILE' => 'null/data/config.php', - 'DATADIR' => 'null/data', - 'DATASTORE' => 'null/data/store.php', - 'IPBANS_FILENAME' => 'null/data/ipbans.php', - 'LOG_FILE' => 'null/data/log.txt', - 'PAGECACHE' => 'null/pagecache', - 'RAINTPL_TMP' => 'null/tmp', - 'RAINTPL_TPL' => 'null/tpl', - 'UPDATECHECK_FILENAME' => 'null/data/lastupdatecheck.txt' - ); + $conf = new ConfigManager(''); + $conf->set('resource.thumbnails_cache', 'null/cache'); + $conf->set('resource.config', 'null/data/config.php'); + $conf->set('resource.data_dir', 'null/data'); + $conf->set('resource.datastore', 'null/data/store.php'); + $conf->set('resource.ban_file', 'null/data/ipbans.php'); + $conf->set('resource.log', 'null/data/log.txt'); + $conf->set('resource.page_cache', 'null/pagecache'); + $conf->set('resource.raintpl_tmp', 'null/tmp'); + $conf->set('resource.raintpl_tpl', 'null/tpl'); + $conf->set('resource.raintpl_theme', 'null/tpl/default'); + $conf->set('resource.update_check', 'null/data/lastupdatecheck.txt'); $this->assertEquals( array( '"null/tpl" directory is not readable', + '"null/tpl/default" directory is not readable', '"null/cache" directory is not readable', '"null/cache" directory is not writable', '"null/data" directory is not readable', @@ -63,7 +351,18 @@ class ApplicationUtilsTest extends PHPUnit_Framework_TestCase '"null/tmp" directory is not readable', '"null/tmp" directory is not writable' ), - ApplicationUtils::checkResourcePermissions($config) + ApplicationUtils::checkResourcePermissions($conf) + ); + } + + /** + * Check update with 'dev' as curent version (master branch). + * It should always return false. + */ + public function testCheckUpdateDev() + { + $this->assertFalse( + ApplicationUtils::checkUpdate('dev', self::$testUpdateFile, 100, true, true) ); } }