Cache final result of update check
If the parsed data is not a valid response we should not cache it and only cache the preprocessed result set. Fixes #7442 Signed-off-by: Morris Jobke <hey@morrisjobke.de>
This commit is contained in:
parent
3da92a9a78
commit
1beffa058a
|
@ -101,12 +101,10 @@ class VersionCheck {
|
||||||
} else {
|
} else {
|
||||||
libxml_clear_errors();
|
libxml_clear_errors();
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
$data = [];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cache the result
|
// Cache the result
|
||||||
$this->config->setAppValue('core', 'lastupdateResult', json_encode($data));
|
$this->config->setAppValue('core', 'lastupdateResult', json_encode($tmp));
|
||||||
return $tmp;
|
return $tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -161,7 +161,7 @@ class VersionCheckTest extends \Test\TestCase {
|
||||||
$this->config
|
$this->config
|
||||||
->expects($this->at(6))
|
->expects($this->at(6))
|
||||||
->method('setAppValue')
|
->method('setAppValue')
|
||||||
->with('core', 'lastupdateResult', 'false');
|
->with('core', 'lastupdateResult', '[]');
|
||||||
|
|
||||||
$updateXml = 'Invalid XML Response!';
|
$updateXml = 'Invalid XML Response!';
|
||||||
$this->updater
|
$this->updater
|
||||||
|
@ -265,4 +265,55 @@ class VersionCheckTest extends \Test\TestCase {
|
||||||
|
|
||||||
$this->assertSame($expectedResult, $this->updater->check());
|
$this->assertSame($expectedResult, $this->updater->check());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testCheckWithMissingAttributeXmlResponse() {
|
||||||
|
$expectedResult = [
|
||||||
|
'version' => '',
|
||||||
|
'versionstring' => '',
|
||||||
|
'url' => '',
|
||||||
|
'web' => '',
|
||||||
|
'autoupdater' => '',
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->config
|
||||||
|
->expects($this->at(0))
|
||||||
|
->method('getAppValue')
|
||||||
|
->with('core', 'lastupdatedat')
|
||||||
|
->will($this->returnValue(0));
|
||||||
|
$this->config
|
||||||
|
->expects($this->at(1))
|
||||||
|
->method('getSystemValue')
|
||||||
|
->with('updater.server.url', 'https://updates.nextcloud.com/updater_server/')
|
||||||
|
->willReturnArgument(1);
|
||||||
|
$this->config
|
||||||
|
->expects($this->at(2))
|
||||||
|
->method('setAppValue')
|
||||||
|
->with('core', 'lastupdatedat', $this->isType('integer'));
|
||||||
|
$this->config
|
||||||
|
->expects($this->at(4))
|
||||||
|
->method('getAppValue')
|
||||||
|
->with('core', 'installedat')
|
||||||
|
->will($this->returnValue('installedat'));
|
||||||
|
$this->config
|
||||||
|
->expects($this->at(5))
|
||||||
|
->method('getAppValue')
|
||||||
|
->with('core', 'lastupdatedat')
|
||||||
|
->will($this->returnValue('lastupdatedat'));
|
||||||
|
|
||||||
|
// missing autoupdater element should still not fail
|
||||||
|
$updateXml = '<?xml version="1.0"?>
|
||||||
|
<owncloud>
|
||||||
|
<version></version>
|
||||||
|
<versionstring></versionstring>
|
||||||
|
<url></url>
|
||||||
|
<web></web>
|
||||||
|
</owncloud>';
|
||||||
|
$this->updater
|
||||||
|
->expects($this->once())
|
||||||
|
->method('getUrlContent')
|
||||||
|
->with($this->buildUpdateUrl('https://updates.nextcloud.com/updater_server/'))
|
||||||
|
->will($this->returnValue($updateXml));
|
||||||
|
|
||||||
|
$this->assertSame($expectedResult, $this->updater->check());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue