@@ -20,10 +20,9 @@ | |||
*/ | |||
if(\OC::$server->getConfig()->getSystemValue('updatechecker', true) === true) { | |||
$updater = new \OC\Updater( | |||
$updater = new \OC\Updater\VersionCheck( | |||
\OC::$server->getHTTPHelper(), | |||
\OC::$server->getConfig(), | |||
\OC::$server->getIntegrityCodeChecker() | |||
\OC::$server->getConfig() | |||
); | |||
$updateChecker = new \OCA\UpdateNotification\UpdateChecker( | |||
$updater |
@@ -34,10 +34,9 @@ class Application extends App { | |||
$container = $this->getContainer(); | |||
$container->registerService('AdminController', function(IAppContainer $c) { | |||
$updater = new \OC\Updater( | |||
$updater = new \OC\Updater\VersionCheck( | |||
\OC::$server->getHTTPHelper(), | |||
\OC::$server->getConfig(), | |||
\OC::$server->getIntegrityCodeChecker() | |||
\OC::$server->getConfig() | |||
); | |||
return new AdminController( | |||
$c->query('AppName'), |
@@ -21,16 +21,16 @@ | |||
namespace OCA\UpdateNotification; | |||
use OC\Updater; | |||
use OC\Updater\VersionCheck; | |||
class UpdateChecker { | |||
/** @var Updater */ | |||
/** @var VersionCheck */ | |||
private $updater; | |||
/** | |||
* @param Updater $updater | |||
* @param VersionCheck $updater | |||
*/ | |||
public function __construct(Updater $updater) { | |||
public function __construct(VersionCheck $updater) { | |||
$this->updater = $updater; | |||
} | |||
@@ -34,7 +34,7 @@ class UpdateCheckerTest extends TestCase { | |||
public function setUp() { | |||
parent::setUp(); | |||
$this->updater = $this->getMockBuilder('\OC\Updater') | |||
$this->updater = $this->getMockBuilder('\OC\Updater\VersionCheck') | |||
->disableOriginalConstructor()->getMock(); | |||
$this->updateChecker = new UpdateChecker($this->updater); | |||
} |
@@ -128,7 +128,6 @@ class Upgrade extends Command { | |||
$self = $this; | |||
$updater = new Updater( | |||
\OC::$server->getHTTPHelper(), | |||
$this->config, | |||
\OC::$server->getIntegrityCodeChecker(), | |||
$this->logger |
@@ -47,7 +47,6 @@ if (OC::checkUpgrade(false)) { | |||
$logger = \OC::$server->getLogger(); | |||
$config = \OC::$server->getConfig(); | |||
$updater = new \OC\Updater( | |||
\OC::$server->getHTTPHelper(), | |||
$config, | |||
\OC::$server->getIntegrityCodeChecker(), | |||
$logger |
@@ -37,7 +37,6 @@ use OC\Hooks\BasicEmitter; | |||
use OC\IntegrityCheck\Checker; | |||
use OC_App; | |||
use OC_Installer; | |||
use OC_Util; | |||
use OCP\IConfig; | |||
use OC\Setup; | |||
use OCP\ILogger; | |||
@@ -56,9 +55,6 @@ class Updater extends BasicEmitter { | |||
/** @var ILogger $log */ | |||
private $log; | |||
/** @var \OC\HTTPHelper $helper */ | |||
private $httpHelper; | |||
/** @var IConfig */ | |||
private $config; | |||
@@ -83,16 +79,13 @@ class Updater extends BasicEmitter { | |||
]; | |||
/** | |||
* @param HTTPHelper $httpHelper | |||
* @param IConfig $config | |||
* @param Checker $checker | |||
* @param ILogger $log | |||
*/ | |||
public function __construct(HTTPHelper $httpHelper, | |||
IConfig $config, | |||
public function __construct(IConfig $config, | |||
Checker $checker, | |||
ILogger $log = null) { | |||
$this->httpHelper = $httpHelper; | |||
$this->log = $log; | |||
$this->config = $config; | |||
$this->checker = $checker; | |||
@@ -131,63 +124,6 @@ class Updater extends BasicEmitter { | |||
$this->skip3rdPartyAppsDisable = $flag; | |||
} | |||
/** | |||
* Check if a new version is available | |||
* | |||
* @param string $updaterUrl the url to check, i.e. 'http://apps.owncloud.com/updater.php' | |||
* @return array|bool | |||
*/ | |||
public function check($updaterUrl = null) { | |||
// Look up the cache - it is invalidated all 30 minutes | |||
if (((int)$this->config->getAppValue('core', 'lastupdatedat') + 1800) > time()) { | |||
return json_decode($this->config->getAppValue('core', 'lastupdateResult'), true); | |||
} | |||
if (is_null($updaterUrl)) { | |||
$updaterUrl = 'https://updates.owncloud.com/server/'; | |||
} | |||
$this->config->setAppValue('core', 'lastupdatedat', time()); | |||
if ($this->config->getAppValue('core', 'installedat', '') === '') { | |||
$this->config->setAppValue('core', 'installedat', microtime(true)); | |||
} | |||
$version = \OCP\Util::getVersion(); | |||
$version['installed'] = $this->config->getAppValue('core', 'installedat'); | |||
$version['updated'] = $this->config->getAppValue('core', 'lastupdatedat'); | |||
$version['updatechannel'] = \OC_Util::getChannel(); | |||
$version['edition'] = \OC_Util::getEditionString(); | |||
$version['build'] = \OC_Util::getBuild(); | |||
$versionString = implode('x', $version); | |||
//fetch xml data from updater | |||
$url = $updaterUrl . '?version=' . $versionString; | |||
$tmp = []; | |||
$xml = $this->httpHelper->getUrlContent($url); | |||
if ($xml) { | |||
$loadEntities = libxml_disable_entity_loader(true); | |||
$data = @simplexml_load_string($xml); | |||
libxml_disable_entity_loader($loadEntities); | |||
if ($data !== false) { | |||
$tmp['version'] = (string)$data->version; | |||
$tmp['versionstring'] = (string)$data->versionstring; | |||
$tmp['url'] = (string)$data->url; | |||
$tmp['web'] = (string)$data->web; | |||
} else { | |||
libxml_clear_errors(); | |||
} | |||
} else { | |||
$data = []; | |||
} | |||
// Cache the result | |||
$this->config->setAppValue('core', 'lastupdateResult', json_encode($data)); | |||
return $tmp; | |||
} | |||
/** | |||
* runs the update actions in maintenance mode, does not upgrade the source files | |||
* except the main .htaccess file |
@@ -0,0 +1,119 @@ | |||
<?php | |||
/** | |||
* @author Arthur Schiwon <blizzz@owncloud.com> | |||
* @author Bart Visscher <bartv@thisnet.nl> | |||
* @author Björn Schießle <schiessle@owncloud.com> | |||
* @author Frank Karlitschek <frank@owncloud.org> | |||
* @author Joas Schilling <nickvergessen@owncloud.com> | |||
* @author Lukas Reschke <lukas@owncloud.com> | |||
* @author Morris Jobke <hey@morrisjobke.de> | |||
* @author Robin Appelman <icewind@owncloud.com> | |||
* @author Robin McCorkell <robin@mccorkell.me.uk> | |||
* @author Steffen Lindner <mail@steffen-lindner.de> | |||
* @author Thomas Müller <thomas.mueller@tmit.eu> | |||
* @author Victor Dubiniuk <dubiniuk@owncloud.com> | |||
* @author Vincent Petry <pvince81@owncloud.com> | |||
* | |||
* @copyright Copyright (c) 2016, ownCloud, Inc. | |||
* @license AGPL-3.0 | |||
* | |||
* This code is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License, version 3, | |||
* as published by the Free Software Foundation. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU Affero General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Affero General Public License, version 3, | |||
* along with this program. If not, see <http://www.gnu.org/licenses/> | |||
* | |||
*/ | |||
namespace OC\Updater; | |||
use OC\Hooks\BasicEmitter; | |||
use OC\HTTPHelper; | |||
use OC_Util; | |||
use OCP\IConfig; | |||
use OC\Setup; | |||
use OCP\Util; | |||
class VersionCheck { | |||
/** @var \OC\HTTPHelper $helper */ | |||
private $httpHelper; | |||
/** @var IConfig */ | |||
private $config; | |||
/** | |||
* @param HTTPHelper $httpHelper | |||
* @param IConfig $config | |||
*/ | |||
public function __construct(HTTPHelper $httpHelper, | |||
IConfig $config) { | |||
$this->httpHelper = $httpHelper; | |||
$this->config = $config; | |||
} | |||
/** | |||
* Check if a new version is available | |||
* | |||
* @param string $updaterUrl the url to check, i.e. 'http://apps.owncloud.com/updater.php' | |||
* @return array|bool | |||
*/ | |||
public function check($updaterUrl = null) { | |||
// Look up the cache - it is invalidated all 30 minutes | |||
if (((int)$this->config->getAppValue('core', 'lastupdatedat') + 1800) > time()) { | |||
return json_decode($this->config->getAppValue('core', 'lastupdateResult'), true); | |||
} | |||
if (is_null($updaterUrl)) { | |||
$updaterUrl = 'https://updates.owncloud.com/server/'; | |||
} | |||
$this->config->setAppValue('core', 'lastupdatedat', time()); | |||
if ($this->config->getAppValue('core', 'installedat', '') === '') { | |||
$this->config->setAppValue('core', 'installedat', microtime(true)); | |||
} | |||
$version = Util::getVersion(); | |||
$version['installed'] = $this->config->getAppValue('core', 'installedat'); | |||
$version['updated'] = $this->config->getAppValue('core', 'lastupdatedat'); | |||
$version['updatechannel'] = \OC_Util::getChannel(); | |||
$version['edition'] = \OC_Util::getEditionString(); | |||
$version['build'] = \OC_Util::getBuild(); | |||
$versionString = implode('x', $version); | |||
//fetch xml data from updater | |||
$url = $updaterUrl . '?version=' . $versionString; | |||
$tmp = []; | |||
$xml = $this->httpHelper->getUrlContent($url); | |||
if ($xml) { | |||
$loadEntities = libxml_disable_entity_loader(true); | |||
$data = @simplexml_load_string($xml); | |||
libxml_disable_entity_loader($loadEntities); | |||
if ($data !== false) { | |||
$tmp['version'] = (string)$data->version; | |||
$tmp['versionstring'] = (string)$data->versionstring; | |||
$tmp['url'] = (string)$data->url; | |||
$tmp['web'] = (string)$data->web; | |||
} else { | |||
libxml_clear_errors(); | |||
} | |||
} else { | |||
$data = []; | |||
} | |||
// Cache the result | |||
$this->config->setAppValue('core', 'lastupdateResult', json_encode($data)); | |||
return $tmp; | |||
} | |||
} | |||
@@ -29,8 +29,6 @@ use OC\IntegrityCheck\Checker; | |||
class UpdaterTest extends \Test\TestCase { | |||
/** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ | |||
private $config; | |||
/** @var HTTPHelper */ | |||
private $httpHelper; | |||
/** @var ILogger */ | |||
private $logger; | |||
/** @var Updater */ | |||
@@ -43,9 +41,6 @@ class UpdaterTest extends \Test\TestCase { | |||
$this->config = $this->getMockBuilder('\\OCP\\IConfig') | |||
->disableOriginalConstructor() | |||
->getMock(); | |||
$this->httpHelper = $this->getMockBuilder('\\OC\\HTTPHelper') | |||
->disableOriginalConstructor() | |||
->getMock(); | |||
$this->logger = $this->getMockBuilder('\\OCP\\ILogger') | |||
->disableOriginalConstructor() | |||
->getMock(); | |||
@@ -54,7 +49,6 @@ class UpdaterTest extends \Test\TestCase { | |||
->getMock(); | |||
$this->updater = new Updater( | |||
$this->httpHelper, | |||
$this->config, | |||
$this->checker, | |||
$this->logger | |||
@@ -184,237 +178,4 @@ class UpdaterTest extends \Test\TestCase { | |||
$this->assertSame(false, $this->invokePrivate($this->updater, 'skip3rdPartyAppsDisable')); | |||
} | |||
public function testCheckInCache() { | |||
$expectedResult = [ | |||
'version' => '8.0.4.2', | |||
'versionstring' => 'ownCloud 8.0.4', | |||
'url' => 'https://download.owncloud.org/community/owncloud-8.0.4.zip', | |||
'web' => 'http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html', | |||
]; | |||
$this->config | |||
->expects($this->at(0)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue(time())); | |||
$this->config | |||
->expects($this->at(1)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdateResult') | |||
->will($this->returnValue(json_encode($expectedResult))); | |||
$this->assertSame($expectedResult, $this->updater->check()); | |||
} | |||
public function testCheckWithoutUpdateUrl() { | |||
$expectedResult = [ | |||
'version' => '8.0.4.2', | |||
'versionstring' => 'ownCloud 8.0.4', | |||
'url' => 'https://download.owncloud.org/community/owncloud-8.0.4.zip', | |||
'web' => 'http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html', | |||
]; | |||
$this->config | |||
->expects($this->at(0)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue(0)); | |||
$this->config | |||
->expects($this->at(1)) | |||
->method('setAppValue') | |||
->with('core', 'lastupdatedat', $this->isType('integer')); | |||
$this->config | |||
->expects($this->at(3)) | |||
->method('getAppValue') | |||
->with('core', 'installedat') | |||
->will($this->returnValue('installedat')); | |||
$this->config | |||
->expects($this->at(4)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue('lastupdatedat')); | |||
$this->config | |||
->expects($this->at(5)) | |||
->method('setAppValue') | |||
->with('core', 'lastupdateResult', json_encode($expectedResult)); | |||
$updateXml = '<?xml version="1.0"?> | |||
<owncloud> | |||
<version>8.0.4.2</version> | |||
<versionstring>ownCloud 8.0.4</versionstring> | |||
<url>https://download.owncloud.org/community/owncloud-8.0.4.zip</url> | |||
<web>http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html</web> | |||
</owncloud>'; | |||
$this->httpHelper | |||
->expects($this->once()) | |||
->method('getUrlContent') | |||
->with($this->buildUpdateUrl('https://updates.owncloud.com/server/')) | |||
->will($this->returnValue($updateXml)); | |||
$this->assertSame($expectedResult, $this->updater->check()); | |||
} | |||
public function testCheckWithInvalidXml() { | |||
$this->config | |||
->expects($this->at(0)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue(0)); | |||
$this->config | |||
->expects($this->at(1)) | |||
->method('setAppValue') | |||
->with('core', 'lastupdatedat', $this->isType('integer')); | |||
$this->config | |||
->expects($this->at(3)) | |||
->method('getAppValue') | |||
->with('core', 'installedat') | |||
->will($this->returnValue('installedat')); | |||
$this->config | |||
->expects($this->at(4)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue('lastupdatedat')); | |||
$this->config | |||
->expects($this->at(5)) | |||
->method('setAppValue') | |||
->with('core', 'lastupdateResult', 'false'); | |||
$updateXml = 'Invalid XML Response!'; | |||
$this->httpHelper | |||
->expects($this->once()) | |||
->method('getUrlContent') | |||
->with($this->buildUpdateUrl('https://updates.owncloud.com/server/')) | |||
->will($this->returnValue($updateXml)); | |||
$this->assertSame([], $this->updater->check()); | |||
} | |||
public function testCheckWithUpdateUrl() { | |||
$expectedResult = [ | |||
'version' => '8.0.4.2', | |||
'versionstring' => 'ownCloud 8.0.4', | |||
'url' => 'https://download.owncloud.org/community/owncloud-8.0.4.zip', | |||
'web' => 'http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html', | |||
]; | |||
$this->config | |||
->expects($this->at(0)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue(0)); | |||
$this->config | |||
->expects($this->at(1)) | |||
->method('setAppValue') | |||
->with('core', 'lastupdatedat', $this->isType('integer')); | |||
$this->config | |||
->expects($this->at(3)) | |||
->method('getAppValue') | |||
->with('core', 'installedat') | |||
->will($this->returnValue('installedat')); | |||
$this->config | |||
->expects($this->at(4)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue('lastupdatedat')); | |||
$this->config | |||
->expects($this->at(5)) | |||
->method('setAppValue') | |||
->with('core', 'lastupdateResult', json_encode($expectedResult)); | |||
$updateXml = '<?xml version="1.0"?> | |||
<owncloud> | |||
<version>8.0.4.2</version> | |||
<versionstring>ownCloud 8.0.4</versionstring> | |||
<url>https://download.owncloud.org/community/owncloud-8.0.4.zip</url> | |||
<web>http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html</web> | |||
</owncloud>'; | |||
$this->httpHelper | |||
->expects($this->once()) | |||
->method('getUrlContent') | |||
->with($this->buildUpdateUrl('https://myupdater.com/')) | |||
->will($this->returnValue($updateXml)); | |||
$this->assertSame($expectedResult, $this->updater->check('https://myupdater.com/')); | |||
} | |||
public function testCheckWithEmptyValidXmlResponse() { | |||
$expectedResult = [ | |||
'version' => '', | |||
'versionstring' => '', | |||
'url' => '', | |||
'web' => '', | |||
]; | |||
$this->config | |||
->expects($this->at(0)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue(0)); | |||
$this->config | |||
->expects($this->at(1)) | |||
->method('setAppValue') | |||
->with('core', 'lastupdatedat', $this->isType('integer')); | |||
$this->config | |||
->expects($this->at(3)) | |||
->method('getAppValue') | |||
->with('core', 'installedat') | |||
->will($this->returnValue('installedat')); | |||
$this->config | |||
->expects($this->at(4)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue('lastupdatedat')); | |||
$updateXml = '<?xml version="1.0"?> | |||
<owncloud> | |||
<version></version> | |||
<versionstring></versionstring> | |||
<url></url> | |||
<web></web> | |||
</owncloud>'; | |||
$this->httpHelper | |||
->expects($this->once()) | |||
->method('getUrlContent') | |||
->with($this->buildUpdateUrl('https://updates.owncloud.com/server/')) | |||
->will($this->returnValue($updateXml)); | |||
$this->assertSame($expectedResult, $this->updater->check()); | |||
} | |||
public function testCheckWithEmptyInvalidXmlResponse() { | |||
$expectedResult = []; | |||
$this->config | |||
->expects($this->at(0)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue(0)); | |||
$this->config | |||
->expects($this->at(1)) | |||
->method('setAppValue') | |||
->with('core', 'lastupdatedat', $this->isType('integer')); | |||
$this->config | |||
->expects($this->at(3)) | |||
->method('getAppValue') | |||
->with('core', 'installedat') | |||
->will($this->returnValue('installedat')); | |||
$this->config | |||
->expects($this->at(4)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue('lastupdatedat')); | |||
$this->config | |||
->expects($this->at(5)) | |||
->method('setAppValue') | |||
->with('core', 'lastupdateResult', json_encode($expectedResult)); | |||
$updateXml = ''; | |||
$this->httpHelper | |||
->expects($this->once()) | |||
->method('getUrlContent') | |||
->with($this->buildUpdateUrl('https://updates.owncloud.com/server/')) | |||
->will($this->returnValue($updateXml)); | |||
$this->assertSame($expectedResult, $this->updater->check()); | |||
} | |||
} |
@@ -0,0 +1,293 @@ | |||
<?php | |||
/** | |||
* @author Lukas Reschke <lukas@owncloud.com> | |||
* @author Victor Dubiniuk <dubiniuk@owncloud.com> | |||
* | |||
* @copyright Copyright (c) 2015, ownCloud, Inc. | |||
* @license AGPL-3.0 | |||
* | |||
* This code is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License, version 3, | |||
* as published by the Free Software Foundation. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU Affero General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Affero General Public License, version 3, | |||
* along with this program. If not, see <http://www.gnu.org/licenses/> | |||
* | |||
*/ | |||
namespace OC; | |||
use OC\Updater\VersionCheck; | |||
use OCP\IConfig; | |||
use OCP\Util; | |||
class VersionCheckTest extends \Test\TestCase { | |||
/** @var IConfig| \PHPUnit_Framework_MockObject_MockObject */ | |||
private $config; | |||
/** @var HTTPHelper | \PHPUnit_Framework_MockObject_MockObject*/ | |||
private $httpHelper; | |||
/** @var VersionCheck */ | |||
private $updater; | |||
public function setUp() { | |||
parent::setUp(); | |||
$this->config = $this->getMockBuilder('\\OCP\\IConfig') | |||
->disableOriginalConstructor() | |||
->getMock(); | |||
$this->httpHelper = $this->getMockBuilder('\\OC\\HTTPHelper') | |||
->disableOriginalConstructor() | |||
->getMock(); | |||
$this->updater = new VersionCheck( | |||
$this->httpHelper, | |||
$this->config | |||
); | |||
} | |||
/** | |||
* @param string $baseUrl | |||
* @return string | |||
*/ | |||
private function buildUpdateUrl($baseUrl) { | |||
return $baseUrl . '?version='.implode('x', Util::getVersion()).'xinstalledatxlastupdatedatx'.\OC_Util::getChannel().'x'.\OC_Util::getEditionString().'x'; | |||
} | |||
public function testCheckInCache() { | |||
$expectedResult = [ | |||
'version' => '8.0.4.2', | |||
'versionstring' => 'ownCloud 8.0.4', | |||
'url' => 'https://download.owncloud.org/community/owncloud-8.0.4.zip', | |||
'web' => 'http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html', | |||
]; | |||
$this->config | |||
->expects($this->at(0)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue(time())); | |||
$this->config | |||
->expects($this->at(1)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdateResult') | |||
->will($this->returnValue(json_encode($expectedResult))); | |||
$this->assertSame($expectedResult, $this->updater->check()); | |||
} | |||
public function testCheckWithoutUpdateUrl() { | |||
$expectedResult = [ | |||
'version' => '8.0.4.2', | |||
'versionstring' => 'ownCloud 8.0.4', | |||
'url' => 'https://download.owncloud.org/community/owncloud-8.0.4.zip', | |||
'web' => 'http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html', | |||
]; | |||
$this->config | |||
->expects($this->at(0)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue(0)); | |||
$this->config | |||
->expects($this->at(1)) | |||
->method('setAppValue') | |||
->with('core', 'lastupdatedat', $this->isType('integer')); | |||
$this->config | |||
->expects($this->at(3)) | |||
->method('getAppValue') | |||
->with('core', 'installedat') | |||
->will($this->returnValue('installedat')); | |||
$this->config | |||
->expects($this->at(4)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue('lastupdatedat')); | |||
$this->config | |||
->expects($this->at(5)) | |||
->method('setAppValue') | |||
->with('core', 'lastupdateResult', json_encode($expectedResult)); | |||
$updateXml = '<?xml version="1.0"?> | |||
<owncloud> | |||
<version>8.0.4.2</version> | |||
<versionstring>ownCloud 8.0.4</versionstring> | |||
<url>https://download.owncloud.org/community/owncloud-8.0.4.zip</url> | |||
<web>http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html</web> | |||
</owncloud>'; | |||
$this->httpHelper | |||
->expects($this->once()) | |||
->method('getUrlContent') | |||
->with($this->buildUpdateUrl('https://updates.owncloud.com/server/')) | |||
->will($this->returnValue($updateXml)); | |||
$this->assertSame($expectedResult, $this->updater->check()); | |||
} | |||
public function testCheckWithInvalidXml() { | |||
$this->config | |||
->expects($this->at(0)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue(0)); | |||
$this->config | |||
->expects($this->at(1)) | |||
->method('setAppValue') | |||
->with('core', 'lastupdatedat', $this->isType('integer')); | |||
$this->config | |||
->expects($this->at(3)) | |||
->method('getAppValue') | |||
->with('core', 'installedat') | |||
->will($this->returnValue('installedat')); | |||
$this->config | |||
->expects($this->at(4)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue('lastupdatedat')); | |||
$this->config | |||
->expects($this->at(5)) | |||
->method('setAppValue') | |||
->with('core', 'lastupdateResult', 'false'); | |||
$updateXml = 'Invalid XML Response!'; | |||
$this->httpHelper | |||
->expects($this->once()) | |||
->method('getUrlContent') | |||
->with($this->buildUpdateUrl('https://updates.owncloud.com/server/')) | |||
->will($this->returnValue($updateXml)); | |||
$this->assertSame([], $this->updater->check()); | |||
} | |||
public function testCheckWithUpdateUrl() { | |||
$expectedResult = [ | |||
'version' => '8.0.4.2', | |||
'versionstring' => 'ownCloud 8.0.4', | |||
'url' => 'https://download.owncloud.org/community/owncloud-8.0.4.zip', | |||
'web' => 'http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html', | |||
]; | |||
$this->config | |||
->expects($this->at(0)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue(0)); | |||
$this->config | |||
->expects($this->at(1)) | |||
->method('setAppValue') | |||
->with('core', 'lastupdatedat', $this->isType('integer')); | |||
$this->config | |||
->expects($this->at(3)) | |||
->method('getAppValue') | |||
->with('core', 'installedat') | |||
->will($this->returnValue('installedat')); | |||
$this->config | |||
->expects($this->at(4)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue('lastupdatedat')); | |||
$this->config | |||
->expects($this->at(5)) | |||
->method('setAppValue') | |||
->with('core', 'lastupdateResult', json_encode($expectedResult)); | |||
$updateXml = '<?xml version="1.0"?> | |||
<owncloud> | |||
<version>8.0.4.2</version> | |||
<versionstring>ownCloud 8.0.4</versionstring> | |||
<url>https://download.owncloud.org/community/owncloud-8.0.4.zip</url> | |||
<web>http://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html</web> | |||
</owncloud>'; | |||
$this->httpHelper | |||
->expects($this->once()) | |||
->method('getUrlContent') | |||
->with($this->buildUpdateUrl('https://myupdater.com/')) | |||
->will($this->returnValue($updateXml)); | |||
$this->assertSame($expectedResult, $this->updater->check('https://myupdater.com/')); | |||
} | |||
public function testCheckWithEmptyValidXmlResponse() { | |||
$expectedResult = [ | |||
'version' => '', | |||
'versionstring' => '', | |||
'url' => '', | |||
'web' => '', | |||
]; | |||
$this->config | |||
->expects($this->at(0)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue(0)); | |||
$this->config | |||
->expects($this->at(1)) | |||
->method('setAppValue') | |||
->with('core', 'lastupdatedat', $this->isType('integer')); | |||
$this->config | |||
->expects($this->at(3)) | |||
->method('getAppValue') | |||
->with('core', 'installedat') | |||
->will($this->returnValue('installedat')); | |||
$this->config | |||
->expects($this->at(4)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue('lastupdatedat')); | |||
$updateXml = '<?xml version="1.0"?> | |||
<owncloud> | |||
<version></version> | |||
<versionstring></versionstring> | |||
<url></url> | |||
<web></web> | |||
</owncloud>'; | |||
$this->httpHelper | |||
->expects($this->once()) | |||
->method('getUrlContent') | |||
->with($this->buildUpdateUrl('https://updates.owncloud.com/server/')) | |||
->will($this->returnValue($updateXml)); | |||
$this->assertSame($expectedResult, $this->updater->check()); | |||
} | |||
public function testCheckWithEmptyInvalidXmlResponse() { | |||
$expectedResult = []; | |||
$this->config | |||
->expects($this->at(0)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue(0)); | |||
$this->config | |||
->expects($this->at(1)) | |||
->method('setAppValue') | |||
->with('core', 'lastupdatedat', $this->isType('integer')); | |||
$this->config | |||
->expects($this->at(3)) | |||
->method('getAppValue') | |||
->with('core', 'installedat') | |||
->will($this->returnValue('installedat')); | |||
$this->config | |||
->expects($this->at(4)) | |||
->method('getAppValue') | |||
->with('core', 'lastupdatedat') | |||
->will($this->returnValue('lastupdatedat')); | |||
$this->config | |||
->expects($this->at(5)) | |||
->method('setAppValue') | |||
->with('core', 'lastupdateResult', json_encode($expectedResult)); | |||
$updateXml = ''; | |||
$this->httpHelper | |||
->expects($this->once()) | |||
->method('getUrlContent') | |||
->with($this->buildUpdateUrl('https://updates.owncloud.com/server/')) | |||
->will($this->returnValue($updateXml)); | |||
$this->assertSame($expectedResult, $this->updater->check()); | |||
} | |||
} |