From da25ed997e25fb31fcb0b1fe992d38992ff071d7 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Tue, 19 Nov 2019 11:01:00 +0100 Subject: [PATCH] Do not check for updates if we have no internet Signed-off-by: Roeland Jago Douma --- lib/private/Updater/VersionCheck.php | 7 +- tests/lib/Updater/VersionCheckTest.php | 88 +++++++++++++++++++------- 2 files changed, 70 insertions(+), 25 deletions(-) diff --git a/lib/private/Updater/VersionCheck.php b/lib/private/Updater/VersionCheck.php index 3cbd7061fe0..446e04dc5ed 100644 --- a/lib/private/Updater/VersionCheck.php +++ b/lib/private/Updater/VersionCheck.php @@ -33,7 +33,7 @@ class VersionCheck { /** @var IClientService */ private $clientService; - + /** @var IConfig */ private $config; @@ -54,6 +54,11 @@ class VersionCheck { * @return array|bool */ public function check() { + // If this server is set to have no internet connection this is all not needed + if (!$this->config->getSystemValueBool('has_internet_connection', true)) { + return false; + } + // 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); diff --git a/tests/lib/Updater/VersionCheckTest.php b/tests/lib/Updater/VersionCheckTest.php index 6da4fd2c3b2..eef16eeb520 100644 --- a/tests/lib/Updater/VersionCheckTest.php +++ b/tests/lib/Updater/VersionCheckTest.php @@ -67,11 +67,16 @@ class VersionCheckTest extends \Test\TestCase { $this->config ->expects($this->at(0)) + ->method('getSystemValueBool') + ->with('has_internet_connection', true) + ->willReturn(true); + $this->config + ->expects($this->at(1)) ->method('getAppValue') ->with('core', 'lastupdatedat') ->will($this->returnValue(time())); $this->config - ->expects($this->at(1)) + ->expects($this->at(2)) ->method('getAppValue') ->with('core', 'lastupdateResult') ->will($this->returnValue(json_encode($expectedResult))); @@ -92,30 +97,35 @@ class VersionCheckTest extends \Test\TestCase { $this->config ->expects($this->at(0)) + ->method('getSystemValueBool') + ->with('has_internet_connection', true) + ->willReturn(true); + $this->config + ->expects($this->at(1)) ->method('getAppValue') ->with('core', 'lastupdatedat') ->will($this->returnValue(0)); $this->config - ->expects($this->at(1)) + ->expects($this->at(2)) ->method('getSystemValue') ->with('updater.server.url', 'https://updates.nextcloud.com/updater_server/') ->willReturnArgument(1); $this->config - ->expects($this->at(2)) + ->expects($this->at(3)) ->method('setAppValue') ->with('core', 'lastupdatedat', $this->isType('integer')); $this->config - ->expects($this->at(4)) + ->expects($this->at(5)) ->method('getAppValue') ->with('core', 'installedat') ->will($this->returnValue('installedat')); $this->config - ->expects($this->at(5)) + ->expects($this->at(6)) ->method('getAppValue') ->with('core', 'lastupdatedat') ->will($this->returnValue('lastupdatedat')); $this->config - ->expects($this->at(6)) + ->expects($this->at(7)) ->method('setAppValue') ->with('core', 'lastupdateResult', json_encode($expectedResult)); @@ -140,30 +150,35 @@ class VersionCheckTest extends \Test\TestCase { public function testCheckWithInvalidXml() { $this->config ->expects($this->at(0)) + ->method('getSystemValueBool') + ->with('has_internet_connection', true) + ->willReturn(true); + $this->config + ->expects($this->at(1)) ->method('getAppValue') ->with('core', 'lastupdatedat') ->will($this->returnValue(0)); $this->config - ->expects($this->at(1)) + ->expects($this->at(2)) ->method('getSystemValue') ->with('updater.server.url', 'https://updates.nextcloud.com/updater_server/') ->willReturnArgument(1); $this->config - ->expects($this->at(2)) + ->expects($this->at(3)) ->method('setAppValue') ->with('core', 'lastupdatedat', $this->isType('integer')); $this->config - ->expects($this->at(4)) + ->expects($this->at(5)) ->method('getAppValue') ->with('core', 'installedat') ->will($this->returnValue('installedat')); $this->config - ->expects($this->at(5)) + ->expects($this->at(6)) ->method('getAppValue') ->with('core', 'lastupdatedat') ->will($this->returnValue('lastupdatedat')); $this->config - ->expects($this->at(6)) + ->expects($this->at(7)) ->method('setAppValue') ->with('core', 'lastupdateResult', '[]'); @@ -190,25 +205,30 @@ class VersionCheckTest extends \Test\TestCase { $this->config ->expects($this->at(0)) + ->method('getSystemValueBool') + ->with('has_internet_connection', true) + ->willReturn(true); + $this->config + ->expects($this->at(1)) ->method('getAppValue') ->with('core', 'lastupdatedat') ->will($this->returnValue(0)); $this->config - ->expects($this->at(1)) + ->expects($this->at(2)) ->method('getSystemValue') ->with('updater.server.url', 'https://updates.nextcloud.com/updater_server/') ->willReturnArgument(1); $this->config - ->expects($this->at(2)) + ->expects($this->at(3)) ->method('setAppValue') ->with('core', 'lastupdatedat', $this->isType('integer')); $this->config - ->expects($this->at(4)) + ->expects($this->at(5)) ->method('getAppValue') ->with('core', 'installedat') ->will($this->returnValue('installedat')); $this->config - ->expects($this->at(5)) + ->expects($this->at(6)) ->method('getAppValue') ->with('core', 'lastupdatedat') ->will($this->returnValue('lastupdatedat')); @@ -235,30 +255,35 @@ class VersionCheckTest extends \Test\TestCase { $this->config ->expects($this->at(0)) + ->method('getSystemValueBool') + ->with('has_internet_connection', true) + ->willReturn(true); + $this->config + ->expects($this->at(1)) ->method('getAppValue') ->with('core', 'lastupdatedat') ->will($this->returnValue(0)); $this->config - ->expects($this->at(1)) + ->expects($this->at(2)) ->method('getSystemValue') ->with('updater.server.url', 'https://updates.nextcloud.com/updater_server/') ->willReturnArgument(1); $this->config - ->expects($this->at(2)) + ->expects($this->at(3)) ->method('setAppValue') ->with('core', 'lastupdatedat', $this->isType('integer')); $this->config - ->expects($this->at(4)) + ->expects($this->at(5)) ->method('getAppValue') ->with('core', 'installedat') ->will($this->returnValue('installedat')); $this->config - ->expects($this->at(5)) + ->expects($this->at(6)) ->method('getAppValue') ->with('core', 'lastupdatedat') ->will($this->returnValue('lastupdatedat')); $this->config - ->expects($this->at(6)) + ->expects($this->at(7)) ->method('setAppValue') ->with('core', 'lastupdateResult', json_encode($expectedResult)); @@ -285,25 +310,30 @@ class VersionCheckTest extends \Test\TestCase { $this->config ->expects($this->at(0)) + ->method('getSystemValueBool') + ->with('has_internet_connection', true) + ->willReturn(true); + $this->config + ->expects($this->at(1)) ->method('getAppValue') ->with('core', 'lastupdatedat') ->will($this->returnValue(0)); $this->config - ->expects($this->at(1)) + ->expects($this->at(2)) ->method('getSystemValue') ->with('updater.server.url', 'https://updates.nextcloud.com/updater_server/') ->willReturnArgument(1); $this->config - ->expects($this->at(2)) + ->expects($this->at(3)) ->method('setAppValue') ->with('core', 'lastupdatedat', $this->isType('integer')); $this->config - ->expects($this->at(4)) + ->expects($this->at(5)) ->method('getAppValue') ->with('core', 'installedat') ->will($this->returnValue('installedat')); $this->config - ->expects($this->at(5)) + ->expects($this->at(6)) ->method('getAppValue') ->with('core', 'lastupdatedat') ->will($this->returnValue('lastupdatedat')); @@ -324,4 +354,14 @@ class VersionCheckTest extends \Test\TestCase { $this->assertSame($expectedResult, $this->updater->check()); } + + public function testNoInternet() { + $this->config + ->expects($this->at(0)) + ->method('getSystemValueBool') + ->with('has_internet_connection', true) + ->willReturn(false); + + $this->assertFalse($this->updater->check()); + } }