aboutsummaryrefslogtreecommitdiffstats
path: root/tests/lib/Collaboration/Resources
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lib/Collaboration/Resources')
-rw-r--r--tests/lib/Collaboration/Resources/ManagerTest.php46
-rw-r--r--tests/lib/Collaboration/Resources/ProviderManagerTest.php98
2 files changed, 144 insertions, 0 deletions
diff --git a/tests/lib/Collaboration/Resources/ManagerTest.php b/tests/lib/Collaboration/Resources/ManagerTest.php
new file mode 100644
index 00000000000..0e4e42458e2
--- /dev/null
+++ b/tests/lib/Collaboration/Resources/ManagerTest.php
@@ -0,0 +1,46 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace Test\Collaboration\Resources;
+
+use OC\Collaboration\Resources\Manager;
+use OCP\Collaboration\Resources\IManager;
+use OCP\Collaboration\Resources\IProviderManager;
+use OCP\IDBConnection;
+use PHPUnit\Framework\MockObject\MockObject;
+use Psr\Log\LoggerInterface;
+use Test\TestCase;
+
+class ManagerTest extends TestCase {
+
+ protected LoggerInterface&MockObject $logger;
+ protected IProviderManager&MockObject $providerManager;
+ protected IManager $manager;
+
+ protected function setUp(): void {
+ parent::setUp();
+
+ $this->logger = $this->createMock(LoggerInterface::class);
+ $this->providerManager = $this->createMock(IProviderManager::class);
+
+ /** @var IDBConnection $connection */
+ $connection = $this->createMock(IDBConnection::class);
+ $this->manager = new Manager($connection, $this->providerManager, $this->logger);
+ }
+
+ public function testRegisterResourceProvider(): void {
+ $this->logger->expects($this->once())
+ ->method('debug')
+ ->with($this->equalTo('\OC\Collaboration\Resources\Manager::registerResourceProvider is deprecated'), $this->equalTo(['provider' => 'AwesomeResourceProvider']));
+ $this->providerManager->expects($this->once())
+ ->method('registerResourceProvider')
+ ->with($this->equalTo('AwesomeResourceProvider'));
+
+ $this->manager->registerResourceProvider('AwesomeResourceProvider');
+ }
+}
diff --git a/tests/lib/Collaboration/Resources/ProviderManagerTest.php b/tests/lib/Collaboration/Resources/ProviderManagerTest.php
new file mode 100644
index 00000000000..b063d89f06e
--- /dev/null
+++ b/tests/lib/Collaboration/Resources/ProviderManagerTest.php
@@ -0,0 +1,98 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace Test\Collaboration\Resources;
+
+use OC\Collaboration\Resources\ProviderManager;
+use OCA\Files\Collaboration\Resources\ResourceProvider;
+use OCP\AppFramework\QueryException;
+use OCP\Collaboration\Resources\IProviderManager;
+use OCP\IServerContainer;
+use Psr\Log\LoggerInterface;
+use Test\TestCase;
+
+class ProviderManagerTest extends TestCase {
+ /** @var IServerContainer */
+ protected $serverContainer;
+ /** @var LoggerInterface */
+ protected $logger;
+ /** @var IProviderManager */
+ protected $providerManager;
+
+ protected function setUp(): void {
+ parent::setUp();
+
+ $this->serverContainer = $this->createMock(IServerContainer::class);
+ $this->logger = $this->createMock(LoggerInterface::class);
+
+ $this->providerManager = new class($this->serverContainer, $this->logger) extends ProviderManager {
+ public function countProviders(): int {
+ return count($this->providers);
+ }
+ };
+ }
+
+ public function testRegisterResourceProvider(): void {
+ $this->providerManager->registerResourceProvider('AwesomeResourceProvider');
+ $this->assertSame(1, $this->providerManager->countProviders());
+ }
+
+ public function testGetResourceProvidersNoProvider(): void {
+ $this->assertCount(0, $this->providerManager->getResourceProviders());
+ }
+
+ public function testGetResourceProvidersValidProvider(): void {
+ $this->serverContainer->expects($this->once())
+ ->method('query')
+ ->with($this->equalTo(ResourceProvider::class))
+ ->willReturn($this->createMock(ResourceProvider::class));
+
+ $this->providerManager->registerResourceProvider(ResourceProvider::class);
+ $resourceProviders = $this->providerManager->getResourceProviders();
+
+ $this->assertCount(1, $resourceProviders);
+ $this->assertInstanceOf(ResourceProvider::class, $resourceProviders[0]);
+ }
+
+ public function testGetResourceProvidersInvalidProvider(): void {
+ $this->serverContainer->expects($this->once())
+ ->method('query')
+ ->with($this->equalTo('InvalidResourceProvider'))
+ ->willThrowException(new QueryException('A meaningful error message'));
+
+ $this->logger->expects($this->once())
+ ->method('error');
+
+ $this->providerManager->registerResourceProvider('InvalidResourceProvider');
+ $resourceProviders = $this->providerManager->getResourceProviders();
+
+ $this->assertCount(0, $resourceProviders);
+ }
+
+ public function testGetResourceProvidersValidAndInvalidProvider(): void {
+ $this->serverContainer->expects($this->exactly(2))
+ ->method('query')
+ ->willReturnCallback(function (string $service) {
+ if ($service === 'InvalidResourceProvider') {
+ throw new QueryException('A meaningful error message');
+ }
+ if ($service === ResourceProvider::class) {
+ return $this->createMock(ResourceProvider::class);
+ }
+ });
+
+ $this->logger->expects($this->once())
+ ->method('error');
+
+ $this->providerManager->registerResourceProvider('InvalidResourceProvider');
+ $this->providerManager->registerResourceProvider(ResourceProvider::class);
+ $resourceProviders = $this->providerManager->getResourceProviders();
+
+ $this->assertCount(1, $resourceProviders);
+ }
+}