aboutsummaryrefslogtreecommitdiffstats
path: root/apps/federatedfilesharing/tests
diff options
context:
space:
mode:
Diffstat (limited to 'apps/federatedfilesharing/tests')
-rw-r--r--apps/federatedfilesharing/tests/AddressHandlerTest.php99
-rw-r--r--apps/federatedfilesharing/tests/Controller/MountPublicLinkControllerTest.php119
-rw-r--r--apps/federatedfilesharing/tests/Controller/RequestHandlerControllerTest.php102
-rw-r--r--apps/federatedfilesharing/tests/FederatedShareProviderTest.php247
-rw-r--r--apps/federatedfilesharing/tests/NotificationsTest.php95
-rw-r--r--apps/federatedfilesharing/tests/Settings/AdminTest.php61
-rw-r--r--apps/federatedfilesharing/tests/TestCase.php47
-rw-r--r--apps/federatedfilesharing/tests/TokenHandlerTest.php16
-rw-r--r--apps/federatedfilesharing/tests/js/externalSpec.js241
9 files changed, 314 insertions, 713 deletions
diff --git a/apps/federatedfilesharing/tests/AddressHandlerTest.php b/apps/federatedfilesharing/tests/AddressHandlerTest.php
index dc89316746e..279bf485145 100644
--- a/apps/federatedfilesharing/tests/AddressHandlerTest.php
+++ b/apps/federatedfilesharing/tests/AddressHandlerTest.php
@@ -1,5 +1,6 @@
<?php
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -11,49 +12,39 @@ use OC\Federation\CloudIdManager;
use OCA\FederatedFileSharing\AddressHandler;
use OCP\Contacts\IManager;
use OCP\EventDispatcher\IEventDispatcher;
+use OCP\HintException;
use OCP\ICacheFactory;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\IUserManager;
+use PHPUnit\Framework\MockObject\MockObject;
class AddressHandlerTest extends \Test\TestCase {
- /** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
- protected $contactsManager;
-
- /** @var AddressHandler */
- private $addressHandler;
-
- /** @var IURLGenerator | \PHPUnit\Framework\MockObject\MockObject */
- private $urlGenerator;
-
- /** @var IL10N | \PHPUnit\Framework\MockObject\MockObject */
- private $il10n;
-
- /** @var CloudIdManager */
- private $cloudIdManager;
+ protected IManager&MockObject $contactsManager;
+ private IURLGenerator&MockObject $urlGenerator;
+ private IL10N&MockObject $il10n;
+ private CloudIdManager $cloudIdManager;
+ private AddressHandler $addressHandler;
protected function setUp(): void {
parent::setUp();
- $this->urlGenerator = $this->getMockBuilder(IURLGenerator::class)
- ->getMock();
- $this->il10n = $this->getMockBuilder(IL10N::class)
- ->getMock();
-
+ $this->urlGenerator = $this->createMock(IURLGenerator::class);
+ $this->il10n = $this->createMock(IL10N::class);
$this->contactsManager = $this->createMock(IManager::class);
$this->cloudIdManager = new CloudIdManager(
+ $this->createMock(ICacheFactory::class),
+ $this->createMock(IEventDispatcher::class),
$this->contactsManager,
$this->urlGenerator,
$this->createMock(IUserManager::class),
- $this->createMock(ICacheFactory::class),
- $this->createMock(IEventDispatcher::class)
);
$this->addressHandler = new AddressHandler($this->urlGenerator, $this->il10n, $this->cloudIdManager);
}
- public function dataTestSplitUserRemote() {
+ public static function dataTestSplitUserRemote(): array {
$userPrefix = ['user@name', 'username'];
$protocols = ['', 'http://', 'https://'];
$remotes = [
@@ -89,14 +80,8 @@ class AddressHandlerTest extends \Test\TestCase {
return $testCases;
}
- /**
- * @dataProvider dataTestSplitUserRemote
- *
- * @param string $remote
- * @param string $expectedUser
- * @param string $expectedUrl
- */
- public function testSplitUserRemote($remote, $expectedUser, $expectedUrl) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataTestSplitUserRemote')]
+ public function testSplitUserRemote(string $remote, string $expectedUser, string $expectedUrl): void {
$this->contactsManager->expects($this->any())
->method('search')
->willReturn([]);
@@ -106,7 +91,7 @@ class AddressHandlerTest extends \Test\TestCase {
$this->assertSame($expectedUrl, $remoteUrl);
}
- public function dataTestSplitUserRemoteError() {
+ public static function dataTestSplitUserRemoteError(): array {
return [
// Invalid path
['user@'],
@@ -124,33 +109,21 @@ class AddressHandlerTest extends \Test\TestCase {
];
}
- /**
- * @dataProvider dataTestSplitUserRemoteError
- *
- * @param string $id
- */
- public function testSplitUserRemoteError($id) {
- $this->expectException(\OCP\HintException::class);
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataTestSplitUserRemoteError')]
+ public function testSplitUserRemoteError(string $id): void {
+ $this->expectException(HintException::class);
$this->addressHandler->splitUserRemote($id);
}
- /**
- * @dataProvider dataTestCompareAddresses
- *
- * @param string $user1
- * @param string $server1
- * @param string $user2
- * @param string $server2
- * @param bool $expected
- */
- public function testCompareAddresses($user1, $server1, $user2, $server2, $expected) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataTestCompareAddresses')]
+ public function testCompareAddresses(string $user1, string $server1, string $user2, string $server2, bool $expected): void {
$this->assertSame($expected,
$this->addressHandler->compareAddresses($user1, $server1, $user2, $server2)
);
}
- public function dataTestCompareAddresses() {
+ public static function dataTestCompareAddresses(): array {
return [
['user1', 'http://server1', 'user1', 'http://server1', true],
['user1', 'https://server1', 'user1', 'http://server1', true],
@@ -170,37 +143,27 @@ class AddressHandlerTest extends \Test\TestCase {
];
}
- /**
- * @dataProvider dataTestRemoveProtocolFromUrl
- *
- * @param string $url
- * @param string $expectedResult
- */
- public function testRemoveProtocolFromUrl($url, $expectedResult) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataTestRemoveProtocolFromUrl')]
+ public function testRemoveProtocolFromUrl(string $url, string $expectedResult): void {
$result = $this->addressHandler->removeProtocolFromUrl($url);
$this->assertSame($expectedResult, $result);
}
- public function dataTestRemoveProtocolFromUrl() {
+ public static function dataTestRemoveProtocolFromUrl(): array {
return [
- ['http://owncloud.org', 'owncloud.org'],
- ['https://owncloud.org', 'owncloud.org'],
- ['owncloud.org', 'owncloud.org'],
+ ['http://example.tld', 'example.tld'],
+ ['https://example.tld', 'example.tld'],
+ ['example.tld', 'example.tld'],
];
}
- /**
- * @dataProvider dataTestUrlContainProtocol
- *
- * @param string $url
- * @param bool $expectedResult
- */
- public function testUrlContainProtocol($url, $expectedResult) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataTestUrlContainProtocol')]
+ public function testUrlContainProtocol(string $url, bool $expectedResult): void {
$result = $this->addressHandler->urlContainProtocol($url);
$this->assertSame($expectedResult, $result);
}
- public function dataTestUrlContainProtocol() {
+ public static function dataTestUrlContainProtocol(): array {
return [
['http://nextcloud.com', true],
['https://nextcloud.com', true],
diff --git a/apps/federatedfilesharing/tests/Controller/MountPublicLinkControllerTest.php b/apps/federatedfilesharing/tests/Controller/MountPublicLinkControllerTest.php
index 61487689cde..e99b59e82b8 100644
--- a/apps/federatedfilesharing/tests/Controller/MountPublicLinkControllerTest.php
+++ b/apps/federatedfilesharing/tests/Controller/MountPublicLinkControllerTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -7,6 +9,7 @@
namespace OCA\FederatedFileSharing\Tests\Controller;
use OC\Federation\CloudIdManager;
+use OC\Share20\Share;
use OCA\FederatedFileSharing\AddressHandler;
use OCA\FederatedFileSharing\Controller\MountPublicLinkController;
use OCA\FederatedFileSharing\FederatedShareProvider;
@@ -30,71 +33,42 @@ use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
class MountPublicLinkControllerTest extends \Test\TestCase {
- /** @var IContactsManager|MockObject */
- protected $contactsManager;
-
- /** @var MountPublicLinkController */
- private $controller;
-
- /** @var IRequest|MockObject */
- private $request;
-
- /** @var FederatedShareProvider|MockObject */
- private $federatedShareProvider;
-
- /** @var IManager|MockObject */
- private $shareManager;
-
- /** @var AddressHandler|MockObject */
- private $addressHandler;
-
- /** @var IRootFolder|MockObject */
- private $rootFolder;
-
- /** @var IUserManager|MockObject */
- private $userManager;
-
- /** @var ISession|MockObject */
- private $session;
-
- /** @var IL10N|MockObject */
- private $l10n;
-
- /** @var IUserSession|MockObject */
- private $userSession;
-
- /** @var IClientService|MockObject */
- private $clientService;
-
- /** @var IShare */
- private $share;
-
- /** @var ICloudIdManager */
- private $cloudIdManager;
+ protected IContactsManager&MockObject $contactsManager;
+ private IRequest&MockObject $request;
+ private FederatedShareProvider&MockObject $federatedShareProvider;
+ private IManager&MockObject $shareManager;
+ private AddressHandler&MockObject $addressHandler;
+ private IRootFolder&MockObject $rootFolder;
+ private IUserManager&MockObject $userManager;
+ private ISession&MockObject $session;
+ private IL10N&MockObject $l10n;
+ private IUserSession&MockObject $userSession;
+ private IClientService&MockObject $clientService;
+ private IShare $share;
+ private ICloudIdManager $cloudIdManager;
+ private MountPublicLinkController $controller;
protected function setUp(): void {
parent::setUp();
- $this->request = $this->getMockBuilder(IRequest::class)->disableOriginalConstructor()->getMock();
- $this->federatedShareProvider = $this->getMockBuilder('OCA\FederatedFileSharing\FederatedShareProvider')
- ->disableOriginalConstructor()->getMock();
- $this->shareManager = $this->getMockBuilder(IManager::class)->disableOriginalConstructor()->getMock();
- $this->addressHandler = $this->getMockBuilder('OCA\FederatedFileSharing\AddressHandler')
- ->disableOriginalConstructor()->getMock();
- $this->rootFolder = $this->getMockBuilder('OCP\Files\IRootFolder')->disableOriginalConstructor()->getMock();
- $this->userManager = $this->getMockBuilder(IUserManager::class)->disableOriginalConstructor()->getMock();
- $this->share = new \OC\Share20\Share($this->rootFolder, $this->userManager);
- $this->session = $this->getMockBuilder(ISession::class)->disableOriginalConstructor()->getMock();
- $this->l10n = $this->getMockBuilder(IL10N::class)->disableOriginalConstructor()->getMock();
- $this->userSession = $this->getMockBuilder(IUserSession::class)->disableOriginalConstructor()->getMock();
- $this->clientService = $this->getMockBuilder('OCP\Http\Client\IClientService')->disableOriginalConstructor()->getMock();
+ $this->request = $this->createMock(IRequest::class);
+ $this->federatedShareProvider = $this->createMock(FederatedShareProvider::class);
+ $this->shareManager = $this->createMock(IManager::class);
+ $this->addressHandler = $this->createMock(AddressHandler::class);
+ $this->rootFolder = $this->createMock(IRootFolder::class);
+ $this->userManager = $this->createMock(IUserManager::class);
+ $this->share = new Share($this->rootFolder, $this->userManager);
+ $this->session = $this->createMock(ISession::class);
+ $this->l10n = $this->createMock(IL10N::class);
+ $this->userSession = $this->createMock(IUserSession::class);
+ $this->clientService = $this->createMock(IClientService::class);
$this->contactsManager = $this->createMock(IContactsManager::class);
$this->cloudIdManager = new CloudIdManager(
+ $this->createMock(ICacheFactory::class),
+ $this->createMock(IEventDispatcher::class),
$this->contactsManager,
$this->createMock(IURLGenerator::class),
$this->userManager,
- $this->createMock(ICacheFactory::class),
- $this->createMock(IEventDispatcher::class)
);
$this->controller = new MountPublicLinkController(
@@ -111,26 +85,17 @@ class MountPublicLinkControllerTest extends \Test\TestCase {
);
}
- /**
- * @dataProvider dataTestCreateFederatedShare
- *
- * @param string $shareWith
- * @param bool $outgoingSharesAllowed
- * @param bool $validShareWith
- * @param string $token
- * @param bool $validToken
- * @param bool $createSuccessful
- * @param string $expectedReturnData
- */
- public function testCreateFederatedShare($shareWith,
- $outgoingSharesAllowed,
- $validShareWith,
- $token,
- $validToken,
- $createSuccessful,
- $expectedReturnData,
- $permissions
- ) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataTestCreateFederatedShare')]
+ public function testCreateFederatedShare(
+ string $shareWith,
+ bool $outgoingSharesAllowed,
+ bool $validShareWith,
+ string $token,
+ bool $validToken,
+ bool $createSuccessful,
+ string $expectedReturnData,
+ int $permissions,
+ ): void {
$this->federatedShareProvider->expects($this->any())
->method('isOutgoingServer2serverShareEnabled')
->willReturn($outgoingSharesAllowed);
@@ -187,7 +152,7 @@ class MountPublicLinkControllerTest extends \Test\TestCase {
}
}
- public function dataTestCreateFederatedShare() {
+ public static function dataTestCreateFederatedShare(): array {
return [
//shareWith, outgoingSharesAllowed, validShareWith, token, validToken, createSuccessful, expectedReturnData
['user@server', true, true, 'token', true, true, 'server', 31],
diff --git a/apps/federatedfilesharing/tests/Controller/RequestHandlerControllerTest.php b/apps/federatedfilesharing/tests/Controller/RequestHandlerControllerTest.php
index ba3abb149b4..81c67a29254 100644
--- a/apps/federatedfilesharing/tests/Controller/RequestHandlerControllerTest.php
+++ b/apps/federatedfilesharing/tests/Controller/RequestHandlerControllerTest.php
@@ -1,5 +1,6 @@
<?php
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -7,7 +8,10 @@
*/
namespace OCA\FederatedFileSharing\Tests;
+use OCA\FederatedFileSharing\AddressHandler;
use OCA\FederatedFileSharing\Controller\RequestHandlerController;
+use OCA\FederatedFileSharing\FederatedShareProvider;
+use OCA\FederatedFileSharing\Notifications;
use OCP\AppFramework\Http\DataResponse;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Federation\ICloudFederationFactory;
@@ -20,6 +24,7 @@ use OCP\IRequest;
use OCP\IUserManager;
use OCP\Share;
use OCP\Share\IShare;
+use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
/**
@@ -29,65 +34,32 @@ use Psr\Log\LoggerInterface;
* @group DB
*/
class RequestHandlerControllerTest extends \Test\TestCase {
- private $owner = 'owner';
- private $user1 = 'user1';
- private $user2 = 'user2';
- private $ownerCloudId = 'owner@server0.org';
- private $user1CloudId = 'user1@server1.org';
- private $user2CloudId = 'user2@server2.org';
-
- /** @var RequestHandlerController */
- private $requestHandler;
-
- /** @var \OCA\FederatedFileSharing\FederatedShareProvider|\PHPUnit\Framework\MockObject\MockObject */
- private $federatedShareProvider;
-
- /** @var \OCA\FederatedFileSharing\Notifications|\PHPUnit\Framework\MockObject\MockObject */
- private $notifications;
-
- /** @var \OCA\FederatedFileSharing\AddressHandler|\PHPUnit\Framework\MockObject\MockObject */
- private $addressHandler;
-
- /** @var IUserManager|\PHPUnit\Framework\MockObject\MockObject */
- private $userManager;
-
- /** @var IShare|\PHPUnit\Framework\MockObject\MockObject */
- private $share;
-
- /** @var ICloudIdManager|\PHPUnit\Framework\MockObject\MockObject */
- private $cloudIdManager;
-
- /** @var LoggerInterface|\PHPUnit\Framework\MockObject\MockObject */
- private $logger;
-
- /** @var IRequest|\PHPUnit\Framework\MockObject\MockObject */
- private $request;
-
- /** @var IDBConnection|\PHPUnit\Framework\MockObject\MockObject */
- private $connection;
-
- /** @var Share\IManager|\PHPUnit\Framework\MockObject\MockObject */
- private $shareManager;
-
- /** @var ICloudFederationFactory|\PHPUnit\Framework\MockObject\MockObject */
- private $cloudFederationFactory;
-
- /** @var ICloudFederationProviderManager|\PHPUnit\Framework\MockObject\MockObject */
- private $cloudFederationProviderManager;
-
- /** @var ICloudFederationProvider|\PHPUnit\Framework\MockObject\MockObject */
- private $cloudFederationProvider;
-
- /** @var ICloudFederationShare|\PHPUnit\Framework\MockObject\MockObject */
- private $cloudFederationShare;
-
- /** @var IEventDispatcher|\PHPUnit\Framework\MockObject\MockObject */
- private $eventDispatcher;
+ private string $owner = 'owner';
+ private string $user1 = 'user1';
+ private string $user2 = 'user2';
+ private string $ownerCloudId = 'owner@server0.org';
+ private string $user1CloudId = 'user1@server1.org';
+
+ private RequestHandlerController $requestHandler;
+ private FederatedShareProvider&MockObject $federatedShareProvider;
+ private Notifications&MockObject $notifications;
+ private AddressHandler&MockObject $addressHandler;
+ private IUserManager&MockObject $userManager;
+ private IShare&MockObject $share;
+ private ICloudIdManager&MockObject $cloudIdManager;
+ private LoggerInterface&MockObject $logger;
+ private IRequest&MockObject $request;
+ private IDBConnection&MockObject $connection;
+ private Share\IManager&MockObject $shareManager;
+ private ICloudFederationFactory&MockObject $cloudFederationFactory;
+ private ICloudFederationProviderManager&MockObject $cloudFederationProviderManager;
+ private ICloudFederationProvider&MockObject $cloudFederationProvider;
+ private ICloudFederationShare&MockObject $cloudFederationShare;
+ private IEventDispatcher&MockObject $eventDispatcher;
protected function setUp(): void {
- $this->share = $this->getMockBuilder(IShare::class)->getMock();
- $this->federatedShareProvider = $this->getMockBuilder('OCA\FederatedFileSharing\FederatedShareProvider')
- ->disableOriginalConstructor()->getMock();
+ $this->share = $this->createMock(IShare::class);
+ $this->federatedShareProvider = $this->createMock(FederatedShareProvider::class);
$this->federatedShareProvider->expects($this->any())
->method('isOutgoingServer2serverShareEnabled')->willReturn(true);
$this->federatedShareProvider->expects($this->any())
@@ -95,11 +67,9 @@ class RequestHandlerControllerTest extends \Test\TestCase {
$this->federatedShareProvider->expects($this->any())->method('getShareById')
->willReturn($this->share);
- $this->notifications = $this->getMockBuilder('OCA\FederatedFileSharing\Notifications')
- ->disableOriginalConstructor()->getMock();
- $this->addressHandler = $this->getMockBuilder('OCA\FederatedFileSharing\AddressHandler')
- ->disableOriginalConstructor()->getMock();
- $this->userManager = $this->getMockBuilder(IUserManager::class)->getMock();
+ $this->notifications = $this->createMock(Notifications::class);
+ $this->addressHandler = $this->createMock(AddressHandler::class);
+ $this->userManager = $this->createMock(IUserManager::class);
$this->cloudIdManager = $this->createMock(ICloudIdManager::class);
$this->request = $this->createMock(IRequest::class);
$this->connection = $this->createMock(IDBConnection::class);
@@ -130,7 +100,7 @@ class RequestHandlerControllerTest extends \Test\TestCase {
);
}
- public function testCreateShare() {
+ public function testCreateShare(): void {
$this->cloudFederationFactory->expects($this->once())->method('getCloudFederationShare')
->with(
$this->user2,
@@ -146,7 +116,7 @@ class RequestHandlerControllerTest extends \Test\TestCase {
'file'
)->willReturn($this->cloudFederationShare);
- /** @var ICloudFederationProvider|\PHPUnit\Framework\MockObject\MockObject $provider */
+ /** @var ICloudFederationProvider&MockObject $provider */
$this->cloudFederationProviderManager->expects($this->once())
->method('getCloudFederationProvider')
->with('file')
@@ -160,7 +130,7 @@ class RequestHandlerControllerTest extends \Test\TestCase {
$this->assertInstanceOf(DataResponse::class, $result);
}
- public function testDeclineShare() {
+ public function testDeclineShare(): void {
$id = 42;
$notification = [
@@ -183,7 +153,7 @@ class RequestHandlerControllerTest extends \Test\TestCase {
}
- public function testAcceptShare() {
+ public function testAcceptShare(): void {
$id = 42;
$notification = [
diff --git a/apps/federatedfilesharing/tests/FederatedShareProviderTest.php b/apps/federatedfilesharing/tests/FederatedShareProviderTest.php
index adba36fd88c..7e97510af22 100644
--- a/apps/federatedfilesharing/tests/FederatedShareProviderTest.php
+++ b/apps/federatedfilesharing/tests/FederatedShareProviderTest.php
@@ -1,5 +1,6 @@
<?php
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -12,6 +13,7 @@ use OCA\FederatedFileSharing\AddressHandler;
use OCA\FederatedFileSharing\FederatedShareProvider;
use OCA\FederatedFileSharing\Notifications;
use OCA\FederatedFileSharing\TokenHandler;
+use OCP\Constants;
use OCP\Contacts\IManager as IContactsManager;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Federation\ICloudFederationProviderManager;
@@ -24,6 +26,7 @@ use OCP\IDBConnection;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\IUserManager;
+use OCP\Server;
use OCP\Share\IManager;
use OCP\Share\IShare;
use PHPUnit\Framework\MockObject\MockObject;
@@ -36,68 +39,46 @@ use Psr\Log\LoggerInterface;
* @group DB
*/
class FederatedShareProviderTest extends \Test\TestCase {
- /** @var IDBConnection */
- protected $connection;
- /** @var AddressHandler|MockObject */
- protected $addressHandler;
- /** @var Notifications|MockObject */
- protected $notifications;
- /** @var TokenHandler|MockObject */
- protected $tokenHandler;
- /** @var IL10N */
- protected $l;
- /** @var LoggerInterface */
- protected $logger;
- /** @var IRootFolder|MockObject */
- protected $rootFolder;
- /** @var IConfig|MockObject */
- protected $config;
- /** @var IUserManager|MockObject */
- protected $userManager;
- /** @var \OCP\GlobalScale\IConfig|MockObject */
- protected $gsConfig;
-
- /** @var IManager */
- protected $shareManager;
- /** @var FederatedShareProvider */
- protected $provider;
- /** @var IContactsManager|MockObject */
- protected $contactsManager;
-
- /** @var ICloudIdManager */
- private $cloudIdManager;
-
- /** @var MockObject|ICloudFederationProviderManager */
- private $cloudFederationProviderManager;
+ protected IDBConnection $connection;
+ protected AddressHandler&MockObject $addressHandler;
+ protected Notifications&MockObject $notifications;
+ protected TokenHandler&MockObject $tokenHandler;
+ protected IL10N $l;
+ protected LoggerInterface $logger;
+ protected IRootFolder&MockObject $rootFolder;
+ protected IConfig&MockObject $config;
+ protected IUserManager&MockObject $userManager;
+ protected \OCP\GlobalScale\IConfig&MockObject $gsConfig;
+ protected IManager $shareManager;
+ protected FederatedShareProvider $provider;
+ protected IContactsManager&MockObject $contactsManager;
+ private ICloudIdManager $cloudIdManager;
+ private ICloudFederationProviderManager&MockObject $cloudFederationProviderManager;
protected function setUp(): void {
parent::setUp();
- $this->connection = \OC::$server->getDatabaseConnection();
- $this->notifications = $this->getMockBuilder('OCA\FederatedFileSharing\Notifications')
- ->disableOriginalConstructor()
- ->getMock();
- $this->tokenHandler = $this->getMockBuilder('OCA\FederatedFileSharing\TokenHandler')
- ->disableOriginalConstructor()
- ->getMock();
- $this->l = $this->getMockBuilder(IL10N::class)->getMock();
+ $this->connection = Server::get(IDBConnection::class);
+ $this->notifications = $this->createMock(Notifications::class);
+ $this->tokenHandler = $this->createMock(TokenHandler::class);
+ $this->l = $this->createMock(IL10N::class);
$this->l->method('t')
->willReturnCallback(function ($text, $parameters = []) {
return vsprintf($text, $parameters);
});
- $this->logger = $this->getMockBuilder(LoggerInterface::class)->getMock();
- $this->rootFolder = $this->getMockBuilder('OCP\Files\IRootFolder')->getMock();
- $this->config = $this->getMockBuilder(IConfig::class)->getMock();
- $this->userManager = $this->getMockBuilder(IUserManager::class)->getMock();
+ $this->logger = $this->createMock(LoggerInterface::class);
+ $this->rootFolder = $this->createMock(IRootFolder::class);
+ $this->config = $this->createMock(IConfig::class);
+ $this->userManager = $this->createMock(IUserManager::class);
//$this->addressHandler = new AddressHandler(\OC::$server->getURLGenerator(), $this->l);
- $this->addressHandler = $this->getMockBuilder('OCA\FederatedFileSharing\AddressHandler')->disableOriginalConstructor()->getMock();
+ $this->addressHandler = $this->createMock(AddressHandler::class);
$this->contactsManager = $this->createMock(IContactsManager::class);
$this->cloudIdManager = new CloudIdManager(
+ $this->createMock(ICacheFactory::class),
+ $this->createMock(IEventDispatcher::class),
$this->contactsManager,
$this->createMock(IURLGenerator::class),
$this->userManager,
- $this->createMock(ICacheFactory::class),
- $this->createMock(IEventDispatcher::class)
);
$this->gsConfig = $this->createMock(\OCP\GlobalScale\IConfig::class);
@@ -120,30 +101,28 @@ class FederatedShareProviderTest extends \Test\TestCase {
$this->logger,
);
- $this->shareManager = \OC::$server->getShareManager();
+ $this->shareManager = Server::get(IManager::class);
}
protected function tearDown(): void {
- $this->connection->getQueryBuilder()->delete('share')->execute();
+ $this->connection->getQueryBuilder()->delete('share')->executeStatement();
parent::tearDown();
}
- public function dataTestCreate() {
+ public static function dataTestCreate(): array {
return [
[null, null],
[new \DateTime('2020-03-01T01:02:03'), '2020-03-01 01:02:03'],
];
}
- /**
- * @dataProvider dataTestCreate
- */
- public function testCreate($expirationDate, $expectedDataDate) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataTestCreate')]
+ public function testCreate(?\DateTime $expirationDate, ?string $expectedDataDate): void {
$share = $this->shareManager->newShare();
- /** @var File|MockObject $node */
- $node = $this->getMockBuilder(File::class)->getMock();
+ /** @var File&MockObject $node */
+ $node = $this->createMock(File::class);
$node->method('getId')->willReturn(42);
$node->method('getName')->willReturn('myFile');
@@ -188,7 +167,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
$stmt = $qb->select('*')
->from('share')
->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
- ->execute();
+ ->executeQuery();
$data = $stmt->fetch();
$stmt->closeCursor();
@@ -222,10 +201,10 @@ class FederatedShareProviderTest extends \Test\TestCase {
$this->assertEquals($expirationDate, $share->getExpirationDate());
}
- public function testCreateCouldNotFindServer() {
+ public function testCreateCouldNotFindServer(): void {
$share = $this->shareManager->newShare();
- $node = $this->getMockBuilder(File::class)->getMock();
+ $node = $this->createMock(File::class);
$node->method('getId')->willReturn(42);
$node->method('getName')->willReturn('myFile');
@@ -275,7 +254,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
$stmt = $qb->select('*')
->from('share')
->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
- ->execute();
+ ->executeQuery();
$data = $stmt->fetch();
$stmt->closeCursor();
@@ -283,10 +262,10 @@ class FederatedShareProviderTest extends \Test\TestCase {
$this->assertFalse($data);
}
- public function testCreateException() {
+ public function testCreateException(): void {
$share = $this->shareManager->newShare();
- $node = $this->getMockBuilder(File::class)->getMock();
+ $node = $this->createMock(File::class);
$node->method('getId')->willReturn(42);
$node->method('getName')->willReturn('myFile');
@@ -336,7 +315,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
$stmt = $qb->select('*')
->from('share')
->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
- ->execute();
+ ->executeQuery();
$data = $stmt->fetch();
$stmt->closeCursor();
@@ -344,10 +323,10 @@ class FederatedShareProviderTest extends \Test\TestCase {
$this->assertFalse($data);
}
- public function testCreateShareWithSelf() {
+ public function testCreateShareWithSelf(): void {
$share = $this->shareManager->newShare();
- $node = $this->getMockBuilder(File::class)->getMock();
+ $node = $this->createMock(File::class);
$node->method('getId')->willReturn(42);
$node->method('getName')->willReturn('myFile');
@@ -379,7 +358,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
$stmt = $qb->select('*')
->from('share')
->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
- ->execute();
+ ->executeQuery();
$data = $stmt->fetch();
$stmt->closeCursor();
@@ -387,10 +366,10 @@ class FederatedShareProviderTest extends \Test\TestCase {
$this->assertFalse($data);
}
- public function testCreateAlreadyShared() {
+ public function testCreateAlreadyShared(): void {
$share = $this->shareManager->newShare();
- $node = $this->getMockBuilder(File::class)->getMock();
+ $node = $this->createMock(File::class);
$node->method('getId')->willReturn(42);
$node->method('getName')->willReturn('myFile');
@@ -438,11 +417,9 @@ class FederatedShareProviderTest extends \Test\TestCase {
}
}
- /**
- * @dataProvider dataTestUpdate
- */
- public function testUpdate($owner, $sharedBy, $expirationDate) {
- $this->provider = $this->getMockBuilder('OCA\FederatedFileSharing\FederatedShareProvider')
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataTestUpdate')]
+ public function testUpdate(string $owner, string $sharedBy, ?\DateTime $expirationDate): void {
+ $this->provider = $this->getMockBuilder(FederatedShareProvider::class)
->setConstructorArgs(
[
$this->connection,
@@ -458,11 +435,13 @@ class FederatedShareProviderTest extends \Test\TestCase {
$this->cloudFederationProviderManager,
$this->logger,
]
- )->setMethods(['sendPermissionUpdate'])->getMock();
+ )
+ ->onlyMethods(['sendPermissionUpdate'])
+ ->getMock();
$share = $this->shareManager->newShare();
- $node = $this->getMockBuilder(File::class)->getMock();
+ $node = $this->createMock(File::class);
$node->method('getId')->willReturn(42);
$node->method('getName')->willReturn('myFile');
@@ -518,15 +497,15 @@ class FederatedShareProviderTest extends \Test\TestCase {
$this->assertEquals($expirationDate, $share->getExpirationDate());
}
- public function dataTestUpdate() {
+ public static function dataTestUpdate(): array {
return [
['sharedBy', 'shareOwner', new \DateTime('2020-03-01T01:02:03')],
['shareOwner', 'shareOwner', null],
];
}
- public function testGetSharedBy() {
- $node = $this->getMockBuilder(File::class)->getMock();
+ public function testGetSharedBy(): void {
+ $node = $this->createMock(File::class);
$node->method('getId')->willReturn(42);
$node->method('getName')->willReturn('myFile');
@@ -571,8 +550,8 @@ class FederatedShareProviderTest extends \Test\TestCase {
$this->assertEquals('sharedBy', $shares[0]->getSharedBy());
}
- public function testGetSharedByWithNode() {
- $node = $this->getMockBuilder(File::class)->getMock();
+ public function testGetSharedByWithNode(): void {
+ $node = $this->createMock(File::class);
$node->method('getId')->willReturn(42);
$node->method('getName')->willReturn('myFile');
@@ -618,8 +597,8 @@ class FederatedShareProviderTest extends \Test\TestCase {
$this->assertEquals(43, $shares[0]->getNodeId());
}
- public function testGetSharedByWithReshares() {
- $node = $this->getMockBuilder(File::class)->getMock();
+ public function testGetSharedByWithReshares(): void {
+ $node = $this->createMock(File::class);
$node->method('getId')->willReturn(42);
$node->method('getName')->willReturn('myFile');
@@ -660,8 +639,8 @@ class FederatedShareProviderTest extends \Test\TestCase {
$this->assertCount(2, $shares);
}
- public function testGetSharedByWithLimit() {
- $node = $this->getMockBuilder(File::class)->getMock();
+ public function testGetSharedByWithLimit(): void {
+ $node = $this->createMock(File::class);
$node->method('getId')->willReturn(42);
$node->method('getName')->willReturn('myFile');
@@ -711,7 +690,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
$this->assertEquals('user2@server.com', $shares[0]->getSharedWith());
}
- public function dataDeleteUser() {
+ public static function dataDeleteUser(): array {
return [
['a', 'b', 'c', 'a', true],
['a', 'b', 'c', 'b', false],
@@ -722,7 +701,6 @@ class FederatedShareProviderTest extends \Test\TestCase {
}
/**
- * @dataProvider dataDeleteUser
*
* @param string $owner The owner of the share (uid)
* @param string $initiator The initiator of the share (uid)
@@ -730,7 +708,8 @@ class FederatedShareProviderTest extends \Test\TestCase {
* @param string $deletedUser The user that is deleted
* @param bool $rowDeleted Is the row deleted in this setup
*/
- public function testDeleteUser($owner, $initiator, $recipient, $deletedUser, $rowDeleted) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataDeleteUser')]
+ public function testDeleteUser(string $owner, string $initiator, string $recipient, string $deletedUser, bool $rowDeleted): void {
$qb = $this->connection->getQueryBuilder();
$qb->insert('share')
->setValue('share_type', $qb->createNamedParameter(IShare::TYPE_REMOTE))
@@ -740,7 +719,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
->setValue('item_type', $qb->createNamedParameter('file'))
->setValue('item_source', $qb->createNamedParameter(42))
->setValue('file_source', $qb->createNamedParameter(42))
- ->execute();
+ ->executeStatement();
$id = $qb->getLastInsertId();
@@ -752,20 +731,15 @@ class FederatedShareProviderTest extends \Test\TestCase {
->where(
$qb->expr()->eq('id', $qb->createNamedParameter($id))
);
- $cursor = $qb->execute();
+ $cursor = $qb->executeQuery();
$data = $cursor->fetchAll();
$cursor->closeCursor();
$this->assertCount($rowDeleted ? 0 : 1, $data);
}
- /**
- * @dataProvider dataTestIsOutgoingServer2serverShareEnabled
- *
- * @param string $isEnabled
- * @param bool $expected
- */
- public function testIsOutgoingServer2serverShareEnabled($internalOnly, $isEnabled, $expected) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataTestIsOutgoingServer2serverShareEnabled')]
+ public function testIsOutgoingServer2serverShareEnabled(bool $internalOnly, string $isEnabled, bool $expected): void {
$this->gsConfig->expects($this->once())->method('onlyInternalFederation')
->willReturn($internalOnly);
$this->config->expects($this->any())->method('getAppValue')
@@ -777,7 +751,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
);
}
- public function dataTestIsOutgoingServer2serverShareEnabled() {
+ public static function dataTestIsOutgoingServer2serverShareEnabled(): array {
return [
[false, 'yes', true],
[false, 'no', false],
@@ -786,13 +760,8 @@ class FederatedShareProviderTest extends \Test\TestCase {
];
}
- /**
- * @dataProvider dataTestIsIncomingServer2serverShareEnabled
- *
- * @param string $isEnabled
- * @param bool $expected
- */
- public function testIsIncomingServer2serverShareEnabled($onlyInternal, $isEnabled, $expected) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataTestIsIncomingServer2serverShareEnabled')]
+ public function testIsIncomingServer2serverShareEnabled(bool $onlyInternal, string $isEnabled, bool $expected): void {
$this->gsConfig->expects($this->once())->method('onlyInternalFederation')
->willReturn($onlyInternal);
$this->config->expects($this->any())->method('getAppValue')
@@ -804,7 +773,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
);
}
- public function dataTestIsIncomingServer2serverShareEnabled() {
+ public static function dataTestIsIncomingServer2serverShareEnabled(): array {
return [
[false, 'yes', true],
[false, 'no', false],
@@ -813,17 +782,12 @@ class FederatedShareProviderTest extends \Test\TestCase {
];
}
- /**
- * @dataProvider dataTestIsLookupServerQueriesEnabled
- *
- * @param string $isEnabled
- * @param bool $expected
- */
- public function testIsLookupServerQueriesEnabled($gsEnabled, $isEnabled, $expected) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataTestIsLookupServerQueriesEnabled')]
+ public function testIsLookupServerQueriesEnabled(bool $gsEnabled, string $isEnabled, bool $expected): void {
$this->gsConfig->expects($this->once())->method('isGlobalScaleEnabled')
->willReturn($gsEnabled);
$this->config->expects($this->any())->method('getAppValue')
- ->with('files_sharing', 'lookupServerEnabled', 'yes')
+ ->with('files_sharing', 'lookupServerEnabled', 'no')
->willReturn($isEnabled);
$this->assertSame($expected,
@@ -832,26 +796,24 @@ class FederatedShareProviderTest extends \Test\TestCase {
}
- public function dataTestIsLookupServerQueriesEnabled() {
+ public static function dataTestIsLookupServerQueriesEnabled(): array {
return [
- [false, 'yes', true],
- [false, 'no', false],
[true, 'yes', true],
[true, 'no', true],
+ // TODO: reenable if we use the lookup server for non-global scale
+ // [false, 'yes', true],
+ // [false, 'no', false],
+ [false, 'no', false],
+ [false, 'yes', false],
];
}
- /**
- * @dataProvider dataTestIsLookupServerUploadEnabled
- *
- * @param string $isEnabled
- * @param bool $expected
- */
- public function testIsLookupServerUploadEnabled($gsEnabled, $isEnabled, $expected) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataTestIsLookupServerUploadEnabled')]
+ public function testIsLookupServerUploadEnabled(bool $gsEnabled, string $isEnabled, bool $expected): void {
$this->gsConfig->expects($this->once())->method('isGlobalScaleEnabled')
->willReturn($gsEnabled);
$this->config->expects($this->any())->method('getAppValue')
- ->with('files_sharing', 'lookupServerUploadEnabled', 'yes')
+ ->with('files_sharing', 'lookupServerUploadEnabled', 'no')
->willReturn($isEnabled);
$this->assertSame($expected,
@@ -859,21 +821,24 @@ class FederatedShareProviderTest extends \Test\TestCase {
);
}
- public function dataTestIsLookupServerUploadEnabled() {
+ public static function dataTestIsLookupServerUploadEnabled(): array {
return [
- [false, 'yes', true],
- [false, 'no', false],
[true, 'yes', false],
[true, 'no', false],
+ // TODO: reenable if we use the lookup server again
+ // [false, 'yes', true],
+ // [false, 'no', false],
+ [false, 'yes', false],
+ [false, 'no', false],
];
}
- public function testGetSharesInFolder() {
- $userManager = \OC::$server->getUserManager();
- $rootFolder = \OC::$server->getRootFolder();
+ public function testGetSharesInFolder(): void {
+ $userManager = Server::get(IUserManager::class);
+ $rootFolder = Server::get(IRootFolder::class);
- $u1 = $userManager->createUser('testFed', md5(time()));
- $u2 = $userManager->createUser('testFed2', md5(time()));
+ $u1 = $userManager->createUser('testFed', md5((string)time()));
+ $u2 = $userManager->createUser('testFed2', md5((string)time()));
$folder1 = $rootFolder->getUserFolder($u1->getUID())->newFolder('foo');
$file1 = $folder1->newFile('bar1');
@@ -895,7 +860,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
$share1->setSharedWith('user@server.com')
->setSharedBy($u1->getUID())
->setShareOwner($u1->getUID())
- ->setPermissions(\OCP\Constants::PERMISSION_READ)
+ ->setPermissions(Constants::PERMISSION_READ)
->setShareType(IShare::TYPE_REMOTE)
->setNode($file1);
$this->provider->create($share1);
@@ -904,7 +869,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
$share2->setSharedWith('user@server.com')
->setSharedBy($u2->getUID())
->setShareOwner($u1->getUID())
- ->setPermissions(\OCP\Constants::PERMISSION_READ)
+ ->setPermissions(Constants::PERMISSION_READ)
->setShareType(IShare::TYPE_REMOTE)
->setNode($file2);
$this->provider->create($share2);
@@ -922,11 +887,11 @@ class FederatedShareProviderTest extends \Test\TestCase {
$u2->delete();
}
- public function testGetAccessList() {
- $userManager = \OC::$server->getUserManager();
- $rootFolder = \OC::$server->getRootFolder();
+ public function testGetAccessList(): void {
+ $userManager = Server::get(IUserManager::class);
+ $rootFolder = Server::get(IRootFolder::class);
- $u1 = $userManager->createUser('testFed', md5(time()));
+ $u1 = $userManager->createUser('testFed', md5((string)time()));
$folder1 = $rootFolder->getUserFolder($u1->getUID())->newFolder('foo');
$file1 = $folder1->newFile('bar1');
@@ -955,7 +920,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
$share1->setSharedWith('user@server.com')
->setSharedBy($u1->getUID())
->setShareOwner($u1->getUID())
- ->setPermissions(\OCP\Constants::PERMISSION_READ)
+ ->setPermissions(Constants::PERMISSION_READ)
->setShareType(IShare::TYPE_REMOTE)
->setNode($file1);
$this->provider->create($share1);
@@ -964,7 +929,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
$share2->setSharedWith('foobar@localhost')
->setSharedBy($u1->getUID())
->setShareOwner($u1->getUID())
- ->setPermissions(\OCP\Constants::PERMISSION_READ)
+ ->setPermissions(Constants::PERMISSION_READ)
->setShareType(IShare::TYPE_REMOTE)
->setNode($file1);
$this->provider->create($share2);
diff --git a/apps/federatedfilesharing/tests/NotificationsTest.php b/apps/federatedfilesharing/tests/NotificationsTest.php
index 669e118fdd3..da5defd8e55 100644
--- a/apps/federatedfilesharing/tests/NotificationsTest.php
+++ b/apps/federatedfilesharing/tests/NotificationsTest.php
@@ -1,5 +1,6 @@
<?php
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -8,6 +9,7 @@
namespace OCA\FederatedFileSharing\Tests;
use OCA\FederatedFileSharing\AddressHandler;
+use OCA\FederatedFileSharing\BackgroundJob\RetryJob;
use OCA\FederatedFileSharing\Notifications;
use OCP\BackgroundJob\IJobList;
use OCP\EventDispatcher\IEventDispatcher;
@@ -19,38 +21,22 @@ use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
class NotificationsTest extends \Test\TestCase {
- /** @var AddressHandler|MockObject */
- private $addressHandler;
-
- /** @var IClientService|MockObject*/
- private $httpClientService;
-
- /** @var IDiscoveryService|MockObject */
- private $discoveryService;
-
- /** @var IJobList|MockObject */
- private $jobList;
-
- /** @var ICloudFederationProviderManager|MockObject */
- private $cloudFederationProviderManager;
-
- /** @var ICloudFederationFactory|MockObject */
- private $cloudFederationFactory;
-
- /** @var IEventDispatcher|MockObject */
- private $eventDispatcher;
-
- /** @var LoggerInterface|MockObject */
- private $logger;
+ private AddressHandler&MockObject $addressHandler;
+ private IClientService&MockObject $httpClientService;
+ private IDiscoveryService&MockObject $discoveryService;
+ private IJobList&MockObject $jobList;
+ private ICloudFederationProviderManager&MockObject $cloudFederationProviderManager;
+ private ICloudFederationFactory&MockObject $cloudFederationFactory;
+ private IEventDispatcher&MockObject $eventDispatcher;
+ private LoggerInterface&MockObject $logger;
protected function setUp(): void {
parent::setUp();
- $this->jobList = $this->getMockBuilder('OCP\BackgroundJob\IJobList')->getMock();
- $this->discoveryService = $this->getMockBuilder(IDiscoveryService::class)->getMock();
- $this->httpClientService = $this->getMockBuilder('OCP\Http\Client\IClientService')->getMock();
- $this->addressHandler = $this->getMockBuilder('OCA\FederatedFileSharing\AddressHandler')
- ->disableOriginalConstructor()->getMock();
+ $this->jobList = $this->createMock(IJobList::class);
+ $this->discoveryService = $this->createMock(IDiscoveryService::class);
+ $this->httpClientService = $this->createMock(IClientService::class);
+ $this->addressHandler = $this->createMock(AddressHandler::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->cloudFederationProviderManager = $this->createMock(ICloudFederationProviderManager::class);
$this->cloudFederationFactory = $this->createMock(ICloudFederationFactory::class);
@@ -58,14 +44,11 @@ class NotificationsTest extends \Test\TestCase {
}
/**
- * get instance of Notifications class
- *
- * @param array $mockedMethods methods which should be mocked
- * @return Notifications | \PHPUnit\Framework\MockObject\MockObject
+ * @return Notifications|MockObject
*/
private function getInstance(array $mockedMethods = []) {
if (empty($mockedMethods)) {
- $instance = new Notifications(
+ return new Notifications(
$this->addressHandler,
$this->httpClientService,
$this->discoveryService,
@@ -75,34 +58,28 @@ class NotificationsTest extends \Test\TestCase {
$this->eventDispatcher,
$this->logger,
);
- } else {
- $instance = $this->getMockBuilder('OCA\FederatedFileSharing\Notifications')
- ->setConstructorArgs(
- [
- $this->addressHandler,
- $this->httpClientService,
- $this->discoveryService,
- $this->jobList,
- $this->cloudFederationProviderManager,
- $this->cloudFederationFactory,
- $this->eventDispatcher,
- $this->logger,
- ]
- )->setMethods($mockedMethods)->getMock();
}
- return $instance;
+ return $this->getMockBuilder(Notifications::class)
+ ->setConstructorArgs(
+ [
+ $this->addressHandler,
+ $this->httpClientService,
+ $this->discoveryService,
+ $this->jobList,
+ $this->cloudFederationProviderManager,
+ $this->cloudFederationFactory,
+ $this->eventDispatcher,
+ $this->logger,
+ ]
+ )
+ ->onlyMethods($mockedMethods)
+ ->getMock();
}
- /**
- * @dataProvider dataTestSendUpdateToRemote
- *
- * @param int $try
- * @param array $httpRequestResult
- * @param bool $expected
- */
- public function testSendUpdateToRemote($try, $httpRequestResult, $expected) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataTestSendUpdateToRemote')]
+ public function testSendUpdateToRemote(int $try, array $httpRequestResult, bool $expected): void {
$remote = 'http://remote';
$id = 42;
$timestamp = 63576;
@@ -113,14 +90,14 @@ class NotificationsTest extends \Test\TestCase {
$instance->expects($this->any())->method('getTimestamp')->willReturn($timestamp);
$instance->expects($this->once())->method('tryHttpPostToShareEndpoint')
- ->with($remote, '/'.$id.'/unshare', ['token' => $token, 'data1Key' => 'data1Value', 'remoteId' => $id], $action)
+ ->with($remote, '/' . $id . '/unshare', ['token' => $token, 'data1Key' => 'data1Value', 'remoteId' => $id], $action)
->willReturn($httpRequestResult);
// only add background job on first try
if ($try === 0 && $expected === false) {
$this->jobList->expects($this->once())->method('add')
->with(
- 'OCA\FederatedFileSharing\BackgroundJob\RetryJob',
+ RetryJob::class,
[
'remote' => $remote,
'remoteId' => $id,
@@ -141,7 +118,7 @@ class NotificationsTest extends \Test\TestCase {
}
- public function dataTestSendUpdateToRemote() {
+ public static function dataTestSendUpdateToRemote(): array {
return [
// test if background job is added correctly
[0, ['success' => true, 'result' => json_encode(['ocs' => ['meta' => ['statuscode' => 200]]])], true],
diff --git a/apps/federatedfilesharing/tests/Settings/AdminTest.php b/apps/federatedfilesharing/tests/Settings/AdminTest.php
index 29f15b0199d..1eee362c11f 100644
--- a/apps/federatedfilesharing/tests/Settings/AdminTest.php
+++ b/apps/federatedfilesharing/tests/Settings/AdminTest.php
@@ -1,4 +1,6 @@
<?php
+
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -12,17 +14,14 @@ use OCP\AppFramework\Services\IInitialState;
use OCP\GlobalScale\IConfig;
use OCP\IL10N;
use OCP\IURLGenerator;
+use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class AdminTest extends TestCase {
- /** @var Admin */
- private $admin;
- /** @var \OCA\FederatedFileSharing\FederatedShareProvider */
- private $federatedShareProvider;
- /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */
- private $gsConfig;
- /** @var IInitialState|\PHPUnit\Framework\MockObject\MockObject */
- private $initialState;
+ private FederatedShareProvider&MockObject $federatedShareProvider;
+ private IConfig $gsConfig;
+ private IInitialState&MockObject $initialState;
+ private Admin $admin;
protected function setUp(): void {
parent::setUp();
@@ -43,7 +42,7 @@ class AdminTest extends TestCase {
);
}
- public function sharingStateProvider() {
+ public static function sharingStateProvider(): array {
return [
[
true,
@@ -54,11 +53,8 @@ class AdminTest extends TestCase {
];
}
- /**
- * @dataProvider sharingStateProvider
- * @param bool $state
- */
- public function testGetForm($state) {
+ #[\PHPUnit\Framework\Attributes\DataProvider('sharingStateProvider')]
+ public function testGetForm(bool $state): void {
$this->federatedShareProvider
->expects($this->once())
->method('isOutgoingServer2serverShareEnabled')
@@ -91,32 +87,41 @@ class AdminTest extends TestCase {
->expects($this->once())
->method('isIncomingServer2serverGroupShareEnabled')
->willReturn($state);
+ $this->federatedShareProvider
+ ->expects($this->once())
+ ->method('isFederatedTrustedShareAutoAccept')
+ ->willReturn($state);
$this->gsConfig->expects($this->once())->method('onlyInternalFederation')
->willReturn($state);
- $this->initialState->expects($this->exactly(9))
+ $calls = [
+ ['internalOnly', $state],
+ ['sharingFederatedDocUrl', 'doc-link'],
+ ['outgoingServer2serverShareEnabled', $state],
+ ['incomingServer2serverShareEnabled', $state],
+ ['federatedGroupSharingSupported', $state],
+ ['outgoingServer2serverGroupShareEnabled', $state],
+ ['incomingServer2serverGroupShareEnabled', $state],
+ ['lookupServerEnabled', $state],
+ ['lookupServerUploadEnabled', $state],
+ ['federatedTrustedShareAutoAccept', $state],
+ ];
+ $this->initialState->expects($this->exactly(10))
->method('provideInitialState')
- ->withConsecutive(
- ['internalOnly', $state],
- ['sharingFederatedDocUrl', 'doc-link'],
- ['outgoingServer2serverShareEnabled', $state],
- ['incomingServer2serverShareEnabled', $state],
- ['federatedGroupSharingSupported', $state],
- ['outgoingServer2serverGroupShareEnabled', $state],
- ['incomingServer2serverGroupShareEnabled', $state],
- ['lookupServerEnabled', $state],
- ['lookupServerUploadEnabled', $state],
- );
+ ->willReturnCallback(function () use (&$calls): void {
+ $expected = array_shift($calls);
+ $this->assertSame($expected, func_get_args());
+ });
$expected = new TemplateResponse('federatedfilesharing', 'settings-admin', [], '');
$this->assertEquals($expected, $this->admin->getForm());
}
- public function testGetSection() {
+ public function testGetSection(): void {
$this->assertSame('sharing', $this->admin->getSection());
}
- public function testGetPriority() {
+ public function testGetPriority(): void {
$this->assertSame(20, $this->admin->getPriority());
}
}
diff --git a/apps/federatedfilesharing/tests/TestCase.php b/apps/federatedfilesharing/tests/TestCase.php
index d2148770f73..50f01eb5e62 100644
--- a/apps/federatedfilesharing/tests/TestCase.php
+++ b/apps/federatedfilesharing/tests/TestCase.php
@@ -1,5 +1,6 @@
<?php
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -9,6 +10,11 @@ namespace OCA\FederatedFileSharing\Tests;
use OC\Files\Filesystem;
use OC\Group\Database;
+use OCP\Files\IRootFolder;
+use OCP\IGroupManager;
+use OCP\IUserManager;
+use OCP\IUserSession;
+use OCP\Server;
/**
* Class Test_Files_Sharing_Base
@@ -18,19 +24,19 @@ use OC\Group\Database;
* Base class for sharing tests.
*/
abstract class TestCase extends \Test\TestCase {
- public const TEST_FILES_SHARING_API_USER1 = "test-share-user1";
- public const TEST_FILES_SHARING_API_USER2 = "test-share-user2";
+ public const TEST_FILES_SHARING_API_USER1 = 'test-share-user1';
+ public const TEST_FILES_SHARING_API_USER2 = 'test-share-user2';
public static function setUpBeforeClass(): void {
parent::setUpBeforeClass();
// reset backend
- \OC_User::clearBackends();
- \OC::$server->getGroupManager()->clearBackends();
+ Server::get(IUserManager::class)->clearBackends();
+ Server::get(IGroupManager::class)->clearBackends();
// create users
$backend = new \Test\Util\User\Dummy();
- \OC_User::useBackend($backend);
+ Server::get(IUserManager::class)->registerBackend($backend);
$backend->createUser(self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER1);
$backend->createUser(self::TEST_FILES_SHARING_API_USER2, self::TEST_FILES_SHARING_API_USER2);
}
@@ -44,11 +50,11 @@ abstract class TestCase extends \Test\TestCase {
public static function tearDownAfterClass(): void {
// cleanup users
- $user = \OC::$server->getUserManager()->get(self::TEST_FILES_SHARING_API_USER1);
+ $user = Server::get(IUserManager::class)->get(self::TEST_FILES_SHARING_API_USER1);
if ($user !== null) {
$user->delete();
}
- $user = \OC::$server->getUserManager()->get(self::TEST_FILES_SHARING_API_USER2);
+ $user = Server::get(IUserManager::class)->get(self::TEST_FILES_SHARING_API_USER2);
if ($user !== null) {
$user->delete();
}
@@ -58,27 +64,22 @@ abstract class TestCase extends \Test\TestCase {
Filesystem::tearDown();
// reset backend
- \OC_User::clearBackends();
- \OC_User::useBackend('database');
- \OC::$server->getGroupManager()->clearBackends();
- \OC::$server->getGroupManager()->addBackend(new Database());
+ Server::get(IUserManager::class)->clearBackends();
+ Server::get(IUserManager::class)->registerBackend(new \OC\User\Database());
+ Server::get(IGroupManager::class)->clearBackends();
+ Server::get(IGroupManager::class)->addBackend(new Database());
parent::tearDownAfterClass();
}
- /**
- * @param string $user
- * @param bool $create
- * @param bool $password
- */
- protected static function loginHelper($user, $create = false, $password = false) {
+ protected static function loginHelper(string $user, bool $create = false, bool $password = false) {
if ($password === false) {
$password = $user;
}
if ($create) {
- $userManager = \OC::$server->getUserManager();
- $groupManager = \OC::$server->getGroupManager();
+ $userManager = Server::get(IUserManager::class);
+ $groupManager = Server::get(IGroupManager::class);
$userObject = $userManager->createUser($user, $password);
$group = $groupManager->createGroup('group');
@@ -89,10 +90,10 @@ abstract class TestCase extends \Test\TestCase {
}
\OC_Util::tearDownFS();
- \OC::$server->getUserSession()->setUser(null);
- \OC\Files\Filesystem::tearDown();
- \OC::$server->getUserSession()->login($user, $password);
- \OC::$server->getUserFolder($user);
+ Server::get(IUserSession::class)->setUser(null);
+ Filesystem::tearDown();
+ Server::get(IUserSession::class)->login($user, $password);
+ Server::get(IRootFolder::class)->getUserFolder($user);
\OC_Util::setupFS($user);
}
diff --git a/apps/federatedfilesharing/tests/TokenHandlerTest.php b/apps/federatedfilesharing/tests/TokenHandlerTest.php
index fea13bf9d2d..7a210274013 100644
--- a/apps/federatedfilesharing/tests/TokenHandlerTest.php
+++ b/apps/federatedfilesharing/tests/TokenHandlerTest.php
@@ -1,5 +1,6 @@
<?php
+declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -9,17 +10,12 @@ namespace OCA\FederatedFileSharing\Tests;
use OCA\FederatedFileSharing\TokenHandler;
use OCP\Security\ISecureRandom;
+use PHPUnit\Framework\MockObject\MockObject;
class TokenHandlerTest extends \Test\TestCase {
-
- /** @var TokenHandler */
- private $tokenHandler;
-
- /** @var ISecureRandom | \PHPUnit\Framework\MockObject\MockObject */
- private $secureRandom;
-
- /** @var int */
- private $expectedTokenLength = 15;
+ private TokenHandler $tokenHandler;
+ private ISecureRandom&MockObject $secureRandom;
+ private int $expectedTokenLength = 15;
protected function setUp(): void {
parent::setUp();
@@ -29,7 +25,7 @@ class TokenHandlerTest extends \Test\TestCase {
$this->tokenHandler = new TokenHandler($this->secureRandom);
}
- public function testGenerateToken() {
+ public function testGenerateToken(): void {
$this->secureRandom->expects($this->once())->method('generate')
->with(
$this->expectedTokenLength,
diff --git a/apps/federatedfilesharing/tests/js/externalSpec.js b/apps/federatedfilesharing/tests/js/externalSpec.js
deleted file mode 100644
index b67c51aebf7..00000000000
--- a/apps/federatedfilesharing/tests/js/externalSpec.js
+++ /dev/null
@@ -1,241 +0,0 @@
-/**
- * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
- * SPDX-FileCopyrightText: 2015 ownCloud, Inc.
- * SPDX-License-Identifier: AGPL-3.0-or-later
- */
-
-describe('OCA.Sharing external tests', function() {
- var plugin;
- var urlQueryStub;
- var promptDialogStub;
- var confirmDialogStub;
-
- function dummyShowDialog() {
- var deferred = $.Deferred();
- deferred.resolve();
- return deferred.promise();
- }
-
- beforeEach(function() {
- plugin = OCA.Sharing.ExternalShareDialogPlugin;
- urlQueryStub = sinon.stub(OC.Util.History, 'parseUrlQuery');
-
- confirmDialogStub = sinon.stub(OC.dialogs, 'confirm').callsFake(dummyShowDialog);
- promptDialogStub = sinon.stub(OC.dialogs, 'prompt').callsFake(dummyShowDialog);
-
- plugin.filesApp = {
- fileList: {
- reload: sinon.stub()
- }
- };
- });
- afterEach(function() {
- urlQueryStub.restore();
- confirmDialogStub.restore();
- promptDialogStub.restore();
- plugin = null;
- });
- describe('confirmation dialog from URL', function() {
- var testShare;
-
- /**
- * Checks that the server call's query matches what is
- * expected.
- *
- * @param {Object} expectedQuery expected query params
- */
- function checkRequest(expectedQuery) {
- var request = fakeServer.requests[0];
- var query = OC.parseQueryString(request.requestBody);
- expect(request.method).toEqual('POST');
- expect(query).toEqual(expectedQuery);
-
- request.respond(
- 200,
- {'Content-Type': 'application/json'},
- JSON.stringify({status: 'success'})
- );
- expect(plugin.filesApp.fileList.reload.calledOnce).toEqual(true);
- }
-
- beforeEach(function() {
- testShare = {
- remote: 'http://example.com/owncloud',
- token: 'abcdefg',
- owner: 'theowner',
- ownerDisplayName: 'The Generous Owner',
- name: 'the share name'
- };
- });
- it('does nothing when no share was passed in URL', function() {
- urlQueryStub.returns({});
- plugin.processIncomingShareFromUrl();
- expect(promptDialogStub.notCalled).toEqual(true);
- expect(confirmDialogStub.notCalled).toEqual(true);
- expect(fakeServer.requests.length).toEqual(0);
- });
- it('sends share info to server on confirm', function() {
- urlQueryStub.returns(testShare);
- plugin.processIncomingShareFromUrl();
- expect(promptDialogStub.notCalled).toEqual(true);
- expect(confirmDialogStub.calledOnce).toEqual(true);
- confirmDialogStub.getCall(0).args[2](true);
- expect(fakeServer.requests.length).toEqual(1);
- checkRequest({
- remote: 'http://example.com/owncloud',
- token: 'abcdefg',
- owner: 'theowner',
- ownerDisplayName: 'The Generous Owner',
- name: 'the share name',
- password: ''
- });
- });
- it('sends share info with password to server on confirm', function() {
- testShare = _.extend(testShare, {protected: 1});
- urlQueryStub.returns(testShare);
- plugin.processIncomingShareFromUrl();
- expect(promptDialogStub.calledOnce).toEqual(true);
- expect(confirmDialogStub.notCalled).toEqual(true);
- promptDialogStub.getCall(0).args[2](true, 'thepassword');
- expect(fakeServer.requests.length).toEqual(1);
- checkRequest({
- remote: 'http://example.com/owncloud',
- token: 'abcdefg',
- owner: 'theowner',
- ownerDisplayName: 'The Generous Owner',
- name: 'the share name',
- password: 'thepassword'
- });
- });
- it('does not send share info on cancel', function() {
- urlQueryStub.returns(testShare);
- plugin.processIncomingShareFromUrl();
- expect(promptDialogStub.notCalled).toEqual(true);
- expect(confirmDialogStub.calledOnce).toEqual(true);
- confirmDialogStub.getCall(0).args[2](false);
- expect(fakeServer.requests.length).toEqual(0);
- });
- });
- describe('show dialog for each share to confirm', function() {
- var testShare;
-
- /**
- * Call processSharesToConfirm() and make the fake server
- * return the passed response.
- *
- * @param {Array} response list of shares to process
- */
- function processShares(response) {
- plugin.processSharesToConfirm();
-
- expect(fakeServer.requests.length).toEqual(1);
-
- var req = fakeServer.requests[0];
- expect(req.method).toEqual('GET');
- expect(req.url).toEqual(OC.getRootPath() + '/index.php/apps/files_sharing/api/externalShares');
-
- req.respond(
- 200,
- {'Content-Type': 'application/json'},
- JSON.stringify(response)
- );
- }
-
- beforeEach(function() {
- testShare = {
- id: 123,
- remote: 'http://example.com/owncloud',
- token: 'abcdefg',
- owner: 'theowner',
- ownerDisplayName: 'The Generous Owner',
- name: 'the share name'
- };
- });
-
- it('does not show any dialog if no shares to confirm', function() {
- processShares([]);
- expect(confirmDialogStub.notCalled).toEqual(true);
- expect(promptDialogStub.notCalled).toEqual(true);
- });
- it('sends accept info to server on confirm', function() {
- processShares([testShare]);
-
- expect(promptDialogStub.notCalled).toEqual(true);
- expect(confirmDialogStub.calledOnce).toEqual(true);
-
- confirmDialogStub.getCall(0).args[2](true);
-
- expect(fakeServer.requests.length).toEqual(2);
-
- var request = fakeServer.requests[1];
- var query = OC.parseQueryString(request.requestBody);
- expect(request.method).toEqual('POST');
- expect(query).toEqual({id: '123'});
- expect(request.url).toEqual(
- OC.getRootPath() + '/index.php/apps/files_sharing/api/externalShares'
- );
-
- expect(plugin.filesApp.fileList.reload.notCalled).toEqual(true);
- request.respond(
- 200,
- {'Content-Type': 'application/json'},
- JSON.stringify({status: 'success'})
- );
- expect(plugin.filesApp.fileList.reload.calledOnce).toEqual(true);
- });
- it('sends delete info to server on cancel', function() {
- processShares([testShare]);
-
- expect(promptDialogStub.notCalled).toEqual(true);
- expect(confirmDialogStub.calledOnce).toEqual(true);
-
- confirmDialogStub.getCall(0).args[2](false);
-
- expect(fakeServer.requests.length).toEqual(2);
-
- var request = fakeServer.requests[1];
- expect(request.method).toEqual('DELETE');
- expect(request.url).toEqual(
- OC.getRootPath() + '/index.php/apps/files_sharing/api/externalShares/123'
- );
-
- expect(plugin.filesApp.fileList.reload.notCalled).toEqual(true);
- request.respond(
- 200,
- {'Content-Type': 'application/json'},
- JSON.stringify({status: 'success'})
- );
- expect(plugin.filesApp.fileList.reload.notCalled).toEqual(true);
- });
- xit('shows another dialog when multiple shares need to be accepted', function() {
- // TODO: enable this test when fixing multiple dialogs issue / confirm loop
- var testShare2 = _.extend({}, testShare);
- testShare2.id = 256;
- processShares([testShare, testShare2]);
-
- // confirm first one
- expect(confirmDialogStub.calledOnce).toEqual(true);
- confirmDialogStub.getCall(0).args[2](true);
-
- // next dialog not shown yet
- expect(confirmDialogStub.calledOnce);
-
- // respond to the first accept request
- fakeServer.requests[1].respond(
- 200,
- {'Content-Type': 'application/json'},
- JSON.stringify({status: 'success'})
- );
-
- // don't reload yet, there are other shares to confirm
- expect(plugin.filesApp.fileList.reload.notCalled).toEqual(true);
-
- // cancel second share
- expect(confirmDialogStub.calledTwice).toEqual(true);
- confirmDialogStub.getCall(1).args[2](true);
-
- // reload only called at the very end
- expect(plugin.filesApp.fileList.reload.calledOnce).toEqual(true);
- });
- });
-});