mirror of
https://github.com/nextcloud/server.git
synced 2026-06-10 01:00:50 -04:00
Merge pull request #3287 from nextcloud/readd_appstoreenabled_switch
Add back appstoreenabled config switch
This commit is contained in:
commit
d0980bec73
4 changed files with 193 additions and 8 deletions
|
|
@ -69,6 +69,12 @@ abstract class Fetcher {
|
|||
* @return array
|
||||
*/
|
||||
protected function fetch($ETag, $content) {
|
||||
$appstoreenabled = $this->config->getSystemValue('appstoreenabled', true);
|
||||
|
||||
if (!$appstoreenabled) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$options = [];
|
||||
|
||||
if ($ETag !== '') {
|
||||
|
|
@ -102,7 +108,13 @@ abstract class Fetcher {
|
|||
*
|
||||
* @return array
|
||||
*/
|
||||
public function get() {
|
||||
public function get() {
|
||||
$appstoreenabled = $this->config->getSystemValue('appstoreenabled', true);
|
||||
|
||||
if (!$appstoreenabled) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$rootFolder = $this->appData->getFolder('/');
|
||||
|
||||
$ETag = '';
|
||||
|
|
@ -112,13 +124,14 @@ abstract class Fetcher {
|
|||
// File does already exists
|
||||
$file = $rootFolder->getFile($this->fileName);
|
||||
$jsonBlob = json_decode($file->getContent(), true);
|
||||
if(is_array($jsonBlob)) {
|
||||
if (is_array($jsonBlob)) {
|
||||
/*
|
||||
* If the timestamp is older than 300 seconds request the files new
|
||||
* If the version changed (update!) also refresh
|
||||
*/
|
||||
if((int)$jsonBlob['timestamp'] > ($this->timeFactory->getTime() - self::INVALIDATE_AFTER_SECONDS) &&
|
||||
isset($jsonBlob['ncversion']) && $jsonBlob['ncversion'] === $this->config->getSystemValue('version', '0.0.0')) {
|
||||
if ((int)$jsonBlob['timestamp'] > ($this->timeFactory->getTime() - self::INVALIDATE_AFTER_SECONDS) &&
|
||||
isset($jsonBlob['ncversion']) && $jsonBlob['ncversion'] === $this->config->getSystemValue('version', '0.0.0')
|
||||
) {
|
||||
return $jsonBlob['data'];
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -59,11 +59,10 @@ EOD;
|
|||
$this->config = $this->createMock(IConfig::class);
|
||||
|
||||
$this->config
|
||||
->expects($this->atLeastOnce())
|
||||
->expects($this->at(0))
|
||||
->method('getSystemValue')
|
||||
->with('version')
|
||||
->willReturn('11.0.0.2');
|
||||
|
||||
$this->fetcher = new AppFetcher(
|
||||
$this->appData,
|
||||
$this->clientService,
|
||||
|
|
@ -73,6 +72,27 @@ EOD;
|
|||
}
|
||||
|
||||
public function testGetWithFilter() {
|
||||
$this->config
|
||||
->expects($this->at(0))
|
||||
->method('getSystemValue')
|
||||
->with('appstoreenabled', true)
|
||||
->willReturn(true);
|
||||
$this->config
|
||||
->expects($this->at(1))
|
||||
->method('getSystemValue')
|
||||
->with('appstoreenabled', true)
|
||||
->willReturn(true);
|
||||
$this->config
|
||||
->expects($this->at(2))
|
||||
->method('getSystemValue')
|
||||
->with('version')
|
||||
->willReturn('11.0.0.2');
|
||||
$this->config
|
||||
->expects($this->at(3))
|
||||
->method('getSystemValue')
|
||||
->with('version')
|
||||
->willReturn('11.0.0.2');
|
||||
|
||||
$file = $this->createMock(ISimpleFile::class);
|
||||
$folder = $this->createMock(ISimpleFolder::class);
|
||||
$folder
|
||||
|
|
@ -1920,4 +1940,17 @@ EJL3BaQAQaASSsvFrcozYxrQG4VzEg==
|
|||
|
||||
$this->assertEquals($expected['data'], $this->fetcher->get());
|
||||
}
|
||||
|
||||
public function testAppstoreDisabled() {
|
||||
$this->config
|
||||
->expects($this->once())
|
||||
->method('getSystemValue')
|
||||
->with('appstoreenabled', true)
|
||||
->willReturn(false);
|
||||
$this->appData
|
||||
->expects($this->never())
|
||||
->method('getFolder');
|
||||
|
||||
$this->assertEquals([], $this->fetcher->get());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,4 +36,18 @@ class CategoryFetcherTest extends FetcherBase {
|
|||
$this->config
|
||||
);
|
||||
}
|
||||
|
||||
public function testAppstoreDisabled() {
|
||||
$this->config
|
||||
->expects($this->once())
|
||||
->method('getSystemValue')
|
||||
->with('appstoreenabled', true)
|
||||
->willReturn(false);
|
||||
$this->appData
|
||||
->expects($this->never())
|
||||
->method('getFolder');
|
||||
|
||||
$this->assertEquals([], $this->fetcher->get());
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,16 +55,22 @@ abstract class FetcherBase extends TestCase {
|
|||
$this->clientService = $this->createMock(IClientService::class);
|
||||
$this->timeFactory = $this->createMock(ITimeFactory::class);
|
||||
$this->config = $this->createMock(IConfig::class);
|
||||
}
|
||||
|
||||
public function testGetWithAlreadyExistingFileAndUpToDateTimestampAndVersion() {
|
||||
$this->config
|
||||
->expects($this->at(0))
|
||||
->method('getSystemValue')
|
||||
->with('appstoreenabled', true)
|
||||
->willReturn(true);
|
||||
$this->config
|
||||
->expects($this->at(1))
|
||||
->method('getSystemValue')
|
||||
->with(
|
||||
$this->equalTo('version'),
|
||||
$this->anything()
|
||||
)->willReturn('11.0.0.2');
|
||||
}
|
||||
|
||||
public function testGetWithAlreadyExistingFileAndUpToDateTimestampAndVersion() {
|
||||
$folder = $this->createMock(ISimpleFolder::class);
|
||||
$file = $this->createMock(ISimpleFile::class);
|
||||
$this->appData
|
||||
|
|
@ -95,6 +101,24 @@ abstract class FetcherBase extends TestCase {
|
|||
}
|
||||
|
||||
public function testGetWithNotExistingFileAndUpToDateTimestampAndVersion() {
|
||||
$this->config
|
||||
->expects($this->at(0))
|
||||
->method('getSystemValue')
|
||||
->with('appstoreenabled', true)
|
||||
->willReturn(true);
|
||||
$this->config
|
||||
->expects($this->at(1))
|
||||
->method('getSystemValue')
|
||||
->with('appstoreenabled', true)
|
||||
->willReturn(true);
|
||||
$this->config
|
||||
->expects($this->at(2))
|
||||
->method('getSystemValue')
|
||||
->with(
|
||||
$this->equalTo('version'),
|
||||
$this->anything()
|
||||
)->willReturn('11.0.0.2');
|
||||
|
||||
$folder = $this->createMock(ISimpleFolder::class);
|
||||
$file = $this->createMock(ISimpleFile::class);
|
||||
$this->appData
|
||||
|
|
@ -157,6 +181,24 @@ abstract class FetcherBase extends TestCase {
|
|||
}
|
||||
|
||||
public function testGetWithAlreadyExistingFileAndOutdatedTimestamp() {
|
||||
$this->config
|
||||
->expects($this->at(0))
|
||||
->method('getSystemValue')
|
||||
->with('appstoreenabled', true)
|
||||
->willReturn(true);
|
||||
$this->config
|
||||
->expects($this->at(1))
|
||||
->method('getSystemValue')
|
||||
->with('appstoreenabled', true)
|
||||
->willReturn(true);
|
||||
$this->config
|
||||
->expects($this->at(2))
|
||||
->method('getSystemValue')
|
||||
->with(
|
||||
$this->equalTo('version'),
|
||||
$this->anything()
|
||||
)->willReturn('11.0.0.2');
|
||||
|
||||
$folder = $this->createMock(ISimpleFolder::class);
|
||||
$file = $this->createMock(ISimpleFile::class);
|
||||
$this->appData
|
||||
|
|
@ -222,6 +264,24 @@ abstract class FetcherBase extends TestCase {
|
|||
}
|
||||
|
||||
public function testGetWithAlreadyExistingFileAndNoVersion() {
|
||||
$this->config
|
||||
->expects($this->at(0))
|
||||
->method('getSystemValue')
|
||||
->with('appstoreenabled', true)
|
||||
->willReturn(true);
|
||||
$this->config
|
||||
->expects($this->at(1))
|
||||
->method('getSystemValue')
|
||||
->with('appstoreenabled', true)
|
||||
->willReturn(true);
|
||||
$this->config
|
||||
->expects($this->at(2))
|
||||
->method('getSystemValue')
|
||||
->with(
|
||||
$this->equalTo('version'),
|
||||
$this->anything()
|
||||
)->willReturn('11.0.0.2');
|
||||
|
||||
$folder = $this->createMock(ISimpleFolder::class);
|
||||
$file = $this->createMock(ISimpleFile::class);
|
||||
$this->appData
|
||||
|
|
@ -283,6 +343,24 @@ abstract class FetcherBase extends TestCase {
|
|||
}
|
||||
|
||||
public function testGetWithAlreadyExistingFileAndOutdatedVersion() {
|
||||
$this->config
|
||||
->expects($this->at(0))
|
||||
->method('getSystemValue')
|
||||
->with('appstoreenabled', true)
|
||||
->willReturn(true);
|
||||
$this->config
|
||||
->expects($this->at(1))
|
||||
->method('getSystemValue')
|
||||
->with('appstoreenabled', true)
|
||||
->willReturn(true);
|
||||
$this->config
|
||||
->expects($this->at(2))
|
||||
->method('getSystemValue')
|
||||
->with(
|
||||
$this->equalTo('version'),
|
||||
$this->anything()
|
||||
)->willReturn('11.0.0.2');
|
||||
|
||||
$folder = $this->createMock(ISimpleFolder::class);
|
||||
$file = $this->createMock(ISimpleFile::class);
|
||||
$this->appData
|
||||
|
|
@ -343,6 +421,17 @@ abstract class FetcherBase extends TestCase {
|
|||
}
|
||||
|
||||
public function testGetWithExceptionInClient() {
|
||||
$this->config
|
||||
->expects($this->at(0))
|
||||
->method('getSystemValue')
|
||||
->with('appstoreenabled', true)
|
||||
->willReturn(true);
|
||||
$this->config
|
||||
->expects($this->at(1))
|
||||
->method('getSystemValue')
|
||||
->with('appstoreenabled', true)
|
||||
->willReturn(true);
|
||||
|
||||
$folder = $this->createMock(ISimpleFolder::class);
|
||||
$file = $this->createMock(ISimpleFile::class);
|
||||
$this->appData
|
||||
|
|
@ -378,6 +467,24 @@ abstract class FetcherBase extends TestCase {
|
|||
}
|
||||
|
||||
public function testGetMatchingETag() {
|
||||
$this->config
|
||||
->expects($this->at(0))
|
||||
->method('getSystemValue')
|
||||
->with('appstoreenabled', true)
|
||||
->willReturn(true);
|
||||
$this->config
|
||||
->expects($this->at(1))
|
||||
->method('getSystemValue')
|
||||
->with('appstoreenabled', true)
|
||||
->willReturn(true);
|
||||
$this->config
|
||||
->expects($this->at(2))
|
||||
->method('getSystemValue')
|
||||
->with(
|
||||
$this->equalTo('version'),
|
||||
$this->anything()
|
||||
)->willReturn('11.0.0.2');
|
||||
|
||||
$folder = $this->createMock(ISimpleFolder::class);
|
||||
$file = $this->createMock(ISimpleFile::class);
|
||||
$this->appData
|
||||
|
|
@ -447,6 +554,24 @@ abstract class FetcherBase extends TestCase {
|
|||
}
|
||||
|
||||
public function testGetNoMatchingETag() {
|
||||
$this->config
|
||||
->expects($this->at(0))
|
||||
->method('getSystemValue')
|
||||
->with('appstoreenabled', true)
|
||||
->willReturn(true);
|
||||
$this->config
|
||||
->expects($this->at(1))
|
||||
->method('getSystemValue')
|
||||
->with('appstoreenabled', true)
|
||||
->willReturn(true);
|
||||
$this->config
|
||||
->expects($this->at(2))
|
||||
->method('getSystemValue')
|
||||
->with(
|
||||
$this->equalTo('version'),
|
||||
$this->anything()
|
||||
)->willReturn('11.0.0.2');
|
||||
|
||||
$folder = $this->createMock(ISimpleFolder::class);
|
||||
$file = $this->createMock(ISimpleFile::class);
|
||||
$this->appData
|
||||
|
|
|
|||
Loading…
Reference in a new issue