mirror of
https://github.com/nextcloud/server.git
synced 2026-02-20 00:12:30 -05:00
Merge pull request #29235 from nextcloud/feat/appstore/enterprise
This commit is contained in:
commit
b6a3ba136c
6 changed files with 33 additions and 10 deletions
|
|
@ -44,7 +44,7 @@ class AppFetcher extends Fetcher {
|
|||
private $compareVersion;
|
||||
|
||||
/** @var IRegistry */
|
||||
private $registry;
|
||||
protected $registry;
|
||||
|
||||
/** @var bool */
|
||||
private $ignoreMaxVersion;
|
||||
|
|
@ -61,7 +61,8 @@ class AppFetcher extends Fetcher {
|
|||
$clientService,
|
||||
$timeFactory,
|
||||
$config,
|
||||
$logger
|
||||
$logger,
|
||||
$registry
|
||||
);
|
||||
|
||||
$this->compareVersion = $compareVersion;
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ use OC\Files\AppData\Factory;
|
|||
use OCP\AppFramework\Utility\ITimeFactory;
|
||||
use OCP\Http\Client\IClientService;
|
||||
use OCP\IConfig;
|
||||
use OCP\Support\Subscription\IRegistry;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
class CategoryFetcher extends Fetcher {
|
||||
|
|
@ -37,14 +38,17 @@ class CategoryFetcher extends Fetcher {
|
|||
IClientService $clientService,
|
||||
ITimeFactory $timeFactory,
|
||||
IConfig $config,
|
||||
LoggerInterface $logger) {
|
||||
LoggerInterface $logger,
|
||||
IRegistry $registry) {
|
||||
parent::__construct(
|
||||
$appDataFactory,
|
||||
$clientService,
|
||||
$timeFactory,
|
||||
$config,
|
||||
$logger
|
||||
$logger,
|
||||
$registry
|
||||
);
|
||||
|
||||
$this->fileName = 'categories.json';
|
||||
$this->endpointName = 'categories.json';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ use OCP\Files\IAppData;
|
|||
use OCP\Files\NotFoundException;
|
||||
use OCP\Http\Client\IClientService;
|
||||
use OCP\IConfig;
|
||||
use OCP\Support\Subscription\IRegistry;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
abstract class Fetcher {
|
||||
|
|
@ -54,6 +55,9 @@ abstract class Fetcher {
|
|||
protected $config;
|
||||
/** @var LoggerInterface */
|
||||
protected $logger;
|
||||
/** @var IRegistry */
|
||||
protected $registry;
|
||||
|
||||
/** @var string */
|
||||
protected $fileName;
|
||||
/** @var string */
|
||||
|
|
@ -67,12 +71,14 @@ abstract class Fetcher {
|
|||
IClientService $clientService,
|
||||
ITimeFactory $timeFactory,
|
||||
IConfig $config,
|
||||
LoggerInterface $logger) {
|
||||
LoggerInterface $logger,
|
||||
IRegistry $registry) {
|
||||
$this->appData = $appDataFactory->get('appstore');
|
||||
$this->clientService = $clientService;
|
||||
$this->timeFactory = $timeFactory;
|
||||
$this->config = $config;
|
||||
$this->logger = $logger;
|
||||
$this->registry = $registry;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -103,6 +109,12 @@ abstract class Fetcher {
|
|||
];
|
||||
}
|
||||
|
||||
// If we have a valid subscription key, send it to the appstore
|
||||
$subscriptionKey = $this->config->getAppValue('support', 'subscription_key');
|
||||
if ($this->registry->delegateHasValidSubscription() && $subscriptionKey) {
|
||||
$options['headers']['X-NC-Subscription-Key'] = $subscriptionKey;
|
||||
}
|
||||
|
||||
$client = $this->clientService->newClient();
|
||||
try {
|
||||
$response = $client->get($this->getEndpoint(), $options);
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ class AppFetcherTest extends TestCase {
|
|||
protected $compareVersion;
|
||||
/** @var LoggerInterface|\PHPUnit\Framework\MockObject\MockObject */
|
||||
protected $logger;
|
||||
/** @var IRegistry */
|
||||
/** @var IRegistry|\PHPUnit\Framework\MockObject\MockObject */
|
||||
protected $registry;
|
||||
/** @var AppFetcher */
|
||||
protected $fetcher;
|
||||
|
|
@ -2067,7 +2067,7 @@ EJL3BaQAQaASSsvFrcozYxrQG4VzEg==
|
|||
$this->assertEquals(self::$expectedResponse['data'], $this->fetcher->get());
|
||||
}
|
||||
|
||||
public function testGetWhitelist() {
|
||||
public function testGetAppsAllowlist() {
|
||||
$this->config->method('getSystemValue')
|
||||
->willReturnCallback(function ($key, $default) {
|
||||
if ($key === 'appstoreenabled') {
|
||||
|
|
@ -2082,7 +2082,7 @@ EJL3BaQAQaASSsvFrcozYxrQG4VzEg==
|
|||
return $default;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$file = $this->createMock(ISimpleFile::class);
|
||||
$folder = $this->createMock(ISimpleFolder::class);
|
||||
$folder
|
||||
|
|
@ -2107,6 +2107,7 @@ EJL3BaQAQaASSsvFrcozYxrQG4VzEg==
|
|||
->willReturn($client);
|
||||
$response = $this->createMock(IResponse::class);
|
||||
$client
|
||||
->expects($this->once())
|
||||
->method('get')
|
||||
->with('https://custom.appsstore.endpoint/api/v1/apps.json')
|
||||
->willReturn($response);
|
||||
|
|
@ -2123,7 +2124,7 @@ EJL3BaQAQaASSsvFrcozYxrQG4VzEg==
|
|||
->willReturn(1234);
|
||||
|
||||
$this->registry
|
||||
->expects($this->once())
|
||||
->expects($this->exactly(2))
|
||||
->method('delegateHasValidSubscription')
|
||||
->willReturn(true);
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,8 @@ class CategoryFetcherTest extends FetcherBase {
|
|||
$this->clientService,
|
||||
$this->timeFactory,
|
||||
$this->config,
|
||||
$this->logger
|
||||
$this->logger,
|
||||
$this->registry
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ use OCP\Http\Client\IClient;
|
|||
use OCP\Http\Client\IClientService;
|
||||
use OCP\Http\Client\IResponse;
|
||||
use OCP\IConfig;
|
||||
use OCP\Support\Subscription\IRegistry;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Test\TestCase;
|
||||
|
||||
|
|
@ -49,6 +50,8 @@ abstract class FetcherBase extends TestCase {
|
|||
protected $config;
|
||||
/** @var LoggerInterface|\PHPUnit\Framework\MockObject\MockObject */
|
||||
protected $logger;
|
||||
/** @var IRegistry|\PHPUnit\Framework\MockObject\MockObject */
|
||||
protected $registry;
|
||||
/** @var Fetcher */
|
||||
protected $fetcher;
|
||||
/** @var string */
|
||||
|
|
@ -68,6 +71,7 @@ abstract class FetcherBase extends TestCase {
|
|||
$this->timeFactory = $this->createMock(ITimeFactory::class);
|
||||
$this->config = $this->createMock(IConfig::class);
|
||||
$this->logger = $this->createMock(LoggerInterface::class);
|
||||
$this->registry = $this->createMock(IRegistry::class);
|
||||
}
|
||||
|
||||
public function testGetWithAlreadyExistingFileAndUpToDateTimestampAndVersion() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue