assertEquals( '0.5.4', ApplicationUtils::getLatestGitVersionCode( 'https://raw.githubusercontent.com/shaarli/Shaarli/' .'v0.5.4/shaarli_version.php', $testTimeout ) ); $this->assertRegexp( self::$versionPattern, ApplicationUtils::getLatestGitVersionCode( 'https://raw.githubusercontent.com/shaarli/Shaarli/' .'master/shaarli_version.php', $testTimeout ) ); } /** * Attempt to retrieve the latest version from an invalid URL */ public function testGetLatestGitVersionCodeInvalidUrl() { $this->assertFalse( ApplicationUtils::getLatestGitVersionCode('htttp://null.io', 1) ); } /** * 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' ); $this->assertEquals( array(), ApplicationUtils::checkResourcePermissions($config) ); } /** * Checks resource permissions for a non-existent Shaarli installation */ 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' ); $this->assertEquals( array( '"null/tpl" directory is not readable', '"null/cache" directory is not readable', '"null/cache" directory is not writable', '"null/data" directory is not readable', '"null/data" directory is not writable', '"null/pagecache" directory is not readable', '"null/pagecache" directory is not writable', '"null/tmp" directory is not readable', '"null/tmp" directory is not writable' ), ApplicationUtils::checkResourcePermissions($config) ); } }