aboutsummaryrefslogtreecommitdiffstats
path: root/tests/lib
diff options
context:
space:
mode:
authorLukas Reschke <lukas@owncloud.com>2015-06-28 11:25:28 +0200
committerLukas Reschke <lukas@owncloud.com>2015-06-28 11:25:28 +0200
commit04fe9e05f0414076cefc99b03faf7896b6f3ec14 (patch)
tree65bd87e23dd0ee117896379b6a429578124b579b /tests/lib
parent4d565a84475bca92b851c9ca39b96cda9ff9b18a (diff)
downloadnextcloud-server-04fe9e05f0414076cefc99b03faf7896b6f3ec14.tar.gz
nextcloud-server-04fe9e05f0414076cefc99b03faf7896b6f3ec14.zip
Use new updater URL + add unit tests
Uses the new updater url "https://updates.owncloud.com/server/"
Diffstat (limited to 'tests/lib')
-rw-r--r--tests/lib/updater.php378
1 files changed, 305 insertions, 73 deletions
diff --git a/tests/lib/updater.php b/tests/lib/updater.php
index 13b45b3d8e7..9935d7d11da 100644
--- a/tests/lib/updater.php
+++ b/tests/lib/updater.php
@@ -1,107 +1,339 @@
<?php
/**
- * Copyright (c) 2014 Lukas Reschke <lukas@owncloud.com>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
+ * @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 OCP\IConfig;
+use OCP\ILogger;
+
class UpdaterTest extends \Test\TestCase {
+ /** @var IConfig */
+ private $config;
+ /** @var HTTPHelper */
+ private $httpHelper;
+ /** @var ILogger */
+ private $logger;
+ /** @var Updater */
+ private $updater;
- public function versionCompatibilityTestData() {
- return array(
- array('1.0.0.0', '2.2.0', true),
- array('1.1.1.1', '2.0.0', true),
- array('5.0.3', '4.0.3', false),
- array('12.0.3', '13.4.5', true),
- array('1', '2', true),
- array('2', '2', true),
- array('6.0.5', '6.0.6', true),
- array('5.0.6', '7.0.4', false)
+ public function setUp() {
+ parent::setUp();
+ $this->config = $this->getMockBuilder('\\OCP\\IConfig')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $this->httpHelper = $this->getMockBuilder('\\OC\\HTTPHelper')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $this->logger = $this->getMockBuilder('\\OCP\\ILogger')
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $this->updater = new Updater(
+ $this->httpHelper,
+ $this->config,
+ $this->logger
);
}
/**
+ * @return array
+ */
+ public function versionCompatibilityTestData() {
+ return [
+ ['1.0.0.0', '2.2.0', true],
+ ['1.1.1.1', '2.0.0', true],
+ ['5.0.3', '4.0.3', false],
+ ['12.0.3', '13.4.5', true],
+ ['1', '2', true],
+ ['2', '2', true],
+ ['6.0.5', '6.0.6', true],
+ ['5.0.6', '7.0.4', false],
+ ];
+ }
+
+ public function testSetSimulateStepEnabled() {
+ $this->updater->setSimulateStepEnabled(true);
+ $this->assertSame(true, $this->invokePrivate($this->updater, 'simulateStepEnabled'));
+ $this->updater->setSimulateStepEnabled(false);
+ $this->assertSame(false, $this->invokePrivate($this->updater, 'simulateStepEnabled'));
+ }
+
+ public function testSetUpdateStepEnabled() {
+ $this->updater->setUpdateStepEnabled(true);
+ $this->assertSame(true, $this->invokePrivate($this->updater, 'updateStepEnabled'));
+ $this->updater->setUpdateStepEnabled(false);
+ $this->assertSame(false, $this->invokePrivate($this->updater, 'updateStepEnabled'));
+ }
+
+ public function testSetSkip3rdPartyAppsDisable() {
+ $this->updater->setSkip3rdPartyAppsDisable(true);
+ $this->assertSame(true, $this->invokePrivate($this->updater, 'skip3rdPartyAppsDisable'));
+ $this->updater->setSkip3rdPartyAppsDisable(false);
+ $this->assertSame(false, $this->invokePrivate($this->updater, 'skip3rdPartyAppsDisable'));
+ }
+
+ /**
* @dataProvider versionCompatibilityTestData
+ *
+ * @param string $oldVersion
+ * @param string $newVersion
+ * @param bool $result
*/
public function testIsUpgradePossible($oldVersion, $newVersion, $result) {
- $updater = new Updater(\OC::$server->getHTTPHelper(), \OC::$server->getConfig());
+ $updater = new Updater($this->httpHelper, $this->config);
$this->assertSame($result, $updater->isUpgradePossible($oldVersion, $newVersion));
}
- public function testBrokenXmlResponse(){
- $invalidUpdater = $this->getUpdaterMock('OMG!');
- $invalidResult = $invalidUpdater->check();
- $this->assertEmpty($invalidResult);
+ 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 testEmptyResponse(){
- $emptyUpdater = $this->getUpdaterMock('');
- $emptyResult = $emptyUpdater->check();
- $this->assertEmpty($emptyResult);
+ 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',
+ ];
- // Error while fetching new contents e.g. too many redirects
- $falseUpdater = $this->getUpdaterMock(false);
- $falseResult = $falseUpdater->check();
- $this->assertEmpty($falseResult);
+ $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', time());
+ $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('https://updates.owncloud.com/server/?version=8x1x0x7xinstalledatxlastupdatedatxgitxEnterprisex')
+ ->will($this->returnValue($updateXml));
+
+ $this->assertSame($expectedResult, $this->updater->check());
}
- public function testValidEmptyXmlResponse(){
- $updater = $this->getUpdaterMock(
- '<?xml version="1.0"?><owncloud><version></version><versionstring></versionstring><url></url><web></web></owncloud>'
- );
- $result = array_map('strval', $updater->check());
-
- $this->assertArrayHasKey('version', $result);
- $this->assertArrayHasKey('versionstring', $result);
- $this->assertArrayHasKey('url', $result);
- $this->assertArrayHasKey('web', $result);
- $this->assertEmpty($result['version']);
- $this->assertEmpty($result['versionstring']);
- $this->assertEmpty($result['url']);
- $this->assertEmpty($result['web']);
+ 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', time());
+ $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('https://updates.owncloud.com/server/?version=8x1x0x7xinstalledatxlastupdatedatxgitxEnterprisex')
+ ->will($this->returnValue($updateXml));
+
+ $this->assertSame([], $this->updater->check());
}
- public function testValidUpdateResponse(){
- $newUpdater = $this->getUpdaterMock(
- '<?xml version="1.0"?>
+ 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', time());
+ $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>7.0.3.4</version>
- <versionstring>ownCloud 7.0.3</versionstring>
- <url>http://download.owncloud.org/community/owncloud-7.0.3.zip</url>
- <web>http://owncloud.org/</web>
-</owncloud>'
- );
- $newResult = array_map('strval', $newUpdater->check());
-
- $this->assertArrayHasKey('version', $newResult);
- $this->assertArrayHasKey('versionstring', $newResult);
- $this->assertArrayHasKey('url', $newResult);
- $this->assertArrayHasKey('web', $newResult);
- $this->assertEquals('7.0.3.4', $newResult['version']);
- $this->assertEquals('ownCloud 7.0.3', $newResult['versionstring']);
- $this->assertEquals('http://download.owncloud.org/community/owncloud-7.0.3.zip', $newResult['url']);
- $this->assertEquals('http://owncloud.org/', $newResult['web']);
+ <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('https://myupdater.com/?version=8x1x0x7xinstalledatxlastupdatedatxgitxEnterprisex')
+ ->will($this->returnValue($updateXml));
+
+ $this->assertSame($expectedResult, $this->updater->check('https://myupdater.com/'));
}
- protected function getUpdaterMock($content){
- // Invalidate cache
- $mockedConfig = $this->getMockBuilder('\OCP\IConfig')
- ->disableOriginalConstructor()
- ->getMock()
- ;
+ public function testCheckWithEmptyValidXmlResponse() {
+ $expectedResult = [
+ 'version' => '',
+ 'versionstring' => '',
+ 'url' => '',
+ 'web' => '',
+ ];
- $clientService = $this->getMock('\OCP\Http\Client\IClientService');
- $mockedHTTPHelper = $this->getMockBuilder('\OC\HTTPHelper')
- ->setConstructorArgs([\OC::$server->getConfig(), $clientService])
- ->getMock()
- ;
+ $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', time());
+ $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'));
- $mockedHTTPHelper->expects($this->once())->method('getUrlContent')->will($this->returnValue($content));
+ $updateXml = '<?xml version="1.0"?>
+<owncloud>
+ <version></version>
+ <versionstring></versionstring>
+ <url></url>
+ <web></web>
+</owncloud>';
+ $this->httpHelper
+ ->expects($this->once())
+ ->method('getUrlContent')
+ ->with('https://updates.owncloud.com/server/?version=8x1x0x7xinstalledatxlastupdatedatxgitxEnterprisex')
+ ->will($this->returnValue($updateXml));
- return new Updater($mockedHTTPHelper, $mockedConfig);
+ $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', time());
+ $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('https://updates.owncloud.com/server/?version=8x1x0x7xinstalledatxlastupdatedatxgitxEnterprisex')
+ ->will($this->returnValue($updateXml));
+
+ $this->assertSame($expectedResult, $this->updater->check());
+ }
}