test: Migrate federated file sharing to PHPUnit 10

Signed-off-by: Joas Schilling <coding@schilljs.com>
pull/53179/head
Joas Schilling 4 months ago
parent 3bdb89c3b2
commit fa645663a8
No known key found for this signature in database
GPG Key ID: F72FA5B49FFA96B0
  1. 72
      apps/federatedfilesharing/tests/AddressHandlerTest.php
  2. 106
      apps/federatedfilesharing/tests/Controller/MountPublicLinkControllerTest.php
  3. 93
      apps/federatedfilesharing/tests/Controller/RequestHandlerControllerTest.php
  4. 159
      apps/federatedfilesharing/tests/FederatedShareProviderTest.php
  5. 89
      apps/federatedfilesharing/tests/NotificationsTest.php
  6. 48
      apps/federatedfilesharing/tests/Settings/AdminTest.php
  7. 11
      apps/federatedfilesharing/tests/TestCase.php
  8. 14
      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.
@ -16,31 +17,20 @@ 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(
@ -54,7 +44,7 @@ class AddressHandlerTest extends \Test\TestCase {
$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 = [
@ -92,12 +82,8 @@ class AddressHandlerTest extends \Test\TestCase {
/**
* @dataProvider dataTestSplitUserRemote
*
* @param string $remote
* @param string $expectedUser
* @param string $expectedUrl
*/
public function testSplitUserRemote($remote, $expectedUser, $expectedUrl): void {
public function testSplitUserRemote(string $remote, string $expectedUser, string $expectedUrl): void {
$this->contactsManager->expects($this->any())
->method('search')
->willReturn([]);
@ -107,7 +93,7 @@ class AddressHandlerTest extends \Test\TestCase {
$this->assertSame($expectedUrl, $remoteUrl);
}
public function dataTestSplitUserRemoteError() {
public static function dataTestSplitUserRemoteError(): array {
return [
// Invalid path
['user@'],
@ -127,10 +113,8 @@ class AddressHandlerTest extends \Test\TestCase {
/**
* @dataProvider dataTestSplitUserRemoteError
*
* @param string $id
*/
public function testSplitUserRemoteError($id): void {
public function testSplitUserRemoteError(string $id): void {
$this->expectException(HintException::class);
$this->addressHandler->splitUserRemote($id);
@ -138,20 +122,14 @@ class AddressHandlerTest extends \Test\TestCase {
/**
* @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): void {
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],
@ -173,35 +151,29 @@ class AddressHandlerTest extends \Test\TestCase {
/**
* @dataProvider dataTestRemoveProtocolFromUrl
*
* @param string $url
* @param string $expectedResult
*/
public function testRemoveProtocolFromUrl($url, $expectedResult): void {
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): void {
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],

@ -1,4 +1,6 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@ -31,64 +33,35 @@ 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->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->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->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->contactsManager,
@ -114,23 +87,16 @@ 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,
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')
@ -188,7 +154,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],

@ -1,5 +1,6 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@ -23,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;
/**
@ -32,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 FederatedShareProvider|\PHPUnit\Framework\MockObject\MockObject */
private $federatedShareProvider;
/** @var Notifications|\PHPUnit\Framework\MockObject\MockObject */
private $notifications;
/** @var 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())
@ -98,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);
@ -149,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')

@ -1,5 +1,6 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@ -38,61 +39,39 @@ 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 = Server::get(IDBConnection::class);
$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->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->contactsManager,
@ -122,16 +101,16 @@ class FederatedShareProviderTest extends \Test\TestCase {
$this->logger,
);
$this->shareManager = Server::get(\OCP\Share\IManager::class);
$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'],
@ -141,11 +120,11 @@ class FederatedShareProviderTest extends \Test\TestCase {
/**
* @dataProvider dataTestCreate
*/
public function testCreate($expirationDate, $expectedDataDate): void {
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');
@ -190,7 +169,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();
@ -227,7 +206,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
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');
@ -277,7 +256,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();
@ -288,7 +267,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
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');
@ -338,7 +317,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();
@ -349,7 +328,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
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');
@ -381,7 +360,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();
@ -392,7 +371,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
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');
@ -443,8 +422,8 @@ class FederatedShareProviderTest extends \Test\TestCase {
/**
* @dataProvider dataTestUpdate
*/
public function testUpdate($owner, $sharedBy, $expirationDate): void {
$this->provider = $this->getMockBuilder('OCA\FederatedFileSharing\FederatedShareProvider')
public function testUpdate(string $owner, string $sharedBy, ?\DateTime $expirationDate): void {
$this->provider = $this->getMockBuilder(FederatedShareProvider::class)
->setConstructorArgs(
[
$this->connection,
@ -460,11 +439,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');
@ -520,7 +501,7 @@ 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],
@ -528,7 +509,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
}
public function testGetSharedBy(): void {
$node = $this->getMockBuilder(File::class)->getMock();
$node = $this->createMock(File::class);
$node->method('getId')->willReturn(42);
$node->method('getName')->willReturn('myFile');
@ -574,7 +555,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
}
public function testGetSharedByWithNode(): void {
$node = $this->getMockBuilder(File::class)->getMock();
$node = $this->createMock(File::class);
$node->method('getId')->willReturn(42);
$node->method('getName')->willReturn('myFile');
@ -621,7 +602,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
}
public function testGetSharedByWithReshares(): void {
$node = $this->getMockBuilder(File::class)->getMock();
$node = $this->createMock(File::class);
$node->method('getId')->willReturn(42);
$node->method('getName')->willReturn('myFile');
@ -663,7 +644,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
}
public function testGetSharedByWithLimit(): void {
$node = $this->getMockBuilder(File::class)->getMock();
$node = $this->createMock(File::class);
$node->method('getId')->willReturn(42);
$node->method('getName')->willReturn('myFile');
@ -713,7 +694,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],
@ -732,7 +713,7 @@ 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): void {
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))
@ -742,7 +723,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();
@ -754,7 +735,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
->where(
$qb->expr()->eq('id', $qb->createNamedParameter($id))
);
$cursor = $qb->execute();
$cursor = $qb->executeQuery();
$data = $cursor->fetchAll();
$cursor->closeCursor();
@ -763,11 +744,8 @@ class FederatedShareProviderTest extends \Test\TestCase {
/**
* @dataProvider dataTestIsOutgoingServer2serverShareEnabled
*
* @param string $isEnabled
* @param bool $expected
*/
public function testIsOutgoingServer2serverShareEnabled($internalOnly, $isEnabled, $expected): void {
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')
@ -779,7 +757,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
);
}
public function dataTestIsOutgoingServer2serverShareEnabled() {
public static function dataTestIsOutgoingServer2serverShareEnabled(): array {
return [
[false, 'yes', true],
[false, 'no', false],
@ -790,11 +768,8 @@ class FederatedShareProviderTest extends \Test\TestCase {
/**
* @dataProvider dataTestIsIncomingServer2serverShareEnabled
*
* @param string $isEnabled
* @param bool $expected
*/
public function testIsIncomingServer2serverShareEnabled($onlyInternal, $isEnabled, $expected): void {
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')
@ -806,7 +781,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
);
}
public function dataTestIsIncomingServer2serverShareEnabled() {
public static function dataTestIsIncomingServer2serverShareEnabled(): array {
return [
[false, 'yes', true],
[false, 'no', false],
@ -817,11 +792,8 @@ class FederatedShareProviderTest extends \Test\TestCase {
/**
* @dataProvider dataTestIsLookupServerQueriesEnabled
*
* @param string $isEnabled
* @param bool $expected
*/
public function testIsLookupServerQueriesEnabled($gsEnabled, $isEnabled, $expected): void {
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')
@ -834,7 +806,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
}
public function dataTestIsLookupServerQueriesEnabled() {
public static function dataTestIsLookupServerQueriesEnabled(): array {
return [
[true, 'yes', true],
[true, 'no', true],
@ -848,11 +820,8 @@ class FederatedShareProviderTest extends \Test\TestCase {
/**
* @dataProvider dataTestIsLookupServerUploadEnabled
*
* @param string $isEnabled
* @param bool $expected
*/
public function testIsLookupServerUploadEnabled($gsEnabled, $isEnabled, $expected): void {
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')
@ -864,7 +833,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
);
}
public function dataTestIsLookupServerUploadEnabled() {
public static function dataTestIsLookupServerUploadEnabled(): array {
return [
[true, 'yes', false],
[true, 'no', false],
@ -880,8 +849,8 @@ class FederatedShareProviderTest extends \Test\TestCase {
$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');
@ -934,7 +903,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
$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');

@ -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,30 @@ 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): void {
public function testSendUpdateToRemote(int $try, array $httpRequestResult, bool $expected): void {
$remote = 'http://remote';
$id = 42;
$timestamp = 63576;
@ -120,7 +99,7 @@ class NotificationsTest extends \Test\TestCase {
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 +120,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],

@ -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 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,
@ -56,9 +55,8 @@ class AdminTest extends TestCase {
/**
* @dataProvider sharingStateProvider
* @param bool $state
*/
public function testGetForm($state): void {
public function testGetForm(bool $state): void {
$this->federatedShareProvider
->expects($this->once())
->method('isOutgoingServer2serverShareEnabled')
@ -98,20 +96,24 @@ class AdminTest extends TestCase {
$this->gsConfig->expects($this->once())->method('onlyInternalFederation')
->willReturn($state);
$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],
['federatedTrustedShareAutoAccept', $state]
);
->willReturnCallback(function () use (&$calls) {
$expected = array_shift($calls);
$this->assertSame($expected, func_get_args());
});
$expected = new TemplateResponse('federatedfilesharing', 'settings-admin', [], '');
$this->assertEquals($expected, $this->admin->getForm());

@ -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,7 @@ 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;
@ -70,12 +72,7 @@ abstract class TestCase extends \Test\TestCase {
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;
}
@ -96,7 +93,7 @@ abstract class TestCase extends \Test\TestCase {
Server::get(IUserSession::class)->setUser(null);
Filesystem::tearDown();
Server::get(IUserSession::class)->login($user, $password);
\OC::$server->getUserFolder($user);
\OCP\Server::get(IRootFolder::class)->getUserFolder($user);
\OC_Util::setupFS($user);
}

@ -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();

Loading…
Cancel
Save