Browse Source

Make update server URL configurable

Currently testing the updates is a big problem and not really super easy possible. Since we now have a new updater server we should also make this configurable so that people can properly test updates.
tags/v9.1.0beta1
Lukas Reschke 8 years ago
parent
commit
8b428d84c0
No account linked to committer's email address
3 changed files with 38 additions and 65 deletions
  1. 5
    0
      config/config.sample.php
  2. 2
    6
      lib/private/Updater/VersionCheck.php
  3. 31
    59
      tests/lib/updater/versioncheck.php

+ 5
- 0
config/config.sample.php View File

@@ -471,6 +471,11 @@ $CONFIG = array(
*/
'updatechecker' => true,

/**
* URL that ownCloud should use to look for updates
*/
'updater.server.url' => 'https://updates.owncloud.com/server/',

/**
* Is ownCloud connected to the Internet or running in a closed network?
*/

+ 2
- 6
lib/private/Updater/VersionCheck.php View File

@@ -61,19 +61,15 @@ class VersionCheck {
/**
* 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) {

public function check() {
// 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/';
}
$updaterUrl = $this->config->getSystemValue('updater.server.url', 'https://updates.owncloud.com/server/');

$this->config->setAppValue('core', 'lastupdatedat', time());


+ 31
- 59
tests/lib/updater/versioncheck.php View File

@@ -90,20 +90,25 @@ class VersionCheckTest extends \Test\TestCase {
->will($this->returnValue(0));
$this->config
->expects($this->at(1))
->method('getSystemValue')
->with('updater.server.url', 'https://updates.owncloud.com/server/')
->willReturn('https://updates.owncloud.com/server/');
$this->config
->expects($this->at(2))
->method('setAppValue')
->with('core', 'lastupdatedat', $this->isType('integer'));
$this->config
->expects($this->at(3))
->expects($this->at(4))
->method('getAppValue')
->with('core', 'installedat')
->will($this->returnValue('installedat'));
$this->config
->expects($this->at(4))
->expects($this->at(5))
->method('getAppValue')
->with('core', 'lastupdatedat')
->will($this->returnValue('lastupdatedat'));
$this->config
->expects($this->at(5))
->expects($this->at(6))
->method('setAppValue')
->with('core', 'lastupdateResult', json_encode($expectedResult));

@@ -131,20 +136,25 @@ class VersionCheckTest extends \Test\TestCase {
->will($this->returnValue(0));
$this->config
->expects($this->at(1))
->method('getSystemValue')
->with('updater.server.url', 'https://updates.owncloud.com/server/')
->willReturn('https://updates.owncloud.com/server/');
$this->config
->expects($this->at(2))
->method('setAppValue')
->with('core', 'lastupdatedat', $this->isType('integer'));
$this->config
->expects($this->at(3))
->expects($this->at(4))
->method('getAppValue')
->with('core', 'installedat')
->will($this->returnValue('installedat'));
$this->config
->expects($this->at(4))
->expects($this->at(5))
->method('getAppValue')
->with('core', 'lastupdatedat')
->will($this->returnValue('lastupdatedat'));
$this->config
->expects($this->at(5))
->expects($this->at(6))
->method('setAppValue')
->with('core', 'lastupdateResult', 'false');

@@ -158,54 +168,6 @@ class VersionCheckTest extends \Test\TestCase {
$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->updater
->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' => '',
@@ -221,15 +183,20 @@ class VersionCheckTest extends \Test\TestCase {
->will($this->returnValue(0));
$this->config
->expects($this->at(1))
->method('getSystemValue')
->with('updater.server.url', 'https://updates.owncloud.com/server/')
->willReturn('https://updates.owncloud.com/server/');
$this->config
->expects($this->at(2))
->method('setAppValue')
->with('core', 'lastupdatedat', $this->isType('integer'));
$this->config
->expects($this->at(3))
->expects($this->at(4))
->method('getAppValue')
->with('core', 'installedat')
->will($this->returnValue('installedat'));
$this->config
->expects($this->at(4))
->expects($this->at(5))
->method('getAppValue')
->with('core', 'lastupdatedat')
->will($this->returnValue('lastupdatedat'));
@@ -260,20 +227,25 @@ class VersionCheckTest extends \Test\TestCase {
->will($this->returnValue(0));
$this->config
->expects($this->at(1))
->method('getSystemValue')
->with('updater.server.url', 'https://updates.owncloud.com/server/')
->willReturn('https://updates.owncloud.com/server/');
$this->config
->expects($this->at(2))
->method('setAppValue')
->with('core', 'lastupdatedat', $this->isType('integer'));
$this->config
->expects($this->at(3))
->expects($this->at(4))
->method('getAppValue')
->with('core', 'installedat')
->will($this->returnValue('installedat'));
$this->config
->expects($this->at(4))
->expects($this->at(5))
->method('getAppValue')
->with('core', 'lastupdatedat')
->will($this->returnValue('lastupdatedat'));
$this->config
->expects($this->at(5))
->expects($this->at(6))
->method('setAppValue')
->with('core', 'lastupdateResult', json_encode($expectedResult));


Loading…
Cancel
Save