Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 8 additions & 10 deletions apps/files_external/tests/Auth/AuthMechanismTest.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<?php

declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2020-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
Expand All @@ -13,7 +15,7 @@
class AuthMechanismTest extends \Test\TestCase {
public function testJsonSerialization(): void {
$mechanism = $this->getMockBuilder(AuthMechanism::class)
->setMethods(['jsonSerializeDefinition'])
->onlyMethods(['jsonSerializeDefinition'])
->getMock();
$mechanism->expects($this->once())
->method('jsonSerializeDefinition')
Expand All @@ -26,7 +28,7 @@ public function testJsonSerialization(): void {
$this->assertEquals('scheme', $json['scheme']);
}

public function validateStorageProvider() {
public static function validateStorageProvider(): array {
return [
[true, 'scheme', true],
[false, 'scheme', false],
Expand All @@ -38,26 +40,22 @@ public function validateStorageProvider() {
/**
* @dataProvider validateStorageProvider
*/
public function testValidateStorage($expectedSuccess, $scheme, $definitionSuccess): void {
public function testValidateStorage(bool $expectedSuccess, string $scheme, bool $definitionSuccess): void {
$mechanism = $this->getMockBuilder(AuthMechanism::class)
->setMethods(['validateStorageDefinition'])
->onlyMethods(['validateStorageDefinition'])
->getMock();
$mechanism->expects($this->atMost(1))
->method('validateStorageDefinition')
->willReturn($definitionSuccess);

$mechanism->setScheme($scheme);

$backend = $this->getMockBuilder(Backend::class)
->disableOriginalConstructor()
->getMock();
$backend = $this->createMock(Backend::class);
$backend->expects($this->once())
->method('getAuthSchemes')
->willReturn(['scheme' => true, 'foobar' => true]);

$storageConfig = $this->getMockBuilder(StorageConfig::class)
->disableOriginalConstructor()
->getMock();
$storageConfig = $this->createMock(StorageConfig::class);
$storageConfig->expects($this->once())
->method('getBackend')
->willReturn($backend);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<?php

declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
Expand All @@ -8,26 +10,16 @@

use OCA\Files_External\Lib\Auth\Password\GlobalAuth;
use OCA\Files_External\Lib\InsufficientDataForMeaningfulAnswerException;
use OCA\Files_external\Lib\StorageConfig;
use OCA\Files_External\Lib\StorageConfig;
use OCP\IL10N;
use OCP\Security\ICredentialsManager;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;

class GlobalAuthTest extends TestCase {
/**
* @var IL10N|\PHPUnit\Framework\MockObject\MockObject
*/
private $l10n;

/**
* @var ICredentialsManager|\PHPUnit\Framework\MockObject\MockObject
*/
private $credentialsManager;

/**
* @var GlobalAuth
*/
private $instance;
private IL10N&MockObject $l10n;
private ICredentialsManager&MockObject $credentialsManager;
private GlobalAuth $instance;

protected function setUp(): void {
parent::setUp();
Expand All @@ -37,7 +29,7 @@ protected function setUp(): void {
}

private function getStorageConfig($type, $config = []) {
/** @var \OCA\Files_External\Lib\StorageConfig|\PHPUnit\Framework\MockObject\MockObject $storageConfig */
/** @var \OCA\Files_External\Lib\StorageConfig&MockObject $storageConfig */
$storageConfig = $this->createMock(StorageConfig::class);
$storageConfig->expects($this->any())
->method('getType')
Expand Down
10 changes: 6 additions & 4 deletions apps/files_external/tests/Backend/BackendTest.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<?php

declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
Expand All @@ -12,7 +14,7 @@
class BackendTest extends \Test\TestCase {
public function testJsonSerialization(): void {
$backend = $this->getMockBuilder(Backend::class)
->setMethods(['jsonSerializeDefinition'])
->onlyMethods(['jsonSerializeDefinition'])
->getMock();
$backend->expects($this->once())
->method('jsonSerializeDefinition')
Expand All @@ -32,7 +34,7 @@ public function testJsonSerialization(): void {
$this->assertContains('barauth', array_keys($json['authSchemes']));
}

public function validateStorageProvider() {
public static function validateStorageProvider(): array {
return [
[true, true],
[false, false],
Expand All @@ -42,9 +44,9 @@ public function validateStorageProvider() {
/**
* @dataProvider validateStorageProvider
*/
public function testValidateStorage($expectedSuccess, $definitionSuccess): void {
public function testValidateStorage(bool $expectedSuccess, bool $definitionSuccess): void {
$backend = $this->getMockBuilder(Backend::class)
->setMethods(['validateStorageDefinition'])
->onlyMethods(['validateStorageDefinition'])
->getMock();
$backend->expects($this->atMost(1))
->method('validateStorageDefinition')
Expand Down
17 changes: 7 additions & 10 deletions apps/files_external/tests/Backend/LegacyBackendTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
*/
namespace OCA\Files_External\Tests\Backend;

use OCA\Files_External\Lib\Auth\Builtin;
use OCA\Files_External\Lib\Backend\LegacyBackend;
use OCA\Files_External\Lib\DefinitionParameter;
use OCA\Files_External\Lib\MissingDependency;
Expand All @@ -15,18 +16,16 @@ class LegacyBackendTest extends \Test\TestCase {
/**
* @return MissingDependency[]
*/
public static function checkDependencies() {
public static function checkDependencies(): array {
return [
(new MissingDependency('abc'))->setMessage('foobar')
];
}

public function testConstructor(): void {
$auth = $this->getMockBuilder('\OCA\Files_External\Lib\Auth\Builtin')
->disableOriginalConstructor()
->getMock();
$auth = $this->createMock(Builtin::class);

$class = '\OCA\Files_External\Tests\Backend\LegacyBackendTest';
$class = self::class;
$definition = [
'configuration' => [
'textfield' => 'Text field',
Expand All @@ -43,7 +42,7 @@ public function testConstructor(): void {

$backend = new LegacyBackend($class, $definition, $auth);

$this->assertEquals('\OCA\Files_External\Tests\Backend\LegacyBackendTest', $backend->getStorageClass());
$this->assertEquals(self::class, $backend->getStorageClass());
$this->assertEquals('Backend text', $backend->getText());
$this->assertEquals(123, $backend->getPriority());
$this->assertContains('foo/bar.js', $backend->getCustomJs());
Expand Down Expand Up @@ -74,11 +73,9 @@ public function testConstructor(): void {
}

public function testNoDependencies(): void {
$auth = $this->getMockBuilder('\OCA\Files_External\Lib\Auth\Builtin')
->disableOriginalConstructor()
->getMock();
$auth = $this->createMock(Builtin::class);

$class = '\OCA\Files_External\Tests\Backend\LegacyBackendTest';
$class = self::class;
$definition = [
'configuration' => [
],
Expand Down
11 changes: 7 additions & 4 deletions apps/files_external/tests/Command/ApplicableTest.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<?php

declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
Expand All @@ -9,12 +11,13 @@
use OCA\Files_External\Command\Applicable;
use OCP\IGroupManager;
use OCP\IUserManager;
use PHPUnit\Framework\MockObject\MockObject;

class ApplicableTest extends CommandTest {
private function getInstance($storageService) {
/** @var IUserManager|\PHPUnit\Framework\MockObject\MockObject $userManager */
class ApplicableTest extends CommandTestCase {
private function getInstance($storageService): Applicable {
/** @var IUserManager&MockObject $userManager */
$userManager = $this->createMock(IUserManager::class);
/** @var IGroupManager|\PHPUnit\Framework\MockObject\MockObject $groupManager */
/** @var IGroupManager&MockObject $groupManager */
$groupManager = $this->createMock(IGroupManager::class);

$userManager->expects($this->any())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,32 +9,31 @@
use OCA\Files_External\Lib\StorageConfig;
use OCA\Files_External\NotFoundException;
use OCA\Files_External\Service\GlobalStoragesService;
use PHPUnit\Framework\MockObject\MockObject;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Input\Input;
use Symfony\Component\Console\Output\BufferedOutput;
use Test\TestCase;

abstract class CommandTest extends TestCase {
abstract class CommandTestCase extends TestCase {
/**
* @param StorageConfig[] $mounts
* @return GlobalStoragesService|\PHPUnit\Framework\MockObject\MockObject
* @return GlobalStoragesService&MockObject
*/
protected function getGlobalStorageService(array $mounts = []) {
$mock = $this->getMockBuilder('OCA\Files_External\Service\GlobalStoragesService')
->disableOriginalConstructor()
->getMock();
$mock = $this->createMock(GlobalStoragesService::class);

$this->bindMounts($mock, $mounts);

return $mock;
}

/**
* @param \PHPUnit\Framework\MockObject\MockObject $mock
* @param MockObject $mock
* @param StorageConfig[] $mounts
*/
protected function bindMounts(\PHPUnit\Framework\MockObject\MockObject $mock, array $mounts) {
protected function bindMounts(MockObject $mock, array $mounts) {
$mock->expects($this->any())
->method('getStorage')
->willReturnCallback(function ($id) use ($mounts) {
Expand Down Expand Up @@ -70,7 +69,7 @@ protected function getMount($id, $mountPoint, $backendClass, $applicableIdentifi
return $mount;
}

protected function getInput(Command $command, array $arguments = [], array $options = []) {
protected function getInput(Command $command, array $arguments = [], array $options = []): ArrayInput {
$input = new ArrayInput([]);
$input->bind($command->getDefinition());
foreach ($arguments as $key => $value) {
Expand All @@ -82,7 +81,7 @@ protected function getInput(Command $command, array $arguments = [], array $opti
return $input;
}

protected function executeCommand(Command $command, Input $input) {
protected function executeCommand(Command $command, Input $input): string {
$output = new BufferedOutput();
$this->invokePrivate($command, 'execute', [$input, $output]);
return $output->fetch();
Expand Down
22 changes: 9 additions & 13 deletions apps/files_external/tests/Command/ListCommandTest.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<?php

declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
Expand All @@ -16,33 +18,27 @@
use OCA\Files_External\Service\UserStoragesService;
use OCP\Authentication\LoginCredentials\IStore;
use OCP\IL10N;
use OCP\ISession;
use OCP\IUserManager;
use OCP\IUserSession;
use OCP\Security\ICrypto;
use PHPUnit\Framework\MockObject\MockObject;
use Symfony\Component\Console\Output\BufferedOutput;

class ListCommandTest extends CommandTest {
/**
* @return ListCommand|\PHPUnit\Framework\MockObject\MockObject
*/
private function getInstance() {
/** @var GlobalStoragesService|\PHPUnit\Framework\MockObject\MockObject $globalService */
class ListCommandTest extends CommandTestCase {
private function getInstance(): ListCommand {
/** @var GlobalStoragesService&MockObject $globalService */
$globalService = $this->createMock(GlobalStoragesService::class);
/** @var UserStoragesService|\PHPUnit\Framework\MockObject\MockObject $userService */
/** @var UserStoragesService&MockObject $userService */
$userService = $this->createMock(UserStoragesService::class);
/** @var IUserManager|\PHPUnit\Framework\MockObject\MockObject $userManager */
/** @var IUserManager&MockObject $userManager */
$userManager = $this->createMock(IUserManager::class);
/** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject $userSession */
/** @var IUserSession&MockObject $userSession */
$userSession = $this->createMock(IUserSession::class);

return new ListCommand($globalService, $userService, $userSession, $userManager);
}

public function testListAuthIdentifier(): void {
$l10n = $this->createMock(IL10N::class);
$session = $this->createMock(ISession::class);
$crypto = $this->createMock(ICrypto::class);
$instance = $this->getInstance();
$mount1 = new StorageConfig();
$mount1->setAuthMechanism(new Password($l10n));
Expand Down
34 changes: 13 additions & 21 deletions apps/files_external/tests/Config/UserPlaceholderHandlerTest.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<?php

declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
Expand All @@ -12,25 +14,15 @@
use OCP\IUserSession;
use OCP\Share\Exceptions\ShareNotFound;
use OCP\Share\IManager;
use PHPUnit\Framework\MockObject\MockObject;

class UserPlaceholderHandlerTest extends \Test\TestCase {
/** @var IUser|\PHPUnit\Framework\MockObject\MockObject */
protected $user;

/** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject */
protected $session;

/** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
private $shareManager;

/** @var IRequest|\PHPUnit\Framework\MockObject\MockObject */
private $request;

/** @var IUserManager|\PHPUnit\Framework\MockObject\MockObject */
private $userManager;

/** @var UserPlaceholderHandler */
protected $handler;
protected IUser&MockObject $user;
protected IUserSession&MockObject $session;
protected IManager&MockObject $shareManager;
protected IRequest&MockObject $request;
protected IUserManager&MockObject $userManager;
protected UserPlaceholderHandler $handler;

protected function setUp(): void {
parent::setUp();
Expand All @@ -47,13 +39,13 @@ protected function setUp(): void {
$this->handler = new UserPlaceholderHandler($this->session, $this->shareManager, $this->request, $this->userManager);
}

protected function setUser() {
protected function setUser(): void {
$this->session->expects($this->any())
->method('getUser')
->willReturn($this->user);
}

public function optionProvider() {
public static function optionProvider(): array {
return [
['/foo/bar/$user/foobar', '/foo/bar/alice/foobar'],
[['/foo/bar/$user/foobar'], ['/foo/bar/alice/foobar']],
Expand All @@ -64,15 +56,15 @@ public function optionProvider() {
/**
* @dataProvider optionProvider
*/
public function testHandle($option, $expected): void {
public function testHandle(string|array $option, string|array $expected): void {
$this->setUser();
$this->assertSame($expected, $this->handler->handle($option));
}

/**
* @dataProvider optionProvider
*/
public function testHandleNoUser($option): void {
public function testHandleNoUser(string|array $option): void {
$this->shareManager->expects($this->once())
->method('getShareByToken')
->willThrowException(new ShareNotFound());
Expand Down
Loading
Loading