diff options
Diffstat (limited to 'tests/lib')
338 files changed, 4250 insertions, 3727 deletions
diff --git a/tests/lib/Accounts/AccountManagerTest.php b/tests/lib/Accounts/AccountManagerTest.php index fab3aaf5fdd..6e2f30a2c26 100644 --- a/tests/lib/Accounts/AccountManagerTest.php +++ b/tests/lib/Accounts/AccountManagerTest.php @@ -29,6 +29,7 @@ use OCP\L10N\IFactory; use OCP\Mail\IMailer; use OCP\Security\ICrypto; use OCP\Security\VerificationToken\IVerificationToken; +use OCP\Server; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; use Test\TestCase; @@ -61,7 +62,7 @@ class AccountManagerTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->connection = \OCP\Server::get(IDBConnection::class); + $this->connection = Server::get(IDBConnection::class); $this->phoneNumberUtil = new PhoneNumberUtil(); $this->eventDispatcher = $this->createMock(IEventDispatcher::class); @@ -488,7 +489,7 @@ class AccountManagerTest extends TestCase { } else { $this->eventDispatcher->expects($this->once())->method('dispatchTyped') ->willReturnCallback( - function ($event) use ($user, $newData) { + function ($event) use ($user, $newData): void { $this->assertInstanceOf(UserUpdatedEvent::class, $event); $this->assertSame($user, $event->getUser()); $this->assertSame($newData, $event->getData()); @@ -499,7 +500,7 @@ class AccountManagerTest extends TestCase { $this->invokePrivate($accountManager, 'updateUser', [$user, $newData, $oldData]); } - public function dataTrueFalse(): array { + public static function dataTrueFalse(): array { return [ #$newData | $oldData | $insertNew | $updateExisting [['myProperty' => ['value' => 'newData']], ['myProperty' => ['value' => 'oldData']], false, true], @@ -896,7 +897,7 @@ class AccountManagerTest extends TestCase { } } - public function searchDataProvider(): array { + public static function searchDataProvider(): array { return [ [ #0 Search for an existing name IAccountManager::PROPERTY_DISPLAYNAME, @@ -948,21 +949,22 @@ class AccountManagerTest extends TestCase { ]; } - public function dataCheckEmailVerification(): array { + public static function dataCheckEmailVerification(): array { return [ - [$this->makeUser('steve', 'Steve Smith', 'steve@steve.steve'), null], - [$this->makeUser('emma', 'Emma Morales', 'emma@emma.com'), 'emma@morales.com'], - [$this->makeUser('sarah@web.org', 'Sarah Foster', 'sarah@web.org'), null], - [$this->makeUser('cole@web.org', 'Cole Harrison', 'cole@web.org'), 'cole@example.com'], - [$this->makeUser('8d29e358-cf69-4849-bbf9-28076c0b908b', 'Alice McPherson', 'alice@example.com'), 'alice@mcpherson.com'], - [$this->makeUser('11da2744-3f4d-4c17-8c13-4c057a379237', 'James Loranger', 'james@example.com'), ''], + [['steve', 'Steve Smith', 'steve@steve.steve'], null], + [['emma', 'Emma Morales', 'emma@emma.com'], 'emma@morales.com'], + [['sarah@web.org', 'Sarah Foster', 'sarah@web.org'], null], + [['cole@web.org', 'Cole Harrison', 'cole@web.org'], 'cole@example.com'], + [['8d29e358-cf69-4849-bbf9-28076c0b908b', 'Alice McPherson', 'alice@example.com'], 'alice@mcpherson.com'], + [['11da2744-3f4d-4c17-8c13-4c057a379237', 'James Loranger', 'james@example.com'], ''], ]; } /** * @dataProvider dataCheckEmailVerification */ - public function testCheckEmailVerification(IUser $user, ?string $newEmail): void { + public function testCheckEmailVerification(array $userData, ?string $newEmail): void { + $user = $this->makeUser(...$userData); // Once because of getAccount, once because of getUser $this->config->expects($this->exactly(2))->method('getSystemValue')->with('account_manager.default_property_scope', [])->willReturn([]); $account = $this->accountManager->getAccount($user); @@ -988,7 +990,7 @@ class AccountManagerTest extends TestCase { $this->invokePrivate($this->accountManager, 'checkEmailVerification', [$account, $oldData]); } - public function dataSetDefaultPropertyScopes(): array { + public static function dataSetDefaultPropertyScopes(): array { return [ [ [], diff --git a/tests/lib/Accounts/AccountPropertyTest.php b/tests/lib/Accounts/AccountPropertyTest.php index 5df66eaa117..68e1da41557 100644 --- a/tests/lib/Accounts/AccountPropertyTest.php +++ b/tests/lib/Accounts/AccountPropertyTest.php @@ -56,18 +56,13 @@ class AccountPropertyTest extends TestCase { $this->assertEquals(IAccountManager::SCOPE_LOCAL, $actualReturn->getScope()); } - public function scopesProvider() { + public static function scopesProvider(): array { return [ // current values [IAccountManager::SCOPE_PRIVATE, IAccountManager::SCOPE_PRIVATE], [IAccountManager::SCOPE_LOCAL, IAccountManager::SCOPE_LOCAL], [IAccountManager::SCOPE_FEDERATED, IAccountManager::SCOPE_FEDERATED], [IAccountManager::SCOPE_PUBLISHED, IAccountManager::SCOPE_PUBLISHED], - // legacy values - [IAccountManager::VISIBILITY_PRIVATE, IAccountManager::SCOPE_LOCAL], - [IAccountManager::VISIBILITY_CONTACTS_ONLY, IAccountManager::SCOPE_FEDERATED], - [IAccountManager::VISIBILITY_PUBLIC, IAccountManager::SCOPE_PUBLISHED], - ['', IAccountManager::SCOPE_LOCAL], // invalid values ['unknown', null], ['v2-unknown', null], diff --git a/tests/lib/Accounts/HooksTest.php b/tests/lib/Accounts/HooksTest.php index 75772089f43..73cef2e2c65 100644 --- a/tests/lib/Accounts/HooksTest.php +++ b/tests/lib/Accounts/HooksTest.php @@ -96,14 +96,14 @@ class HooksTest extends TestCase { } } + $params['user'] = $this->createMock(IUser::class); $this->hooks->changeUserHook($params['user'], $params['feature'], $params['value']); } - public function dataTestChangeUserHook() { - $user = $this->createMock(IUser::class); + public static function dataTestChangeUserHook(): array { return [ [ - ['user' => $user, 'feature' => '', 'value' => ''], + ['feature' => '', 'value' => ''], [ IAccountManager::PROPERTY_EMAIL => ['value' => ''], IAccountManager::PROPERTY_DISPLAYNAME => ['value' => ''] @@ -111,7 +111,7 @@ class HooksTest extends TestCase { false, false, true ], [ - ['user' => $user, 'feature' => 'foo', 'value' => 'bar'], + ['feature' => 'foo', 'value' => 'bar'], [ IAccountManager::PROPERTY_EMAIL => ['value' => 'oldMail@example.com'], IAccountManager::PROPERTY_DISPLAYNAME => ['value' => 'oldDisplayName'] @@ -119,7 +119,7 @@ class HooksTest extends TestCase { false, false, false ], [ - ['user' => $user, 'feature' => 'eMailAddress', 'value' => 'newMail@example.com'], + ['feature' => 'eMailAddress', 'value' => 'newMail@example.com'], [ IAccountManager::PROPERTY_EMAIL => ['value' => 'oldMail@example.com'], IAccountManager::PROPERTY_DISPLAYNAME => ['value' => 'oldDisplayName'] @@ -127,7 +127,7 @@ class HooksTest extends TestCase { true, false, false ], [ - ['user' => $user, 'feature' => 'displayName', 'value' => 'newDisplayName'], + ['feature' => 'displayName', 'value' => 'newDisplayName'], [ IAccountManager::PROPERTY_EMAIL => ['value' => 'oldMail@example.com'], IAccountManager::PROPERTY_DISPLAYNAME => ['value' => 'oldDisplayName'] diff --git a/tests/lib/Activity/ManagerTest.php b/tests/lib/Activity/ManagerTest.php index 61eeee82c43..e895991bac7 100644 --- a/tests/lib/Activity/ManagerTest.php +++ b/tests/lib/Activity/ManagerTest.php @@ -9,6 +9,8 @@ namespace Test\Activity; use OCP\Activity\Exceptions\IncompleteActivityException; +use OCP\Activity\IConsumer; +use OCP\Activity\IEvent; use OCP\IConfig; use OCP\IL10N; use OCP\IRequest; @@ -74,7 +76,7 @@ class ManagerTest extends TestCase { self::invokePrivate($this->activityManager, 'getConsumers'); } - public function getUserFromTokenThrowInvalidTokenData() { + public static function getUserFromTokenThrowInvalidTokenData(): array { return [ [null, []], ['', []], @@ -98,7 +100,7 @@ class ManagerTest extends TestCase { self::invokePrivate($this->activityManager, 'getUserFromToken'); } - public function getUserFromTokenData() { + public static function getUserFromTokenData(): array { return [ [null, '123456789012345678901234567890', 'user1'], ['user2', null, 'user2'], @@ -190,7 +192,7 @@ class ManagerTest extends TestCase { $this->activityManager->publish($event); } - public function dataPublish() { + public static function dataPublish(): array { return [ [null, ''], ['test_author', 'test_author'], @@ -228,7 +230,7 @@ class ManagerTest extends TestCase { $consumer->expects($this->once()) ->method('receive') ->with($event) - ->willReturnCallback(function (\OCP\Activity\IEvent $event) use ($expected) { + ->willReturnCallback(function (IEvent $event) use ($expected): void { $this->assertLessThanOrEqual(time() + 2, $event->getTimestamp(), 'Timestamp not set correctly'); $this->assertGreaterThanOrEqual(time() - 2, $event->getTimestamp(), 'Timestamp not set correctly'); $this->assertSame($expected, $event->getAuthor(), 'Author name not set correctly'); @@ -258,7 +260,7 @@ class ManagerTest extends TestCase { ->getMock(); $consumer->expects($this->once()) ->method('receive') - ->willReturnCallback(function (\OCP\Activity\IEvent $event) { + ->willReturnCallback(function (IEvent $event): void { $this->assertSame('test_app', $event->getApp(), 'App not set correctly'); $this->assertSame('test_type', $event->getType(), 'Type not set correctly'); $this->assertSame('test_affected', $event->getAffectedUser(), 'Affected user not set correctly'); @@ -281,7 +283,7 @@ class ManagerTest extends TestCase { } } -class NoOpConsumer implements \OCP\Activity\IConsumer { - public function receive(\OCP\Activity\IEvent $event) { +class NoOpConsumer implements IConsumer { + public function receive(IEvent $event) { } } diff --git a/tests/lib/AllConfigTest.php b/tests/lib/AllConfigTest.php index e892e441ecf..9d204754d96 100644 --- a/tests/lib/AllConfigTest.php +++ b/tests/lib/AllConfigTest.php @@ -14,9 +14,11 @@ namespace Test; * * @package Test */ - +use OC\AllConfig; use OC\SystemConfig; use OCP\IDBConnection; +use OCP\PreConditionNotMetException; +use OCP\Server; class AllConfigTest extends \Test\TestCase { /** @var \OCP\IDBConnection */ @@ -24,7 +26,7 @@ class AllConfigTest extends \Test\TestCase { protected function getConfig($systemConfig = null, $connection = null) { if ($this->connection === null) { - $this->connection = \OC::$server->getDatabaseConnection(); + $this->connection = Server::get(IDBConnection::class); } if ($connection === null) { $connection = $this->connection; @@ -34,7 +36,7 @@ class AllConfigTest extends \Test\TestCase { ->disableOriginalConstructor() ->getMock(); } - return new \OC\AllConfig($systemConfig, $connection); + return new AllConfig($systemConfig, $connection); } public function testDeleteUserValue(): void { @@ -91,6 +93,27 @@ class AllConfigTest extends \Test\TestCase { $config->deleteUserValue('userSet', 'appSet', 'keySet'); } + /** + * This test needs to stay! Emails are expected to be lowercase due to performance reasons. + * This way we can skip the expensive casing change on the database. + */ + public function testSetUserValueSettingsEmail(): void { + $selectAllSQL = 'SELECT `userid`, `appid`, `configkey`, `configvalue` FROM `*PREFIX*preferences` WHERE `userid` = ?'; + $config = $this->getConfig(); + + $config->setUserValue('userSet', 'settings', 'email', 'mixed.CASE@domain.COM'); + + $result = $this->connection->executeQuery($selectAllSQL, ['userSet'])->fetchAll(); + + $this->assertEquals(1, count($result)); + $this->assertEquals([ + 'userid' => 'userSet', + 'appid' => 'settings', + 'configkey' => 'email', + 'configvalue' => 'mixed.case@domain.com' + ], $result[0]); + } + public function testSetUserValueWithPreCondition(): void { $config = $this->getConfig(); @@ -125,7 +148,7 @@ class AllConfigTest extends \Test\TestCase { $config->deleteUserValue('userPreCond', 'appPreCond', 'keyPreCond'); } - public function dataSetUserValueUnexpectedValue() { + public static function dataSetUserValueUnexpectedValue(): array { return [ [true], [false], @@ -147,7 +170,7 @@ class AllConfigTest extends \Test\TestCase { public function testSetUserValueWithPreConditionFailure(): void { - $this->expectException(\OCP\PreConditionNotMetException::class); + $this->expectException(PreConditionNotMetException::class); $config = $this->getConfig(); @@ -183,7 +206,7 @@ class AllConfigTest extends \Test\TestCase { } public function testSetUserValueWithPreConditionFailureWhenResultStillMatches(): void { - $this->expectException(\OCP\PreConditionNotMetException::class); + $this->expectException(PreConditionNotMetException::class); $config = $this->getConfig(); diff --git a/tests/lib/App/AppManagerTest.php b/tests/lib/App/AppManagerTest.php index 19039366aa8..5cd141c16a9 100644 --- a/tests/lib/App/AppManagerTest.php +++ b/tests/lib/App/AppManagerTest.php @@ -12,6 +12,7 @@ namespace Test\App; use OC\App\AppManager; use OC\AppConfig; +use OC\Config\ConfigManager; use OCP\App\AppPathNotFoundException; use OCP\App\Events\AppDisableEvent; use OCP\App\Events\AppEnableEvent; @@ -36,10 +37,7 @@ use Test\TestCase; * @package Test\App */ class AppManagerTest extends TestCase { - /** - * @return AppConfig|MockObject - */ - protected function getAppConfig() { + protected function getAppConfig(): AppConfig&MockObject { $appConfig = []; $config = $this->createMock(AppConfig::class); @@ -50,7 +48,7 @@ class AppManagerTest extends TestCase { }); $config->expects($this->any()) ->method('setValue') - ->willReturnCallback(function ($app, $key, $value) use (&$appConfig) { + ->willReturnCallback(function ($app, $key, $value) use (&$appConfig): void { if (!isset($appConfig[$app])) { $appConfig[$app] = []; } @@ -71,37 +69,32 @@ class AppManagerTest extends TestCase { return $values; } }); + $config->expects($this->any()) + ->method('searchValues') + ->willReturnCallback(function ($key, $lazy, $type) use (&$appConfig) { + $values = []; + foreach ($appConfig as $appid => $appData) { + if (isset($appData[$key])) { + $values[$appid] = $appData[$key]; + } + } + return $values; + }); return $config; } - /** @var IUserSession|MockObject */ - protected $userSession; - - /** @var IConfig|MockObject */ - private $config; - - /** @var IGroupManager|MockObject */ - protected $groupManager; - - /** @var AppConfig|MockObject */ - protected $appConfig; - - /** @var ICache|MockObject */ - protected $cache; - - /** @var ICacheFactory|MockObject */ - protected $cacheFactory; - - /** @var IEventDispatcher|MockObject */ - protected $eventDispatcher; - - /** @var LoggerInterface|MockObject */ - protected $logger; - + protected IUserSession&MockObject $userSession; + private IConfig&MockObject $config; + protected IGroupManager&MockObject $groupManager; + protected AppConfig&MockObject $appConfig; + protected ICache&MockObject $cache; + protected ICacheFactory&MockObject $cacheFactory; + protected IEventDispatcher&MockObject $eventDispatcher; + protected LoggerInterface&MockObject $logger; protected IURLGenerator&MockObject $urlGenerator; - protected ServerVersion&MockObject $serverVersion; + protected ConfigManager&MockObject $configManager; /** @var IAppManager */ protected $manager; @@ -119,6 +112,7 @@ class AppManagerTest extends TestCase { $this->logger = $this->createMock(LoggerInterface::class); $this->urlGenerator = $this->createMock(IURLGenerator::class); $this->serverVersion = $this->createMock(ServerVersion::class); + $this->configManager = $this->createMock(ConfigManager::class); $this->overwriteService(AppConfig::class, $this->appConfig); $this->overwriteService(IURLGenerator::class, $this->urlGenerator); @@ -141,6 +135,7 @@ class AppManagerTest extends TestCase { $this->eventDispatcher, $this->logger, $this->serverVersion, + $this->configManager, ); } @@ -159,15 +154,15 @@ class AppManagerTest extends TestCase { } } - public function dataGetAppIcon(): array { - $nothing = function ($appId) { - $this->assertEquals('test', $appId); + public static function dataGetAppIcon(): array { + $nothing = function ($appId): void { + self::assertEquals('test', $appId); throw new \RuntimeException(); }; $createCallback = function ($workingIcons) { return function ($appId, $icon) use ($workingIcons) { - $this->assertEquals('test', $appId); + self::assertEquals('test', $appId); if (in_array($icon, $workingIcons)) { return '/path/' . $icon; } @@ -284,6 +279,7 @@ class AppManagerTest extends TestCase { $this->eventDispatcher, $this->logger, $this->serverVersion, + $this->configManager, ]) ->onlyMethods([ 'getAppPath', @@ -301,7 +297,7 @@ class AppManagerTest extends TestCase { $this->assertEquals('["group1","group2"]', $this->appConfig->getValue('test', 'enabled', 'no')); } - public function dataEnableAppForGroupsAllowedTypes() { + public static function dataEnableAppForGroupsAllowedTypes(): array { return [ [[]], [[ @@ -338,6 +334,7 @@ class AppManagerTest extends TestCase { $this->eventDispatcher, $this->logger, $this->serverVersion, + $this->configManager, ]) ->onlyMethods([ 'getAppPath', @@ -361,7 +358,7 @@ class AppManagerTest extends TestCase { $this->assertEquals('["group1","group2"]', $this->appConfig->getValue('test', 'enabled', 'no')); } - public function dataEnableAppForGroupsForbiddenTypes() { + public static function dataEnableAppForGroupsForbiddenTypes(): array { return [ ['filesystem'], ['prelogin'], @@ -400,6 +397,7 @@ class AppManagerTest extends TestCase { $this->eventDispatcher, $this->logger, $this->serverVersion, + $this->configManager, ]) ->onlyMethods([ 'getAppPath', @@ -605,6 +603,7 @@ class AppManagerTest extends TestCase { $this->eventDispatcher, $this->logger, $this->serverVersion, + $this->configManager, ]) ->onlyMethods(['getAppInfo']) ->getMock(); @@ -665,6 +664,7 @@ class AppManagerTest extends TestCase { $this->eventDispatcher, $this->logger, $this->serverVersion, + $this->configManager, ]) ->onlyMethods(['getAppInfo']) ->getMock(); @@ -806,6 +806,7 @@ class AppManagerTest extends TestCase { $this->eventDispatcher, $this->logger, $this->serverVersion, + $this->configManager, ]) ->onlyMethods([ 'getAppInfo', @@ -837,6 +838,7 @@ class AppManagerTest extends TestCase { $this->eventDispatcher, $this->logger, $this->serverVersion, + $this->configManager, ]) ->onlyMethods([ 'getAppInfo', @@ -867,6 +869,7 @@ class AppManagerTest extends TestCase { $this->eventDispatcher, $this->logger, $this->serverVersion, + $this->configManager, ]) ->onlyMethods([ 'getAppInfo', diff --git a/tests/lib/App/AppStore/Fetcher/AppDiscoverFetcherTest.php b/tests/lib/App/AppStore/Fetcher/AppDiscoverFetcherTest.php index e7652d5c50c..5a9c37af7fb 100644 --- a/tests/lib/App/AppStore/Fetcher/AppDiscoverFetcherTest.php +++ b/tests/lib/App/AppStore/Fetcher/AppDiscoverFetcherTest.php @@ -104,7 +104,7 @@ class AppDiscoverFetcherTest extends FetcherBase { } } - public function dataGetETag(): array { + public static function dataGetETag(): array { return [ 'file not found' => [null, true], 'empty file' => [null, false, ''], diff --git a/tests/lib/App/AppStore/Fetcher/AppFetcherTest.php b/tests/lib/App/AppStore/Fetcher/AppFetcherTest.php index 61fe24be1a9..0d311d8878a 100644 --- a/tests/lib/App/AppStore/Fetcher/AppFetcherTest.php +++ b/tests/lib/App/AppStore/Fetcher/AppFetcherTest.php @@ -1840,7 +1840,7 @@ EJL3BaQAQaASSsvFrcozYxrQG4VzEg== $this->registry = $this->createMock(IRegistry::class); $this->fetcher = $this->getMockBuilder(AppFetcher::class) - ->setMethods(['getChannel']) + ->onlyMethods(['getChannel']) ->setConstructorArgs([ $factory, $this->clientService, diff --git a/tests/lib/App/AppStore/Version/VersionParserTest.php b/tests/lib/App/AppStore/Version/VersionParserTest.php index 5bd9ee16b39..c4dd78af496 100644 --- a/tests/lib/App/AppStore/Version/VersionParserTest.php +++ b/tests/lib/App/AppStore/Version/VersionParserTest.php @@ -22,7 +22,7 @@ class VersionParserTest extends TestCase { /** * @return array */ - public function versionProvider() { + public static function versionProvider(): array { return [ [ '*', @@ -66,7 +66,7 @@ class VersionParserTest extends TestCase { $this->assertEquals($expected, $this->versionParser->getVersion($input)); } - + public function testGetVersionException(): void { $this->expectException(\Exception::class); $this->expectExceptionMessage('Version cannot be parsed: BogusVersion'); @@ -74,7 +74,7 @@ class VersionParserTest extends TestCase { $this->versionParser->getVersion('BogusVersion'); } - + public function testGetVersionExceptionWithMultiple(): void { $this->expectException(\Exception::class); $this->expectExceptionMessage('Version cannot be parsed: >=8.2 <=9.1a'); diff --git a/tests/lib/App/CompareVersionTest.php b/tests/lib/App/CompareVersionTest.php index 0d020428fed..f357e47d670 100644 --- a/tests/lib/App/CompareVersionTest.php +++ b/tests/lib/App/CompareVersionTest.php @@ -23,7 +23,7 @@ class CompareVersionTest extends TestCase { $this->compare = new CompareVersion(); } - public function comparisonData() { + public static function comparisonData(): array { return [ // Compatible versions ['13.0.0.3', '13.0.0', '>=', true], diff --git a/tests/lib/App/DependencyAnalyzerTest.php b/tests/lib/App/DependencyAnalyzerTest.php index 31eeb77d7e5..d3874b5bb60 100644 --- a/tests/lib/App/DependencyAnalyzerTest.php +++ b/tests/lib/App/DependencyAnalyzerTest.php @@ -195,7 +195,7 @@ class DependencyAnalyzerTest extends TestCase { /** * @return array */ - public function providesOC() { + public static function providesOC(): array { return [ // no version -> no missing dependency [ @@ -423,7 +423,7 @@ class DependencyAnalyzerTest extends TestCase { /** * @return array */ - public function providesOS() { + public static function providesOS(): array { return [ [[], null], [[], []], @@ -435,7 +435,7 @@ class DependencyAnalyzerTest extends TestCase { /** * @return array */ - public function providesLibs() { + public static function providesLibs(): array { return [ // we expect curl to exist [[], 'curl'], @@ -465,7 +465,7 @@ class DependencyAnalyzerTest extends TestCase { /** * @return array */ - public function providesCommands() { + public static function providesCommands(): array { return [ [[], null], // grep is known on linux @@ -483,7 +483,7 @@ class DependencyAnalyzerTest extends TestCase { /** * @return array */ - public function providesDatabases() { + public static function providesDatabases(): array { return [ // non BC - in case on databases are defined -> all are supported [[], null], @@ -496,7 +496,7 @@ class DependencyAnalyzerTest extends TestCase { /** * @return array */ - public function providesPhpVersion() { + public static function providesPhpVersion(): array { return [ [[], null, null, null], [[], '5.4', null, null], diff --git a/tests/lib/App/InfoParserTest.php b/tests/lib/App/InfoParserTest.php index 1c429ccc405..3611a562a74 100644 --- a/tests/lib/App/InfoParserTest.php +++ b/tests/lib/App/InfoParserTest.php @@ -45,7 +45,7 @@ class InfoParserTest extends TestCase { $this->parserTest($expectedJson, $xmlFile, self::$cache); } - public function providesInfoXml(): array { + public static function providesInfoXml(): array { return [ ['expected-info.json', 'valid-info.xml'], [null, 'invalid-info.xml'], diff --git a/tests/lib/App/PlatformRepositoryTest.php b/tests/lib/App/PlatformRepositoryTest.php index 921d24159c9..01d49d84832 100644 --- a/tests/lib/App/PlatformRepositoryTest.php +++ b/tests/lib/App/PlatformRepositoryTest.php @@ -6,7 +6,7 @@ */ namespace Test\App; -use OC; +use OC\App\PlatformRepository; class PlatformRepositoryTest extends \Test\TestCase { /** @@ -15,12 +15,12 @@ class PlatformRepositoryTest extends \Test\TestCase { * @param $input */ public function testVersion($input, $expected): void { - $pr = new OC\App\PlatformRepository(); + $pr = new PlatformRepository(); $normalizedVersion = $pr->normalizeVersion($input); $this->assertEquals($expected, $normalizedVersion); } - public function providesVersions() { + public static function providesVersions(): array { return [ 'none' => ['1.0.0', '1.0.0.0'], 'none/2' => ['1.2.3.4', '1.2.3.4'], diff --git a/tests/lib/AppConfigTest.php b/tests/lib/AppConfigTest.php index 518d7909d70..b7878c42c83 100644 --- a/tests/lib/AppConfigTest.php +++ b/tests/lib/AppConfigTest.php @@ -14,6 +14,7 @@ use OCP\Exceptions\AppConfigUnknownKeyException; use OCP\IAppConfig; use OCP\IDBConnection; use OCP\Security\ICrypto; +use OCP\Server; use Psr\Log\LoggerInterface; /** @@ -32,13 +33,13 @@ class AppConfigTest extends TestCase { private array $originalConfig; /** - * @var array<string, array<array<string, string, int, bool, bool>>> - * [appId => [configKey, configValue, valueType, lazy, sensitive]] + * @var array<string, array<string, array<string, string, int, bool, bool>>> + * [appId => [configKey, configValue, valueType, lazy, sensitive]] */ - private array $baseStruct = + private static array $baseStruct = [ 'testapp' => [ - 'enabled' => ['enabled', 'true'], + 'enabled' => ['enabled', 'yes'], 'installed_version' => ['installed_version', '1.2.3'], 'depends_on' => ['depends_on', 'someapp'], 'deletethis' => ['deletethis', 'deletethis'], @@ -49,11 +50,12 @@ class AppConfigTest extends TestCase { 'otherkey' => ['otherkey', 'othervalue'] ], '123456' => [ - 'enabled' => ['enabled', 'true'], + 'enabled' => ['enabled', 'yes'], 'key' => ['key', 'value'] ], 'anotherapp' => [ - 'enabled' => ['enabled', 'false'], + 'enabled' => ['enabled', 'no'], + 'installed_version' => ['installed_version', '3.2.1'], 'key' => ['key', 'value'] ], 'non-sensitive-app' => [ @@ -86,9 +88,9 @@ class AppConfigTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->connection = \OCP\Server::get(IDBConnection::class); - $this->logger = \OCP\Server::get(LoggerInterface::class); - $this->crypto = \OCP\Server::get(ICrypto::class); + $this->connection = Server::get(IDBConnection::class); + $this->logger = Server::get(LoggerInterface::class); + $this->crypto = Server::get(ICrypto::class); // storing current config and emptying the data table $sql = $this->connection->getQueryBuilder(); @@ -114,14 +116,14 @@ class AppConfigTest extends TestCase { ] ); - foreach ($this->baseStruct as $appId => $appData) { + foreach (self::$baseStruct as $appId => $appData) { foreach ($appData as $key => $row) { $value = $row[1]; $type = $row[2] ?? IAppConfig::VALUE_MIXED; if (($row[4] ?? false) === true) { $type |= IAppConfig::VALUE_SENSITIVE; $value = self::invokePrivate(AppConfig::class, 'ENCRYPTION_PREFIX') . $this->crypto->encrypt($value); - $this->baseStruct[$appId][$key]['encrypted'] = $value; + self::$baseStruct[$appId][$key]['encrypted'] = $value; } $sql->setParameters( @@ -175,7 +177,7 @@ class AppConfigTest extends TestCase { */ private function generateAppConfig(bool $preLoading = true): IAppConfig { /** @var AppConfig $config */ - $config = new \OC\AppConfig( + $config = new AppConfig( $this->connection, $this->logger, $this->crypto, @@ -197,7 +199,7 @@ class AppConfigTest extends TestCase { $this->assertSame(true, $status['fastLoaded'], $msg); $this->assertSame(false, $status['lazyLoaded'], $msg); - $apps = array_values(array_diff(array_keys($this->baseStruct), ['only-lazy'])); + $apps = array_values(array_diff(array_keys(self::$baseStruct), ['only-lazy'])); $this->assertEqualsCanonicalizing($apps, array_keys($status['fastCache']), $msg); $this->assertSame([], array_keys($status['lazyCache']), $msg); } @@ -208,7 +210,20 @@ class AppConfigTest extends TestCase { public function testGetApps(): void { $config = $this->generateAppConfig(false); - $this->assertEqualsCanonicalizing(array_keys($this->baseStruct), $config->getApps()); + $this->assertEqualsCanonicalizing(array_keys(self::$baseStruct), $config->getApps()); + } + + public function testGetAppInstalledVersions(): void { + $config = $this->generateAppConfig(false); + + $this->assertEquals( + ['testapp' => '1.2.3', 'anotherapp' => '3.2.1'], + $config->getAppInstalledVersions(false) + ); + $this->assertEquals( + ['testapp' => '1.2.3'], + $config->getAppInstalledVersions(true) + ); } /** @@ -217,9 +232,9 @@ class AppConfigTest extends TestCase { * @return array<string, string[]> ['appId' => ['key1', 'key2', ]] * @see testGetKeys */ - public function providerGetAppKeys(): array { + public static function providerGetAppKeys(): array { $appKeys = []; - foreach ($this->baseStruct as $appId => $appData) { + foreach (self::$baseStruct as $appId => $appData) { $keys = []; foreach ($appData as $row) { $keys[] = $row[0]; @@ -238,9 +253,9 @@ class AppConfigTest extends TestCase { * @see testIsLazy * @see testGetKeys */ - public function providerGetKeys(): array { + public static function providerGetKeys(): array { $appKeys = []; - foreach ($this->baseStruct as $appId => $appData) { + foreach (self::$baseStruct as $appId => $appData) { foreach ($appData as $row) { $appKeys[] = [ (string)$appId, $row[0], $row[1], $row[2] ?? IAppConfig::VALUE_MIXED, $row[3] ?? false, @@ -283,7 +298,7 @@ class AppConfigTest extends TestCase { public function testHasKeyOnNonExistentKeyReturnsFalse(): void { $config = $this->generateAppConfig(); - $this->assertEquals(false, $config->hasKey(array_keys($this->baseStruct)[0], 'inexistant-key')); + $this->assertEquals(false, $config->hasKey(array_keys(self::$baseStruct)[0], 'inexistant-key')); } public function testHasKeyOnUnknownAppReturnsFalse(): void { @@ -319,7 +334,7 @@ class AppConfigTest extends TestCase { public function testIsSensitiveOnNonExistentKeyThrowsException(): void { $config = $this->generateAppConfig(); $this->expectException(AppConfigUnknownKeyException::class); - $config->isSensitive(array_keys($this->baseStruct)[0], 'inexistant-key'); + $config->isSensitive(array_keys(self::$baseStruct)[0], 'inexistant-key'); } public function testIsSensitiveOnUnknownAppThrowsException(): void { @@ -362,7 +377,7 @@ class AppConfigTest extends TestCase { public function testIsLazyOnNonExistentKeyThrowsException(): void { $config = $this->generateAppConfig(); $this->expectException(AppConfigUnknownKeyException::class); - $config->isLazy(array_keys($this->baseStruct)[0], 'inexistant-key'); + $config->isLazy(array_keys(self::$baseStruct)[0], 'inexistant-key'); } public function testIsLazyOnUnknownAppThrowsException(): void { @@ -410,7 +425,7 @@ class AppConfigTest extends TestCase { public function testSearchValues(): void { $config = $this->generateAppConfig(); - $this->assertEqualsCanonicalizing(['testapp' => 'true', '123456' => 'true', 'anotherapp' => 'false'], $config->searchValues('enabled')); + $this->assertEqualsCanonicalizing(['testapp' => 'yes', '123456' => 'yes', 'anotherapp' => 'no'], $config->searchValues('enabled')); } public function testGetValueString(): void { @@ -530,7 +545,7 @@ class AppConfigTest extends TestCase { * * @see testGetValueMixed */ - public function providerGetValueMixed(): array { + public static function providerGetValueMixed(): array { return [ // key, value, type ['mixed', 'mix', IAppConfig::VALUE_MIXED], @@ -1322,7 +1337,7 @@ class AppConfigTest extends TestCase { $config = $this->generateAppConfig(); $config->deleteKey('anotherapp', 'key'); $status = $config->statusCache(); - $this->assertEqualsCanonicalizing(['enabled' => 'false'], $status['fastCache']['anotherapp']); + $this->assertEqualsCanonicalizing(['enabled' => 'no', 'installed_version' => '3.2.1'], $status['fastCache']['anotherapp']); } public function testDeleteKeyDatabase(): void { diff --git a/tests/lib/AppFramework/AppTest.php b/tests/lib/AppFramework/AppTest.php index 3c535a4bf7a..b44ddd6082b 100644 --- a/tests/lib/AppFramework/AppTest.php +++ b/tests/lib/AppFramework/AppTest.php @@ -9,9 +9,10 @@ namespace Test\AppFramework; use OC\AppFramework\App; +use OC\AppFramework\DependencyInjection\DIContainer; use OC\AppFramework\Http\Dispatcher; use OCP\AppFramework\Controller; -use OCP\AppFramework\Http; +use OCP\AppFramework\Http\IOutput; use OCP\AppFramework\Http\Response; function rrmdir($directory) { @@ -43,10 +44,10 @@ class AppTest extends \Test\TestCase { protected function setUp(): void { parent::setUp(); - $this->container = new \OC\AppFramework\DependencyInjection\DIContainer('test', []); + $this->container = new DIContainer('test', []); $this->controller = $this->createMock(Controller::class); $this->dispatcher = $this->createMock(Dispatcher::class); - $this->io = $this->createMock(Http\IOutput::class); + $this->io = $this->createMock(IOutput::class); $this->headers = ['key' => 'value']; $this->output = 'hi'; @@ -124,7 +125,7 @@ class AppTest extends \Test\TestCase { App::main($this->controllerName, $this->controllerMethod, $this->container, []); } - public function dataNoOutput() { + public static function dataNoOutput(): array { return [ ['HTTP/2.0 204 No content'], ['HTTP/2.0 304 Not modified'], diff --git a/tests/lib/AppFramework/Bootstrap/CoordinatorTest.php b/tests/lib/AppFramework/Bootstrap/CoordinatorTest.php index 05e7a1b71c7..0eeddb2173a 100644 --- a/tests/lib/AppFramework/Bootstrap/CoordinatorTest.php +++ b/tests/lib/AppFramework/Bootstrap/CoordinatorTest.php @@ -11,6 +11,7 @@ namespace lib\AppFramework\Bootstrap; use OC\AppFramework\Bootstrap\Coordinator; use OC\Support\CrashReport\Registry; +use OCA\Settings\AppInfo\Application; use OCP\App\IAppManager; use OCP\AppFramework\App; use OCP\AppFramework\Bootstrap\IBootContext; @@ -76,7 +77,7 @@ class CoordinatorTest extends TestCase { $appId = 'settings'; $this->serverContainer->expects($this->once()) ->method('query') - ->with(\OCA\Settings\AppInfo\Application::class) + ->with(Application::class) ->willThrowException(new QueryException('')); $this->logger->expects($this->once()) ->method('error'); @@ -86,10 +87,10 @@ class CoordinatorTest extends TestCase { public function testBootAppNotBootable(): void { $appId = 'settings'; - $mockApp = $this->createMock(\OCA\Settings\AppInfo\Application::class); + $mockApp = $this->createMock(Application::class); $this->serverContainer->expects($this->once()) ->method('query') - ->with(\OCA\Settings\AppInfo\Application::class) + ->with(Application::class) ->willReturn($mockApp); $this->coordinator->bootApp($appId); @@ -110,7 +111,7 @@ class CoordinatorTest extends TestCase { }; $this->serverContainer->expects($this->once()) ->method('query') - ->with(\OCA\Settings\AppInfo\Application::class) + ->with(Application::class) ->willReturn($mockApp); $this->coordinator->bootApp($appId); diff --git a/tests/lib/AppFramework/Bootstrap/FunctionInjectorTest.php b/tests/lib/AppFramework/Bootstrap/FunctionInjectorTest.php index c32331e8ba1..8f6944ce34f 100644 --- a/tests/lib/AppFramework/Bootstrap/FunctionInjectorTest.php +++ b/tests/lib/AppFramework/Bootstrap/FunctionInjectorTest.php @@ -11,6 +11,7 @@ namespace lib\AppFramework\Bootstrap; use OC\AppFramework\Bootstrap\FunctionInjector; use OC\AppFramework\Utility\SimpleContainer; +use OCP\AppFramework\QueryException; use Test\TestCase; interface Foo { @@ -27,7 +28,7 @@ class FunctionInjectorTest extends TestCase { } public function testInjectFnNotRegistered(): void { - $this->expectException(\OCP\AppFramework\QueryException::class); + $this->expectException(QueryException::class); (new FunctionInjector($this->container))->injectFn(static function (Foo $p1): void { }); diff --git a/tests/lib/AppFramework/Bootstrap/RegistrationContextTest.php b/tests/lib/AppFramework/Bootstrap/RegistrationContextTest.php index 1e0b13b5755..6469a01cce3 100644 --- a/tests/lib/AppFramework/Bootstrap/RegistrationContextTest.php +++ b/tests/lib/AppFramework/Bootstrap/RegistrationContextTest.php @@ -156,7 +156,7 @@ class RegistrationContextTest extends TestCase { ); } - public function dataProvider_TrueFalse() { + public static function dataProvider_TrueFalse(): array { return[ [true], [false] diff --git a/tests/lib/AppFramework/Controller/AuthPublicShareControllerTest.php b/tests/lib/AppFramework/Controller/AuthPublicShareControllerTest.php index d6e0321023e..bcc0daf002f 100644 --- a/tests/lib/AppFramework/Controller/AuthPublicShareControllerTest.php +++ b/tests/lib/AppFramework/Controller/AuthPublicShareControllerTest.php @@ -38,7 +38,7 @@ class AuthPublicShareControllerTest extends \Test\TestCase { $this->request, $this->session, $this->urlGenerator - ])->setMethods([ + ])->onlyMethods([ 'authFailed', 'getPasswordHash', 'isAuthenticated', @@ -64,7 +64,9 @@ class AuthPublicShareControllerTest extends \Test\TestCase { $this->controller->setToken('myToken'); $this->session->method('get') - ->willReturnMap(['public_link_authenticate_redirect', ['foo' => 'bar']]); + ->willReturnMap([ + ['public_link_authenticate_redirect', json_encode(['foo' => 'bar'])], + ]); $this->urlGenerator->method('linkToRoute') ->willReturn('myLink!'); @@ -107,7 +109,9 @@ class AuthPublicShareControllerTest extends \Test\TestCase { $this->session->expects($this->once()) ->method('regenerateId'); $this->session->method('get') - ->willReturnMap(['public_link_authenticate_redirect', ['foo' => 'bar']]); + ->willReturnMap([ + ['public_link_authenticate_redirect', json_encode(['foo' => 'bar'])], + ]); $tokenSet = false; $hashSet = false; diff --git a/tests/lib/AppFramework/Controller/ControllerTest.php b/tests/lib/AppFramework/Controller/ControllerTest.php index 7c466e3a5b7..aa016872847 100644 --- a/tests/lib/AppFramework/Controller/ControllerTest.php +++ b/tests/lib/AppFramework/Controller/ControllerTest.php @@ -66,7 +66,7 @@ class ControllerTest extends \Test\TestCase { ); $this->app = $this->getMockBuilder(DIContainer::class) - ->setMethods(['getAppName']) + ->onlyMethods(['getAppName']) ->setConstructorArgs(['test']) ->getMock(); $this->app->expects($this->any()) diff --git a/tests/lib/AppFramework/Controller/PublicShareControllerTest.php b/tests/lib/AppFramework/Controller/PublicShareControllerTest.php index f8430d42ef1..97216845617 100644 --- a/tests/lib/AppFramework/Controller/PublicShareControllerTest.php +++ b/tests/lib/AppFramework/Controller/PublicShareControllerTest.php @@ -11,17 +11,14 @@ use OCP\IRequest; use OCP\ISession; class TestController extends PublicShareController { - /** @var string */ - private $hash; - - /** @var bool */ - private $isProtected; - - public function __construct(string $appName, IRequest $request, ISession $session, string $hash, bool $isProtected) { + public function __construct( + string $appName, + IRequest $request, + ISession $session, + private string $hash, + private bool $isProtected, + ) { parent::__construct($appName, $request, $session); - - $this->hash = $hash; - $this->isProtected = $isProtected; } protected function getPasswordHash(): string { @@ -57,7 +54,7 @@ class PublicShareControllerTest extends \Test\TestCase { $this->assertEquals('test', $controller->getToken()); } - public function dataIsAuthenticated() { + public static function dataIsAuthenticated(): array { return [ [false, 'token1', 'token1', 'hash1', 'hash1', true], [false, 'token1', 'token1', 'hash1', 'hash2', true], diff --git a/tests/lib/AppFramework/Db/EntityTest.php b/tests/lib/AppFramework/Db/EntityTest.php index 3c844780b07..4fcf126e3b1 100644 --- a/tests/lib/AppFramework/Db/EntityTest.php +++ b/tests/lib/AppFramework/Db/EntityTest.php @@ -36,7 +36,6 @@ use PHPUnit\Framework\Constraint\IsType; * @method void setDatetime(\DateTimeImmutable $datetime) */ class TestEntity extends Entity { - protected $name; protected $email; protected $testId; protected $smallInt; @@ -49,7 +48,9 @@ class TestEntity extends Entity { protected $time; protected $datetime; - public function __construct($name = null) { + public function __construct( + protected $name = null, + ) { $this->addType('testId', Types::INTEGER); $this->addType('smallInt', Types::SMALLINT); $this->addType('bigInt', Types::BIGINT); @@ -63,8 +64,6 @@ class TestEntity extends Entity { $this->addType('trueOrFalse', 'bool'); $this->addType('legacyInt', 'int'); $this->addType('doubleNowFloat', 'double'); - - $this->name = $name; } public function setAnotherBool(bool $anotherBool): void { @@ -211,7 +210,7 @@ class EntityTest extends \Test\TestCase { } - public function dataSetterCasts(): array { + public static function dataSetterCasts(): array { return [ ['Id', '3', 3], ['smallInt', '3', 3], diff --git a/tests/lib/AppFramework/Db/QBMapperDBTest.php b/tests/lib/AppFramework/Db/QBMapperDBTest.php index 72bc2d956d6..a61240fcb82 100644 --- a/tests/lib/AppFramework/Db/QBMapperDBTest.php +++ b/tests/lib/AppFramework/Db/QBMapperDBTest.php @@ -70,7 +70,7 @@ class QBMapperDBTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->connection = \OCP\Server::get(IDBConnection::class); + $this->connection = Server::get(IDBConnection::class); $this->prepareTestingTable(); } diff --git a/tests/lib/AppFramework/Db/QBMapperTest.php b/tests/lib/AppFramework/Db/QBMapperTest.php index 3cf32e56f12..1fac6632b30 100644 --- a/tests/lib/AppFramework/Db/QBMapperTest.php +++ b/tests/lib/AppFramework/Db/QBMapperTest.php @@ -99,7 +99,7 @@ class QBMapperTest extends \Test\TestCase { $this->mapper = new QBTestMapper($this->db); } - + public function testInsertEntityParameterTypeMapping(): void { $datetime = new \DateTimeImmutable(); $entity = new QBTestEntity(); @@ -117,31 +117,40 @@ class QBMapperTest extends \Test\TestCase { $booleanParam = $this->qb->createNamedParameter('boolean_prop', IQueryBuilder::PARAM_BOOL); $datetimeParam = $this->qb->createNamedParameter('datetime_prop', IQueryBuilder::PARAM_DATETIME_IMMUTABLE); + $createNamedParameterCalls = [ + [123, IQueryBuilder::PARAM_INT, null], + [true, IQueryBuilder::PARAM_BOOL, null], + ['string', IQueryBuilder::PARAM_STR, null], + [456, IQueryBuilder::PARAM_INT, null], + [false, IQueryBuilder::PARAM_BOOL, null], + [$datetime, IQueryBuilder::PARAM_DATETIME_IMMUTABLE, null], + ]; $this->qb->expects($this->exactly(6)) ->method('createNamedParameter') - ->withConsecutive( - [$this->equalTo(123), $this->equalTo(IQueryBuilder::PARAM_INT)], - [$this->equalTo(true), $this->equalTo(IQueryBuilder::PARAM_BOOL)], - [$this->equalTo('string'), $this->equalTo(IQueryBuilder::PARAM_STR)], - [$this->equalTo(456), $this->equalTo(IQueryBuilder::PARAM_INT)], - [$this->equalTo(false), $this->equalTo(IQueryBuilder::PARAM_BOOL)], - [$this->equalTo($datetime), $this->equalTo(IQueryBuilder::PARAM_DATETIME_IMMUTABLE)], - ); + ->willReturnCallback(function () use (&$createNamedParameterCalls): void { + $expected = array_shift($createNamedParameterCalls); + $this->assertEquals($expected, func_get_args()); + }); + + $setValueCalls = [ + ['int_prop', $intParam], + ['bool_prop', $boolParam], + ['string_prop', $stringParam], + ['integer_prop', $integerParam], + ['boolean_prop', $booleanParam], + ['datetime_prop', $datetimeParam], + ]; $this->qb->expects($this->exactly(6)) ->method('setValue') - ->withConsecutive( - [$this->equalTo('int_prop'), $this->equalTo($intParam)], - [$this->equalTo('bool_prop'), $this->equalTo($boolParam)], - [$this->equalTo('string_prop'), $this->equalTo($stringParam)], - [$this->equalTo('integer_prop'), $this->equalTo($integerParam)], - [$this->equalTo('boolean_prop'), $this->equalTo($booleanParam)], - [$this->equalTo('datetime_prop'), $this->equalTo($datetimeParam)], - ); + ->willReturnCallback(function () use (&$setValueCalls): void { + $expected = array_shift($setValueCalls); + $this->assertEquals($expected, func_get_args()); + }); $this->mapper->insert($entity); } - + public function testUpdateEntityParameterTypeMapping(): void { $datetime = new \DateTimeImmutable(); $entity = new QBTestEntity(); @@ -163,30 +172,38 @@ class QBMapperTest extends \Test\TestCase { $jsonParam = $this->qb->createNamedParameter('json_prop', IQueryBuilder::PARAM_JSON); $datetimeParam = $this->qb->createNamedParameter('datetime_prop', IQueryBuilder::PARAM_DATETIME_IMMUTABLE); + $createNamedParameterCalls = [ + [123, IQueryBuilder::PARAM_INT, null], + [true, IQueryBuilder::PARAM_BOOL, null], + ['string', IQueryBuilder::PARAM_STR, null], + [456, IQueryBuilder::PARAM_INT, null], + [false, IQueryBuilder::PARAM_BOOL, null], + [['hello' => 'world'], IQueryBuilder::PARAM_JSON, null], + [$datetime, IQueryBuilder::PARAM_DATETIME_IMMUTABLE, null], + [789, IQueryBuilder::PARAM_INT, null], + ]; $this->qb->expects($this->exactly(8)) ->method('createNamedParameter') - ->withConsecutive( - [$this->equalTo(123), $this->equalTo(IQueryBuilder::PARAM_INT)], - [$this->equalTo(true), $this->equalTo(IQueryBuilder::PARAM_BOOL)], - [$this->equalTo('string'), $this->equalTo(IQueryBuilder::PARAM_STR)], - [$this->equalTo(456), $this->equalTo(IQueryBuilder::PARAM_INT)], - [$this->equalTo(false), $this->equalTo(IQueryBuilder::PARAM_BOOL)], - [$this->equalTo(['hello' => 'world']), $this->equalTo(IQueryBuilder::PARAM_JSON)], - [$this->equalTo($datetime), $this->equalTo(IQueryBuilder::PARAM_DATETIME_IMMUTABLE)], - [$this->equalTo(789), $this->equalTo(IQueryBuilder::PARAM_INT)], - ); - + ->willReturnCallback(function () use (&$createNamedParameterCalls): void { + $expected = array_shift($createNamedParameterCalls); + $this->assertEquals($expected, func_get_args()); + }); + + $setCalls = [ + ['int_prop', $intParam], + ['bool_prop', $boolParam], + ['string_prop', $stringParam], + ['integer_prop', $integerParam], + ['boolean_prop', $booleanParam], + ['json_prop', $datetimeParam], + ['datetime_prop', $datetimeParam], + ]; $this->qb->expects($this->exactly(7)) ->method('set') - ->withConsecutive( - [$this->equalTo('int_prop'), $this->equalTo($intParam)], - [$this->equalTo('bool_prop'), $this->equalTo($boolParam)], - [$this->equalTo('string_prop'), $this->equalTo($stringParam)], - [$this->equalTo('integer_prop'), $this->equalTo($integerParam)], - [$this->equalTo('boolean_prop'), $this->equalTo($booleanParam)], - [$this->equalTo('json_prop'), $this->equalTo($jsonParam)], - [$this->equalTo('datetime_prop'), $this->equalTo($datetimeParam)], - ); + ->willReturnCallback(function () use (&$setCalls): void { + $expected = array_shift($setCalls); + $this->assertEquals($expected, func_get_args()); + }); $this->expr->expects($this->once()) ->method('eq') @@ -196,7 +213,7 @@ class QBMapperTest extends \Test\TestCase { $this->mapper->update($entity); } - + public function testGetParameterTypeForProperty(): void { $entity = new QBTestEntity(); diff --git a/tests/lib/AppFramework/Db/TransactionalTest.php b/tests/lib/AppFramework/Db/TransactionalTest.php index a60c4386fea..bf8abcd7aa2 100644 --- a/tests/lib/AppFramework/Db/TransactionalTest.php +++ b/tests/lib/AppFramework/Db/TransactionalTest.php @@ -35,7 +35,7 @@ class TransactionalTest extends TestCase { } public function fail(): void { - $this->atomic(function () { + $this->atomic(function (): void { throw new RuntimeException('nope'); }, $this->db); } diff --git a/tests/lib/AppFramework/DependencyInjection/DIContainerTest.php b/tests/lib/AppFramework/DependencyInjection/DIContainerTest.php index f3d2cff1ffd..e84b44db9a0 100644 --- a/tests/lib/AppFramework/DependencyInjection/DIContainerTest.php +++ b/tests/lib/AppFramework/DependencyInjection/DIContainerTest.php @@ -29,7 +29,7 @@ class DIContainerTest extends \Test\TestCase { protected function setUp(): void { parent::setUp(); $this->container = $this->getMockBuilder(DIContainer::class) - ->setMethods(['isAdminUser']) + ->onlyMethods(['isAdminUser']) ->setConstructorArgs(['name']) ->getMock(); } diff --git a/tests/lib/AppFramework/DependencyInjection/DIIntergrationTests.php b/tests/lib/AppFramework/DependencyInjection/DIIntergrationTests.php index 54c691d2392..8f0e60c5b3b 100644 --- a/tests/lib/AppFramework/DependencyInjection/DIIntergrationTests.php +++ b/tests/lib/AppFramework/DependencyInjection/DIIntergrationTests.php @@ -21,16 +21,14 @@ class ClassA2 implements Interface1 { } class ClassB { - /** @var Interface1 */ - public $interface1; - /** * ClassB constructor. * * @param Interface1 $interface1 */ - public function __construct(Interface1 $interface1) { - $this->interface1 = $interface1; + public function __construct( + public Interface1 $interface1, + ) { } } diff --git a/tests/lib/AppFramework/Http/DataResponseTest.php b/tests/lib/AppFramework/Http/DataResponseTest.php index 7ae19e7d5d8..e9a2c511140 100644 --- a/tests/lib/AppFramework/Http/DataResponseTest.php +++ b/tests/lib/AppFramework/Http/DataResponseTest.php @@ -11,6 +11,7 @@ namespace Test\AppFramework\Http; use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse; use OCP\IRequest; +use OCP\Server; class DataResponseTest extends \Test\TestCase { /** @@ -53,7 +54,7 @@ class DataResponseTest extends \Test\TestCase { 'Content-Security-Policy' => "default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'", 'Feature-Policy' => "autoplay 'none';camera 'none';fullscreen 'none';geolocation 'none';microphone 'none';payment 'none'", 'X-Robots-Tag' => 'noindex, nofollow', - 'X-Request-Id' => \OC::$server->get(IRequest::class)->getId(), + 'X-Request-Id' => Server::get(IRequest::class)->getId(), ]; $expectedHeaders = array_merge($expectedHeaders, $headers); diff --git a/tests/lib/AppFramework/Http/DispatcherTest.php b/tests/lib/AppFramework/Http/DispatcherTest.php index 7415ecd9486..4ed6627891c 100644 --- a/tests/lib/AppFramework/Http/DispatcherTest.php +++ b/tests/lib/AppFramework/Http/DispatcherTest.php @@ -8,6 +8,7 @@ namespace Test\AppFramework\Http; +use OC\AppFramework\DependencyInjection\DIContainer; use OC\AppFramework\Http\Dispatcher; use OC\AppFramework\Http\Request; use OC\AppFramework\Middleware\MiddlewareDispatcher; @@ -20,8 +21,10 @@ use OCP\AppFramework\Http\ParameterOutOfRangeException; use OCP\AppFramework\Http\Response; use OCP\Diagnostics\IEventLogger; use OCP\IConfig; +use OCP\IDBConnection; use OCP\IRequest; use OCP\IRequestId; +use OCP\Server; use PHPUnit\Framework\MockObject\MockObject; use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; @@ -63,6 +66,10 @@ class TestController extends Controller { 'text' => [$int, $bool, $test, $test2] ]); } + + public function test(): Response { + return new DataResponse(); + } } /** @@ -104,33 +111,17 @@ class DispatcherTest extends \Test\TestCase { $this->logger = $this->createMock(LoggerInterface::class); $this->eventLogger = $this->createMock(IEventLogger::class); $this->container = $this->createMock(ContainerInterface::class); - $app = $this->getMockBuilder( - 'OC\AppFramework\DependencyInjection\DIContainer') - ->disableOriginalConstructor() - ->getMock(); - $request = $this->getMockBuilder( - '\OC\AppFramework\Http\Request') - ->disableOriginalConstructor() - ->getMock(); - $this->http = $this->getMockBuilder( - \OC\AppFramework\Http::class) - ->disableOriginalConstructor() - ->getMock(); + $app = $this->createMock(DIContainer::class); + $request = $this->createMock(Request::class); + $this->http = $this->createMock(\OC\AppFramework\Http::class); - $this->middlewareDispatcher = $this->getMockBuilder( - '\OC\AppFramework\Middleware\MiddlewareDispatcher') - ->disableOriginalConstructor() - ->getMock(); - $this->controller = $this->getMockBuilder( - '\OCP\AppFramework\Controller') - ->setMethods([$this->controllerMethod]) + $this->middlewareDispatcher = $this->createMock(MiddlewareDispatcher::class); + $this->controller = $this->getMockBuilder(TestController::class) + ->onlyMethods([$this->controllerMethod]) ->setConstructorArgs([$app, $request]) ->getMock(); - $this->request = $this->getMockBuilder( - '\OC\AppFramework\Http\Request') - ->disableOriginalConstructor() - ->getMock(); + $this->request = $this->createMock(Request::class); $this->reflector = new ControllerMethodReflector(); @@ -140,7 +131,7 @@ class DispatcherTest extends \Test\TestCase { $this->reflector, $this->request, $this->config, - \OC::$server->getDatabaseConnection(), + Server::get(IDBConnection::class), $this->logger, $this->eventLogger, $this->container, @@ -166,7 +157,7 @@ class DispatcherTest extends \Test\TestCase { ->method('beforeController') ->with($this->equalTo($this->controller), $this->equalTo($this->controllerMethod)) - ->will($this->throwException($exception)); + ->willThrowException($exception); if ($catchEx) { $this->middlewareDispatcher->expects($this->once()) ->method('afterException') @@ -317,7 +308,7 @@ class DispatcherTest extends \Test\TestCase { $this->http, $this->middlewareDispatcher, $this->reflector, $this->request, $this->config, - \OC::$server->getDatabaseConnection(), + Server::get(IDBConnection::class), $this->logger, $this->eventLogger, $this->container @@ -350,7 +341,7 @@ class DispatcherTest extends \Test\TestCase { $this->http, $this->middlewareDispatcher, $this->reflector, $this->request, $this->config, - \OC::$server->getDatabaseConnection(), + Server::get(IDBConnection::class), $this->logger, $this->eventLogger, $this->container @@ -386,7 +377,7 @@ class DispatcherTest extends \Test\TestCase { $this->http, $this->middlewareDispatcher, $this->reflector, $this->request, $this->config, - \OC::$server->getDatabaseConnection(), + Server::get(IDBConnection::class), $this->logger, $this->eventLogger, $this->container @@ -421,7 +412,7 @@ class DispatcherTest extends \Test\TestCase { $this->http, $this->middlewareDispatcher, $this->reflector, $this->request, $this->config, - \OC::$server->getDatabaseConnection(), + Server::get(IDBConnection::class), $this->logger, $this->eventLogger, $this->container @@ -457,7 +448,7 @@ class DispatcherTest extends \Test\TestCase { $this->http, $this->middlewareDispatcher, $this->reflector, $this->request, $this->config, - \OC::$server->getDatabaseConnection(), + Server::get(IDBConnection::class), $this->logger, $this->eventLogger, $this->container @@ -492,7 +483,7 @@ class DispatcherTest extends \Test\TestCase { $this->http, $this->middlewareDispatcher, $this->reflector, $this->request, $this->config, - \OC::$server->getDatabaseConnection(), + Server::get(IDBConnection::class), $this->logger, $this->eventLogger, $this->container @@ -530,7 +521,7 @@ class DispatcherTest extends \Test\TestCase { $this->http, $this->middlewareDispatcher, $this->reflector, $this->request, $this->config, - \OC::$server->getDatabaseConnection(), + Server::get(IDBConnection::class), $this->logger, $this->eventLogger, $this->container @@ -545,7 +536,7 @@ class DispatcherTest extends \Test\TestCase { } - public function rangeDataProvider(): array { + public static function rangeDataProvider(): array { return [ [PHP_INT_MIN, PHP_INT_MAX, 42, false], [0, 12, -5, true], @@ -574,7 +565,7 @@ class DispatcherTest extends \Test\TestCase { $this->reflector, $this->request, $this->config, - \OC::$server->getDatabaseConnection(), + Server::get(IDBConnection::class), $this->logger, $this->eventLogger, $this->container, diff --git a/tests/lib/AppFramework/Http/DownloadResponseTest.php b/tests/lib/AppFramework/Http/DownloadResponseTest.php index ee89e8e55d1..cf179ba270b 100644 --- a/tests/lib/AppFramework/Http/DownloadResponseTest.php +++ b/tests/lib/AppFramework/Http/DownloadResponseTest.php @@ -37,7 +37,7 @@ class DownloadResponseTest extends \Test\TestCase { $this->assertEquals('attachment; filename="' . $expected . '"', $headers['Content-Disposition']); } - public function filenameEncodingProvider() : array { + public static function filenameEncodingProvider() : array { return [ ['TestName.txt', 'TestName.txt'], ['A "Quoted" Filename.txt', 'A \\"Quoted\\" Filename.txt'], diff --git a/tests/lib/AppFramework/Http/JSONResponseTest.php b/tests/lib/AppFramework/Http/JSONResponseTest.php index 175ed852c7b..703e6d89dd1 100644 --- a/tests/lib/AppFramework/Http/JSONResponseTest.php +++ b/tests/lib/AppFramework/Http/JSONResponseTest.php @@ -46,10 +46,7 @@ class JSONResponseTest extends \Test\TestCase { $this->assertEquals($expected, $this->json->render()); } - /** - * @return array - */ - public function renderDataProvider() { + public static function renderDataProvider(): array { return [ [ ['test' => 'hi'], '{"test":"hi"}', diff --git a/tests/lib/AppFramework/Http/PublicTemplateResponseTest.php b/tests/lib/AppFramework/Http/PublicTemplateResponseTest.php index d963705bc24..cb7bd97f5da 100644 --- a/tests/lib/AppFramework/Http/PublicTemplateResponseTest.php +++ b/tests/lib/AppFramework/Http/PublicTemplateResponseTest.php @@ -7,8 +7,8 @@ namespace Test\AppFramework\Http; -use OCP\AppFramework\Http; use OCP\AppFramework\Http\Template\PublicTemplateResponse; +use OCP\AppFramework\Http\Template\SimpleMenuAction; use Test\TestCase; class PublicTemplateResponseTest extends TestCase { @@ -28,7 +28,7 @@ class PublicTemplateResponseTest extends TestCase { public function testActionSingle(): void { $actions = [ - new Http\Template\SimpleMenuAction('link', 'Download', 'download', 'downloadLink', 0) + new SimpleMenuAction('link', 'Download', 'download', 'downloadLink', 0) ]; $template = new PublicTemplateResponse('app', 'home', ['key' => 'value']); $template->setHeaderActions($actions); @@ -41,9 +41,9 @@ class PublicTemplateResponseTest extends TestCase { public function testActionMultiple(): void { $actions = [ - new Http\Template\SimpleMenuAction('link1', 'Download1', 'download1', 'downloadLink1', 100), - new Http\Template\SimpleMenuAction('link2', 'Download2', 'download2', 'downloadLink2', 20), - new Http\Template\SimpleMenuAction('link3', 'Download3', 'download3', 'downloadLink3', 0) + new SimpleMenuAction('link1', 'Download1', 'download1', 'downloadLink1', 100), + new SimpleMenuAction('link2', 'Download2', 'download2', 'downloadLink2', 20), + new SimpleMenuAction('link3', 'Download3', 'download3', 'downloadLink3', 0) ]; $template = new PublicTemplateResponse('app', 'home', ['key' => 'value']); $template->setHeaderActions($actions); diff --git a/tests/lib/AppFramework/Http/ResponseTest.php b/tests/lib/AppFramework/Http/ResponseTest.php index 28614b14b40..7750db921c6 100644 --- a/tests/lib/AppFramework/Http/ResponseTest.php +++ b/tests/lib/AppFramework/Http/ResponseTest.php @@ -9,6 +9,8 @@ namespace Test\AppFramework\Http; use OCP\AppFramework\Http; +use OCP\AppFramework\Http\ContentSecurityPolicy; +use OCP\AppFramework\Http\EmptyContentSecurityPolicy; use OCP\AppFramework\Http\Response; use OCP\AppFramework\Utility\ITimeFactory; @@ -54,7 +56,7 @@ class ResponseTest extends \Test\TestCase { $expected = [ 'Content-Security-Policy' => "default-src 'none';base-uri 'none';manifest-src 'self';script-src 'self' 'unsafe-inline';style-src 'self' 'unsafe-inline';img-src 'self';font-src 'self' data:;connect-src 'self';media-src 'self'", ]; - $policy = new Http\ContentSecurityPolicy(); + $policy = new ContentSecurityPolicy(); $this->childResponse->setContentSecurityPolicy($policy); $headers = $this->childResponse->getHeaders(); @@ -63,14 +65,14 @@ class ResponseTest extends \Test\TestCase { } public function testGetCsp(): void { - $policy = new Http\ContentSecurityPolicy(); + $policy = new ContentSecurityPolicy(); $this->childResponse->setContentSecurityPolicy($policy); $this->assertEquals($policy, $this->childResponse->getContentSecurityPolicy()); } public function testGetCspEmpty(): void { - $this->assertEquals(new Http\EmptyContentSecurityPolicy(), $this->childResponse->getContentSecurityPolicy()); + $this->assertEquals(new EmptyContentSecurityPolicy(), $this->childResponse->getContentSecurityPolicy()); } public function testAddHeaderValueNullDeletesIt(): void { @@ -229,7 +231,7 @@ class ResponseTest extends \Test\TestCase { $headers = $this->childResponse->getHeaders(); $this->assertEquals('private, max-age=33, must-revalidate', $headers['Cache-Control']); - $this->assertEquals('Thu, 15 Jan 1970 06:56:40 +0000', $headers['Expires']); + $this->assertEquals('Thu, 15 Jan 1970 06:56:40 GMT', $headers['Expires']); } @@ -239,7 +241,7 @@ class ResponseTest extends \Test\TestCase { $lastModified->setTimestamp(1); $this->childResponse->setLastModified($lastModified); $headers = $this->childResponse->getHeaders(); - $this->assertEquals('Thu, 01 Jan 1970 00:00:01 +0000', $headers['Last-Modified']); + $this->assertEquals('Thu, 01 Jan 1970 00:00:01 GMT', $headers['Last-Modified']); } public function testChainability(): void { @@ -257,7 +259,7 @@ class ResponseTest extends \Test\TestCase { $this->assertEquals('world', $headers['hello']); $this->assertEquals(Http::STATUS_NOT_FOUND, $this->childResponse->getStatus()); $this->assertEquals('hi', $this->childResponse->getEtag()); - $this->assertEquals('Thu, 01 Jan 1970 00:00:01 +0000', $headers['Last-Modified']); + $this->assertEquals('Thu, 01 Jan 1970 00:00:01 GMT', $headers['Last-Modified']); $this->assertEquals('private, max-age=33, must-revalidate', $headers['Cache-Control']); } diff --git a/tests/lib/AppFramework/Middleware/AdditionalScriptsMiddlewareTest.php b/tests/lib/AppFramework/Middleware/AdditionalScriptsMiddlewareTest.php index 22b1b13aaee..4fa5de62b0b 100644 --- a/tests/lib/AppFramework/Middleware/AdditionalScriptsMiddlewareTest.php +++ b/tests/lib/AppFramework/Middleware/AdditionalScriptsMiddlewareTest.php @@ -67,7 +67,7 @@ class AdditionalScriptsMiddlewareTest extends \Test\TestCase { ->method($this->anything()); $this->dispatcher->expects($this->once()) ->method('dispatchTyped') - ->willReturnCallback(function ($event) { + ->willReturnCallback(function ($event): void { if ($event instanceof BeforeTemplateRenderedEvent && $event->isLoggedIn() === false) { return; } @@ -83,7 +83,7 @@ class AdditionalScriptsMiddlewareTest extends \Test\TestCase { ->willReturn(false); $this->dispatcher->expects($this->once()) ->method('dispatchTyped') - ->willReturnCallback(function ($event) { + ->willReturnCallback(function ($event): void { if ($event instanceof BeforeTemplateRenderedEvent && $event->isLoggedIn() === false) { return; } @@ -101,7 +101,7 @@ class AdditionalScriptsMiddlewareTest extends \Test\TestCase { ->willReturn(true); $this->dispatcher->expects($this->once()) ->method('dispatchTyped') - ->willReturnCallback(function ($event) { + ->willReturnCallback(function ($event): void { if ($event instanceof BeforeTemplateRenderedEvent && $event->isLoggedIn() === true) { return; } diff --git a/tests/lib/AppFramework/Middleware/MiddlewareDispatcherTest.php b/tests/lib/AppFramework/Middleware/MiddlewareDispatcherTest.php index fae5f5d9f1c..aae1c53456b 100644 --- a/tests/lib/AppFramework/Middleware/MiddlewareDispatcherTest.php +++ b/tests/lib/AppFramework/Middleware/MiddlewareDispatcherTest.php @@ -10,6 +10,7 @@ namespace Test\AppFramework\Middleware; use OC\AppFramework\Http\Request; use OC\AppFramework\Middleware\MiddlewareDispatcher; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http\Response; use OCP\AppFramework\Middleware; use OCP\IConfig; @@ -33,17 +34,16 @@ class TestMiddleware extends Middleware { public $response; public $output; - private $beforeControllerThrowsEx; - /** * @param boolean $beforeControllerThrowsEx */ - public function __construct($beforeControllerThrowsEx) { + public function __construct( + private $beforeControllerThrowsEx, + ) { self::$beforeControllerCalled = 0; self::$afterControllerCalled = 0; self::$afterExceptionCalled = 0; self::$beforeOutputCalled = 0; - $this->beforeControllerThrowsEx = $beforeControllerThrowsEx; } public function beforeController($controller, $methodName) { @@ -84,6 +84,10 @@ class TestMiddleware extends Middleware { } } +class TestController extends Controller { + public function method(): void { + } +} class MiddlewareDispatcherTest extends \Test\TestCase { public $exception; @@ -110,8 +114,8 @@ class MiddlewareDispatcherTest extends \Test\TestCase { private function getControllerMock() { - return $this->getMockBuilder('OCP\AppFramework\Controller') - ->setMethods(['method']) + return $this->getMockBuilder(TestController::class) + ->onlyMethods(['method']) ->setConstructorArgs(['app', new Request( ['method' => 'GET'], @@ -131,14 +135,14 @@ class MiddlewareDispatcherTest extends \Test\TestCase { public function testAfterExceptionShouldReturnResponseOfMiddleware(): void { $response = new Response(); - $m1 = $this->getMockBuilder('\OCP\AppFramework\Middleware') - ->setMethods(['afterException', 'beforeController']) + $m1 = $this->getMockBuilder(Middleware::class) + ->onlyMethods(['afterException', 'beforeController']) ->getMock(); $m1->expects($this->never()) ->method('afterException'); - $m2 = $this->getMockBuilder('OCP\AppFramework\Middleware') - ->setMethods(['afterException', 'beforeController']) + $m2 = $this->getMockBuilder(Middleware::class) + ->onlyMethods(['afterException', 'beforeController']) ->getMock(); $m2->expects($this->once()) ->method('afterException') diff --git a/tests/lib/AppFramework/Middleware/MiddlewareTest.php b/tests/lib/AppFramework/Middleware/MiddlewareTest.php index c1e5c44c4db..addd9683122 100644 --- a/tests/lib/AppFramework/Middleware/MiddlewareTest.php +++ b/tests/lib/AppFramework/Middleware/MiddlewareTest.php @@ -36,12 +36,9 @@ class MiddlewareTest extends \Test\TestCase { $this->middleware = new ChildMiddleware(); - $this->api = $this->getMockBuilder(DIContainer::class) - ->disableOriginalConstructor() - ->getMock(); + $this->api = $this->createMock(DIContainer::class); $this->controller = $this->getMockBuilder(Controller::class) - ->setMethods([]) ->setConstructorArgs([ $this->api, new Request( @@ -51,7 +48,7 @@ class MiddlewareTest extends \Test\TestCase { ) ])->getMock(); $this->exception = new \Exception(); - $this->response = $this->getMockBuilder(Response::class)->getMock(); + $this->response = $this->createMock(Response::class); } diff --git a/tests/lib/AppFramework/Middleware/NotModifiedMiddlewareTest.php b/tests/lib/AppFramework/Middleware/NotModifiedMiddlewareTest.php index 58ae6b13aed..0abbd9c614c 100644 --- a/tests/lib/AppFramework/Middleware/NotModifiedMiddlewareTest.php +++ b/tests/lib/AppFramework/Middleware/NotModifiedMiddlewareTest.php @@ -11,6 +11,7 @@ namespace Test\AppFramework\Middleware; use OC\AppFramework\Middleware\NotModifiedMiddleware; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; +use OCP\AppFramework\Http\Response; use OCP\IRequest; class NotModifiedMiddlewareTest extends \Test\TestCase { @@ -32,7 +33,7 @@ class NotModifiedMiddlewareTest extends \Test\TestCase { $this->controller = $this->createMock(Controller::class); } - public function dataModified(): array { + public static function dataModified(): array { $now = new \DateTime(); return [ @@ -43,13 +44,13 @@ class NotModifiedMiddlewareTest extends \Test\TestCase { [null, '"etag"', null, '', false], ['etag', '"etag"', null, '', true], - [null, '', $now, $now->format(\DateTimeInterface::RFC2822), true], + [null, '', $now, $now->format(\DateTimeInterface::RFC7231), true], [null, '', $now, $now->format(\DateTimeInterface::ATOM), false], - [null, '', null, $now->format(\DateTimeInterface::RFC2822), false], + [null, '', null, $now->format(\DateTimeInterface::RFC7231), false], [null, '', $now, '', false], ['etag', '"etag"', $now, $now->format(\DateTimeInterface::ATOM), true], - ['etag', '"etag"', $now, $now->format(\DateTimeInterface::RFC2822), true], + ['etag', '"etag"', $now, $now->format(\DateTimeInterface::RFC7231), true], ]; } @@ -68,7 +69,7 @@ class NotModifiedMiddlewareTest extends \Test\TestCase { return ''; }); - $response = new Http\Response(); + $response = new Response(); if ($etag !== null) { $response->setETag($etag); } diff --git a/tests/lib/AppFramework/Middleware/OCSMiddlewareTest.php b/tests/lib/AppFramework/Middleware/OCSMiddlewareTest.php index 6724f841c5e..b22646b8891 100644 --- a/tests/lib/AppFramework/Middleware/OCSMiddlewareTest.php +++ b/tests/lib/AppFramework/Middleware/OCSMiddlewareTest.php @@ -12,6 +12,8 @@ use OC\AppFramework\OCS\V1Response; use OC\AppFramework\OCS\V2Response; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; +use OCP\AppFramework\Http\JSONResponse; +use OCP\AppFramework\Http\Response; use OCP\AppFramework\OCS\OCSBadRequestException; use OCP\AppFramework\OCS\OCSException; use OCP\AppFramework\OCS\OCSForbiddenException; @@ -32,49 +34,37 @@ class OCSMiddlewareTest extends \Test\TestCase { ->getMock(); } - public function dataAfterException() { - $OCSController = $this->getMockBuilder(OCSController::class) - ->disableOriginalConstructor() - ->getMock(); - $controller = $this->getMockBuilder(Controller::class) - ->disableOriginalConstructor() - ->getMock(); - + public static function dataAfterException(): array { return [ - [$OCSController, new \Exception(), true], - [$OCSController, new OCSException(), false, '', Http::STATUS_INTERNAL_SERVER_ERROR], - [$OCSController, new OCSException('foo'), false, 'foo', Http::STATUS_INTERNAL_SERVER_ERROR], - [$OCSController, new OCSException('foo', Http::STATUS_IM_A_TEAPOT), false, 'foo', Http::STATUS_IM_A_TEAPOT], - [$OCSController, new OCSBadRequestException(), false, '', Http::STATUS_BAD_REQUEST], - [$OCSController, new OCSBadRequestException('foo'), false, 'foo', Http::STATUS_BAD_REQUEST], - [$OCSController, new OCSForbiddenException(), false, '', Http::STATUS_FORBIDDEN], - [$OCSController, new OCSForbiddenException('foo'), false, 'foo', Http::STATUS_FORBIDDEN], - [$OCSController, new OCSNotFoundException(), false, '', Http::STATUS_NOT_FOUND], - [$OCSController, new OCSNotFoundException('foo'), false, 'foo', Http::STATUS_NOT_FOUND], - - [$controller, new \Exception(), true], - [$controller, new OCSException(), true], - [$controller, new OCSException('foo'), true], - [$controller, new OCSException('foo', Http::STATUS_IM_A_TEAPOT), true], - [$controller, new OCSBadRequestException(), true], - [$controller, new OCSBadRequestException('foo'), true], - [$controller, new OCSForbiddenException(), true], - [$controller, new OCSForbiddenException('foo'), true], - [$controller, new OCSNotFoundException(), true], - [$controller, new OCSNotFoundException('foo'), true], + [OCSController::class, new \Exception(), true], + [OCSController::class, new OCSException(), false, '', Http::STATUS_INTERNAL_SERVER_ERROR], + [OCSController::class, new OCSException('foo'), false, 'foo', Http::STATUS_INTERNAL_SERVER_ERROR], + [OCSController::class, new OCSException('foo', Http::STATUS_IM_A_TEAPOT), false, 'foo', Http::STATUS_IM_A_TEAPOT], + [OCSController::class, new OCSBadRequestException(), false, '', Http::STATUS_BAD_REQUEST], + [OCSController::class, new OCSBadRequestException('foo'), false, 'foo', Http::STATUS_BAD_REQUEST], + [OCSController::class, new OCSForbiddenException(), false, '', Http::STATUS_FORBIDDEN], + [OCSController::class, new OCSForbiddenException('foo'), false, 'foo', Http::STATUS_FORBIDDEN], + [OCSController::class, new OCSNotFoundException(), false, '', Http::STATUS_NOT_FOUND], + [OCSController::class, new OCSNotFoundException('foo'), false, 'foo', Http::STATUS_NOT_FOUND], + + [Controller::class, new \Exception(), true], + [Controller::class, new OCSException(), true], + [Controller::class, new OCSException('foo'), true], + [Controller::class, new OCSException('foo', Http::STATUS_IM_A_TEAPOT), true], + [Controller::class, new OCSBadRequestException(), true], + [Controller::class, new OCSBadRequestException('foo'), true], + [Controller::class, new OCSForbiddenException(), true], + [Controller::class, new OCSForbiddenException('foo'), true], + [Controller::class, new OCSNotFoundException(), true], + [Controller::class, new OCSNotFoundException('foo'), true], ]; } /** * @dataProvider dataAfterException - * - * @param Controller $controller - * @param \Exception $exception - * @param bool $forward - * @param string $message - * @param int $code */ - public function testAfterExceptionOCSv1($controller, $exception, $forward, $message = '', $code = 0): void { + public function testAfterExceptionOCSv1(string $controller, \Exception $exception, bool $forward, string $message = '', int $code = 0): void { + $controller = $this->createMock($controller); $this->request ->method('getScriptName') ->willReturn('/ocs/v1.php'); @@ -93,7 +83,7 @@ class OCSMiddlewareTest extends \Test\TestCase { $this->assertSame($message, $this->invokePrivate($result, 'statusMessage')); if ($exception->getCode() === 0) { - $this->assertSame(\OCP\AppFramework\OCSController::RESPOND_UNKNOWN_ERROR, $result->getOCSStatus()); + $this->assertSame(OCSController::RESPOND_UNKNOWN_ERROR, $result->getOCSStatus()); } else { $this->assertSame($code, $result->getOCSStatus()); } @@ -103,14 +93,9 @@ class OCSMiddlewareTest extends \Test\TestCase { /** * @dataProvider dataAfterException - * - * @param Controller $controller - * @param \Exception $exception - * @param bool $forward - * @param string $message - * @param int $code */ - public function testAfterExceptionOCSv2($controller, $exception, $forward, $message = '', $code = 0): void { + public function testAfterExceptionOCSv2(string $controller, \Exception $exception, bool $forward, string $message = '', int $code = 0): void { + $controller = $this->createMock($controller); $this->request ->method('getScriptName') ->willReturn('/ocs/v2.php'); @@ -128,7 +113,7 @@ class OCSMiddlewareTest extends \Test\TestCase { $this->assertSame($message, $this->invokePrivate($result, 'statusMessage')); if ($exception->getCode() === 0) { - $this->assertSame(\OCP\AppFramework\OCSController::RESPOND_UNKNOWN_ERROR, $result->getOCSStatus()); + $this->assertSame(OCSController::RESPOND_UNKNOWN_ERROR, $result->getOCSStatus()); } else { $this->assertSame($code, $result->getOCSStatus()); } @@ -137,14 +122,9 @@ class OCSMiddlewareTest extends \Test\TestCase { /** * @dataProvider dataAfterException - * - * @param Controller $controller - * @param \Exception $exception - * @param bool $forward - * @param string $message - * @param int $code */ - public function testAfterExceptionOCSv2SubFolder($controller, $exception, $forward, $message = '', $code = 0): void { + public function testAfterExceptionOCSv2SubFolder(string $controller, \Exception $exception, bool $forward, string $message = '', int $code = 0): void { + $controller = $this->createMock($controller); $this->request ->method('getScriptName') ->willReturn('/mysubfolder/ocs/v2.php'); @@ -152,7 +132,7 @@ class OCSMiddlewareTest extends \Test\TestCase { $OCSMiddleware->beforeController($controller, 'method'); if ($forward) { - $this->expectException(get_class($exception)); + $this->expectException($exception::class); $this->expectExceptionMessage($exception->getMessage()); } @@ -162,46 +142,35 @@ class OCSMiddlewareTest extends \Test\TestCase { $this->assertSame($message, $this->invokePrivate($result, 'statusMessage')); if ($exception->getCode() === 0) { - $this->assertSame(\OCP\AppFramework\OCSController::RESPOND_UNKNOWN_ERROR, $result->getOCSStatus()); + $this->assertSame(OCSController::RESPOND_UNKNOWN_ERROR, $result->getOCSStatus()); } else { $this->assertSame($code, $result->getOCSStatus()); } $this->assertSame($code, $result->getStatus()); } - public function dataAfterController() { - $OCSController = $this->getMockBuilder(OCSController::class) - ->disableOriginalConstructor() - ->getMock(); - $controller = $this->getMockBuilder(Controller::class) - ->disableOriginalConstructor() - ->getMock(); - + public static function dataAfterController(): array { return [ - [$OCSController, new Http\Response(), false], - [$OCSController, new Http\JSONResponse(), false], - [$OCSController, new Http\JSONResponse(['message' => 'foo']), false], - [$OCSController, new Http\JSONResponse(['message' => 'foo'], Http::STATUS_UNAUTHORIZED), true, OCSController::RESPOND_UNAUTHORISED], - [$OCSController, new Http\JSONResponse(['message' => 'foo'], Http::STATUS_FORBIDDEN), true], - - [$controller, new Http\Response(), false], - [$controller, new Http\JSONResponse(), false], - [$controller, new Http\JSONResponse(['message' => 'foo']), false], - [$controller, new Http\JSONResponse(['message' => 'foo'], Http::STATUS_UNAUTHORIZED), false], - [$controller, new Http\JSONResponse(['message' => 'foo'], Http::STATUS_FORBIDDEN), false], + [OCSController::class, new Response(), false], + [OCSController::class, new JSONResponse(), false], + [OCSController::class, new JSONResponse(['message' => 'foo']), false], + [OCSController::class, new JSONResponse(['message' => 'foo'], Http::STATUS_UNAUTHORIZED), true, OCSController::RESPOND_UNAUTHORISED], + [OCSController::class, new JSONResponse(['message' => 'foo'], Http::STATUS_FORBIDDEN), true], + + [Controller::class, new Response(), false], + [Controller::class, new JSONResponse(), false], + [Controller::class, new JSONResponse(['message' => 'foo']), false], + [Controller::class, new JSONResponse(['message' => 'foo'], Http::STATUS_UNAUTHORIZED), false], + [Controller::class, new JSONResponse(['message' => 'foo'], Http::STATUS_FORBIDDEN), false], ]; } /** * @dataProvider dataAfterController - * - * @param Controller $controller - * @param Http\Response $response - * @param bool $converted - * @param int $convertedOCSStatus */ - public function testAfterController($controller, $response, $converted, $convertedOCSStatus = 0): void { + public function testAfterController(string $controller, Response $response, bool $converted, int $convertedOCSStatus = 0): void { + $controller = $this->createMock($controller); $OCSMiddleware = new OCSMiddleware($this->request); $newResponse = $OCSMiddleware->afterController($controller, 'foo', $response); diff --git a/tests/lib/AppFramework/Middleware/PublicShare/PublicShareMiddlewareTest.php b/tests/lib/AppFramework/Middleware/PublicShare/PublicShareMiddlewareTest.php index 8433aa93f4a..bf0d719f46e 100644 --- a/tests/lib/AppFramework/Middleware/PublicShare/PublicShareMiddlewareTest.php +++ b/tests/lib/AppFramework/Middleware/PublicShare/PublicShareMiddlewareTest.php @@ -58,7 +58,7 @@ class PublicShareMiddlewareTest extends \Test\TestCase { $this->assertTrue(true); } - public function dataShareApi() { + public static function dataShareApi(): array { return [ ['no', 'no',], ['no', 'yes',], diff --git a/tests/lib/AppFramework/Middleware/Security/BruteForceMiddlewareTest.php b/tests/lib/AppFramework/Middleware/Security/BruteForceMiddlewareTest.php index a224ebae949..ae575fa947f 100644 --- a/tests/lib/AppFramework/Middleware/Security/BruteForceMiddlewareTest.php +++ b/tests/lib/AppFramework/Middleware/Security/BruteForceMiddlewareTest.php @@ -98,13 +98,19 @@ class BruteForceMiddlewareTest extends TestCase { ->expects($this->once()) ->method('getRemoteAddress') ->willReturn('::1'); + + $calls = [ + ['::1', 'first'], + ['::1', 'second'], + ]; $this->throttler ->expects($this->exactly(2)) ->method('sleepDelayOrThrowOnMax') - ->withConsecutive( - ['::1', 'first'], - ['::1', 'second'], - ); + ->willReturnCallback(function () use (&$calls) { + $expected = array_shift($calls); + $this->assertEquals($expected, func_get_args()); + return 0; + }); $controller = new TestController('test', $this->request); $this->reflector->reflect($controller, 'multipleAttributes'); @@ -221,20 +227,31 @@ class BruteForceMiddlewareTest extends TestCase { ->expects($this->once()) ->method('getRemoteAddress') ->willReturn('::1'); + + $sleepCalls = [ + ['::1', 'first'], + ['::1', 'second'], + ]; $this->throttler ->expects($this->exactly(2)) ->method('sleepDelayOrThrowOnMax') - ->withConsecutive( - ['::1', 'first'], - ['::1', 'second'], - ); + ->willReturnCallback(function () use (&$sleepCalls) { + $expected = array_shift($sleepCalls); + $this->assertEquals($expected, func_get_args()); + return 0; + }); + + $attemptCalls = [ + ['first', '::1', []], + ['second', '::1', []], + ]; $this->throttler ->expects($this->exactly(2)) ->method('registerAttempt') - ->withConsecutive( - ['first', '::1'], - ['second', '::1'], - ); + ->willReturnCallback(function () use (&$attemptCalls): void { + $expected = array_shift($attemptCalls); + $this->assertEquals($expected, func_get_args()); + }); $controller = new TestController('test', $this->request); $this->reflector->reflect($controller, 'multipleAttributes'); diff --git a/tests/lib/AppFramework/Middleware/Security/CORSMiddlewareTest.php b/tests/lib/AppFramework/Middleware/Security/CORSMiddlewareTest.php index b703b10c554..2132a4d511f 100644 --- a/tests/lib/AppFramework/Middleware/Security/CORSMiddlewareTest.php +++ b/tests/lib/AppFramework/Middleware/Security/CORSMiddlewareTest.php @@ -10,6 +10,7 @@ use OC\AppFramework\Http\Request; use OC\AppFramework\Middleware\Security\CORSMiddleware; use OC\AppFramework\Middleware\Security\Exceptions\SecurityException; use OC\AppFramework\Utility\ControllerMethodReflector; +use OC\Authentication\Exceptions\PasswordLoginForbiddenException; use OC\User\Session; use OCP\AppFramework\Http\JSONResponse; use OCP\AppFramework\Http\Response; @@ -44,7 +45,7 @@ class CORSMiddlewareTest extends \Test\TestCase { ); } - public function dataSetCORSAPIHeader(): array { + public static function dataSetCORSAPIHeader(): array { return [ ['testSetCORSAPIHeader'], ['testSetCORSAPIHeaderAttribute'], @@ -89,7 +90,7 @@ class CORSMiddlewareTest extends \Test\TestCase { $this->assertFalse(array_key_exists('Access-Control-Allow-Origin', $headers)); } - public function dataNoOriginHeaderNoCORSHEADER(): array { + public static function dataNoOriginHeaderNoCORSHEADER(): array { return [ ['testNoOriginHeaderNoCORSHEADER'], ['testNoOriginHeaderNoCORSHEADERAttribute'], @@ -113,7 +114,7 @@ class CORSMiddlewareTest extends \Test\TestCase { $this->assertFalse(array_key_exists('Access-Control-Allow-Origin', $headers)); } - public function dataCorsIgnoredIfWithCredentialsHeaderPresent(): array { + public static function dataCorsIgnoredIfWithCredentialsHeaderPresent(): array { return [ ['testCorsIgnoredIfWithCredentialsHeaderPresent'], ['testCorsAttributeIgnoredIfWithCredentialsHeaderPresent'], @@ -124,7 +125,7 @@ class CORSMiddlewareTest extends \Test\TestCase { * @dataProvider dataCorsIgnoredIfWithCredentialsHeaderPresent */ public function testCorsIgnoredIfWithCredentialsHeaderPresent(string $method): void { - $this->expectException(\OC\AppFramework\Middleware\Security\Exceptions\SecurityException::class); + $this->expectException(SecurityException::class); $request = new Request( [ @@ -143,7 +144,7 @@ class CORSMiddlewareTest extends \Test\TestCase { $middleware->afterController($this->controller, $method, $response); } - public function dataNoCORSOnAnonymousPublicPage(): array { + public static function dataNoCORSOnAnonymousPublicPage(): array { return [ ['testNoCORSOnAnonymousPublicPage'], ['testNoCORSOnAnonymousPublicPageAttribute'], @@ -177,7 +178,7 @@ class CORSMiddlewareTest extends \Test\TestCase { $middleware->beforeController($this->controller, $method); } - public function dataCORSShouldNeverAllowCookieAuth(): array { + public static function dataCORSShouldNeverAllowCookieAuth(): array { return [ ['testCORSShouldNeverAllowCookieAuth'], ['testCORSShouldNeverAllowCookieAuthAttribute'], @@ -211,7 +212,7 @@ class CORSMiddlewareTest extends \Test\TestCase { $middleware->beforeController($this->controller, $method); } - public function dataCORSShouldRelogin(): array { + public static function dataCORSShouldRelogin(): array { return [ ['testCORSShouldRelogin'], ['testCORSAttributeShouldRelogin'], @@ -242,7 +243,7 @@ class CORSMiddlewareTest extends \Test\TestCase { $middleware->beforeController($this->controller, $method); } - public function dataCORSShouldFailIfPasswordLoginIsForbidden(): array { + public static function dataCORSShouldFailIfPasswordLoginIsForbidden(): array { return [ ['testCORSShouldFailIfPasswordLoginIsForbidden'], ['testCORSAttributeShouldFailIfPasswordLoginIsForbidden'], @@ -253,7 +254,7 @@ class CORSMiddlewareTest extends \Test\TestCase { * @dataProvider dataCORSShouldFailIfPasswordLoginIsForbidden */ public function testCORSShouldFailIfPasswordLoginIsForbidden(string $method): void { - $this->expectException(\OC\AppFramework\Middleware\Security\Exceptions\SecurityException::class); + $this->expectException(SecurityException::class); $request = new Request( ['server' => [ @@ -268,14 +269,14 @@ class CORSMiddlewareTest extends \Test\TestCase { $this->session->expects($this->once()) ->method('logClientIn') ->with($this->equalTo('user'), $this->equalTo('pass')) - ->will($this->throwException(new \OC\Authentication\Exceptions\PasswordLoginForbiddenException)); + ->willThrowException(new PasswordLoginForbiddenException); $this->reflector->reflect($this->controller, $method); $middleware = new CORSMiddleware($request, $this->reflector, $this->session, $this->throttler, $this->logger); $middleware->beforeController($this->controller, $method); } - public function dataCORSShouldNotAllowCookieAuth(): array { + public static function dataCORSShouldNotAllowCookieAuth(): array { return [ ['testCORSShouldNotAllowCookieAuth'], ['testCORSAttributeShouldNotAllowCookieAuth'], @@ -286,7 +287,7 @@ class CORSMiddlewareTest extends \Test\TestCase { * @dataProvider dataCORSShouldNotAllowCookieAuth */ public function testCORSShouldNotAllowCookieAuth(string $method): void { - $this->expectException(\OC\AppFramework\Middleware\Security\Exceptions\SecurityException::class); + $this->expectException(SecurityException::class); $request = new Request( ['server' => [ diff --git a/tests/lib/AppFramework/Middleware/Security/Mock/CORSMiddlewareController.php b/tests/lib/AppFramework/Middleware/Security/Mock/CORSMiddlewareController.php index 769cba87207..8ab3a48b62e 100644 --- a/tests/lib/AppFramework/Middleware/Security/Mock/CORSMiddlewareController.php +++ b/tests/lib/AppFramework/Middleware/Security/Mock/CORSMiddlewareController.php @@ -9,10 +9,11 @@ declare(strict_types=1); namespace Test\AppFramework\Middleware\Security\Mock; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http\Attribute\CORS; use OCP\AppFramework\Http\Attribute\PublicPage; -class CORSMiddlewareController extends \OCP\AppFramework\Controller { +class CORSMiddlewareController extends Controller { /** * @CORS */ diff --git a/tests/lib/AppFramework/Middleware/Security/Mock/NormalController.php b/tests/lib/AppFramework/Middleware/Security/Mock/NormalController.php index 99f33be1cc9..4d6778e98b9 100644 --- a/tests/lib/AppFramework/Middleware/Security/Mock/NormalController.php +++ b/tests/lib/AppFramework/Middleware/Security/Mock/NormalController.php @@ -9,7 +9,9 @@ declare(strict_types=1); namespace Test\AppFramework\Middleware\Security\Mock; -class NormalController extends \OCP\AppFramework\Controller { +use OCP\AppFramework\Controller; + +class NormalController extends Controller { public function foo() { } } diff --git a/tests/lib/AppFramework/Middleware/Security/Mock/PasswordConfirmationMiddlewareController.php b/tests/lib/AppFramework/Middleware/Security/Mock/PasswordConfirmationMiddlewareController.php index 02159661ff6..cd1cdaa49ca 100644 --- a/tests/lib/AppFramework/Middleware/Security/Mock/PasswordConfirmationMiddlewareController.php +++ b/tests/lib/AppFramework/Middleware/Security/Mock/PasswordConfirmationMiddlewareController.php @@ -9,9 +9,10 @@ declare(strict_types=1); namespace Test\AppFramework\Middleware\Security\Mock; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired; -class PasswordConfirmationMiddlewareController extends \OCP\AppFramework\Controller { +class PasswordConfirmationMiddlewareController extends Controller { public function testNoAnnotationNorAttribute() { } diff --git a/tests/lib/AppFramework/Middleware/Security/Mock/SecurityMiddlewareController.php b/tests/lib/AppFramework/Middleware/Security/Mock/SecurityMiddlewareController.php index 7d40d587c8e..c8f9878b0c1 100644 --- a/tests/lib/AppFramework/Middleware/Security/Mock/SecurityMiddlewareController.php +++ b/tests/lib/AppFramework/Middleware/Security/Mock/SecurityMiddlewareController.php @@ -9,6 +9,7 @@ declare(strict_types=1); namespace Test\AppFramework\Middleware\Security\Mock; +use OCP\AppFramework\Controller; use OCP\AppFramework\Http\Attribute\ExAppRequired; use OCP\AppFramework\Http\Attribute\NoAdminRequired; use OCP\AppFramework\Http\Attribute\NoCSRFRequired; @@ -16,7 +17,7 @@ use OCP\AppFramework\Http\Attribute\PublicPage; use OCP\AppFramework\Http\Attribute\StrictCookiesRequired; use OCP\AppFramework\Http\Attribute\SubAdminRequired; -class SecurityMiddlewareController extends \OCP\AppFramework\Controller { +class SecurityMiddlewareController extends Controller { /** * @PublicPage * @NoCSRFRequired diff --git a/tests/lib/AppFramework/Middleware/Security/PasswordConfirmationMiddlewareTest.php b/tests/lib/AppFramework/Middleware/Security/PasswordConfirmationMiddlewareTest.php index 3dec030d438..e607b19d1ef 100644 --- a/tests/lib/AppFramework/Middleware/Security/PasswordConfirmationMiddlewareTest.php +++ b/tests/lib/AppFramework/Middleware/Security/PasswordConfirmationMiddlewareTest.php @@ -162,7 +162,7 @@ class PasswordConfirmationMiddlewareTest extends TestCase { - public function dataProvider() { + public static function dataProvider(): array { return [ ['foo', 2000, 4000, true], ['foo', 2000, 3000, false], diff --git a/tests/lib/AppFramework/Middleware/Security/SameSiteCookieMiddlewareTest.php b/tests/lib/AppFramework/Middleware/Security/SameSiteCookieMiddlewareTest.php index 0ca4a455cba..44897fa21ef 100644 --- a/tests/lib/AppFramework/Middleware/Security/SameSiteCookieMiddlewareTest.php +++ b/tests/lib/AppFramework/Middleware/Security/SameSiteCookieMiddlewareTest.php @@ -103,7 +103,7 @@ class SameSiteCookieMiddlewareTest extends TestCase { $middleware = $this->getMockBuilder(SameSiteCookieMiddleware::class) ->setConstructorArgs([$this->request, $this->reflector]) - ->setMethods(['setSameSiteCookie']) + ->onlyMethods(['setSameSiteCookie']) ->getMock(); $middleware->expects($this->once()) diff --git a/tests/lib/AppFramework/Middleware/Security/SecurityMiddlewareTest.php b/tests/lib/AppFramework/Middleware/Security/SecurityMiddlewareTest.php index 07e368fd1e6..183f1aa7477 100644 --- a/tests/lib/AppFramework/Middleware/Security/SecurityMiddlewareTest.php +++ b/tests/lib/AppFramework/Middleware/Security/SecurityMiddlewareTest.php @@ -125,7 +125,7 @@ class SecurityMiddlewareTest extends \Test\TestCase { ); } - public function dataNoCSRFRequiredPublicPage(): array { + public static function dataNoCSRFRequiredPublicPage(): array { return [ ['testAnnotationNoCSRFRequiredPublicPage'], ['testAnnotationNoCSRFRequiredAttributePublicPage'], @@ -134,21 +134,21 @@ class SecurityMiddlewareTest extends \Test\TestCase { ]; } - public function dataPublicPage(): array { + public static function dataPublicPage(): array { return [ ['testAnnotationPublicPage'], ['testAttributePublicPage'], ]; } - public function dataNoCSRFRequired(): array { + public static function dataNoCSRFRequired(): array { return [ ['testAnnotationNoCSRFRequired'], ['testAttributeNoCSRFRequired'], ]; } - public function dataPublicPageStrictCookieRequired(): array { + public static function dataPublicPageStrictCookieRequired(): array { return [ ['testAnnotationPublicPageStrictCookieRequired'], ['testAnnotationStrictCookieRequiredAttributePublicPage'], @@ -157,28 +157,28 @@ class SecurityMiddlewareTest extends \Test\TestCase { ]; } - public function dataNoCSRFRequiredPublicPageStrictCookieRequired(): array { + public static function dataNoCSRFRequiredPublicPageStrictCookieRequired(): array { return [ ['testAnnotationNoCSRFRequiredPublicPageStrictCookieRequired'], ['testAttributeNoCSRFRequiredPublicPageStrictCookiesRequired'], ]; } - public function dataNoAdminRequiredNoCSRFRequired(): array { + public static function dataNoAdminRequiredNoCSRFRequired(): array { return [ ['testAnnotationNoAdminRequiredNoCSRFRequired'], ['testAttributeNoAdminRequiredNoCSRFRequired'], ]; } - public function dataNoAdminRequiredNoCSRFRequiredPublicPage(): array { + public static function dataNoAdminRequiredNoCSRFRequiredPublicPage(): array { return [ ['testAnnotationNoAdminRequiredNoCSRFRequiredPublicPage'], ['testAttributeNoAdminRequiredNoCSRFRequiredPublicPage'], ]; } - public function dataNoCSRFRequiredSubAdminRequired(): array { + public static function dataNoCSRFRequiredSubAdminRequired(): array { return [ ['testAnnotationNoCSRFRequiredSubAdminRequired'], ['testAnnotationNoCSRFRequiredAttributeSubAdminRequired'], @@ -332,7 +332,7 @@ class SecurityMiddlewareTest extends \Test\TestCase { * @dataProvider dataPublicPage */ public function testCsrfCheck(string $method): void { - $this->expectException(\OC\AppFramework\Middleware\Security\Exceptions\CrossSiteRequestForgeryException::class); + $this->expectException(CrossSiteRequestForgeryException::class); $this->request->expects($this->once()) ->method('passesCSRFCheck') @@ -375,7 +375,7 @@ class SecurityMiddlewareTest extends \Test\TestCase { * @dataProvider dataPublicPage */ public function testFailCsrfCheck(string $method): void { - $this->expectException(\OC\AppFramework\Middleware\Security\Exceptions\CrossSiteRequestForgeryException::class); + $this->expectException(CrossSiteRequestForgeryException::class); $this->request->expects($this->once()) ->method('passesCSRFCheck') @@ -429,7 +429,7 @@ class SecurityMiddlewareTest extends \Test\TestCase { $this->middleware->beforeController($this->controller, $method); } - public function dataCsrfOcsController(): array { + public static function dataCsrfOcsController(): array { return [ [NormalController::class, false, false, true], [NormalController::class, false, true, true], @@ -659,7 +659,7 @@ class SecurityMiddlewareTest extends \Test\TestCase { /** * @return array */ - public function exceptionProvider() { + public static function exceptionProvider(): array { return [ [ new AppNotEnabledException(), diff --git a/tests/lib/AppFramework/OCS/BaseResponseTest.php b/tests/lib/AppFramework/OCS/BaseResponseTest.php index 159459a4aec..a04f517db0b 100644 --- a/tests/lib/AppFramework/OCS/BaseResponseTest.php +++ b/tests/lib/AppFramework/OCS/BaseResponseTest.php @@ -12,9 +12,9 @@ namespace Test\AppFramework\OCS; use OC\AppFramework\OCS\BaseResponse; class ArrayValue implements \JsonSerializable { - private $array; - public function __construct(array $array) { - $this->array = $array; + public function __construct( + private array $array, + ) { } public function jsonSerialize(): mixed { diff --git a/tests/lib/AppFramework/OCS/V2ResponseTest.php b/tests/lib/AppFramework/OCS/V2ResponseTest.php index 97a227418f3..0037763f163 100644 --- a/tests/lib/AppFramework/OCS/V2ResponseTest.php +++ b/tests/lib/AppFramework/OCS/V2ResponseTest.php @@ -23,7 +23,7 @@ class V2ResponseTest extends \Test\TestCase { $this->assertEquals($expected, $response->getStatus()); } - public function providesStatusCodes(): array { + public static function providesStatusCodes(): array { return [ [Http::STATUS_OK, 200], [Http::STATUS_BAD_REQUEST, 104], diff --git a/tests/lib/AppFramework/Routing/RouteParserTest.php b/tests/lib/AppFramework/Routing/RouteParserTest.php new file mode 100644 index 00000000000..406c5f1f3a5 --- /dev/null +++ b/tests/lib/AppFramework/Routing/RouteParserTest.php @@ -0,0 +1,347 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace Test\AppFramework\Routing; + +use OC\AppFramework\Routing\RouteParser; +use Symfony\Component\Routing\Route as RoutingRoute; +use Symfony\Component\Routing\RouteCollection; + +class RouteParserTest extends \Test\TestCase { + + protected RouteParser $parser; + + protected function setUp(): void { + $this->parser = new RouteParser(); + } + + public function testParseRoutes(): void { + $routes = ['routes' => [ + ['name' => 'folders#open', 'url' => '/{folderId}/open', 'verb' => 'GET'], + ['name' => 'folders#create', 'url' => '/{folderId}/create', 'verb' => 'POST'] + ]]; + + $collection = $this->parser->parseDefaultRoutes($routes, 'app1'); + $this->assertArrayHasKey('app1.folders.open', $collection->all()); + $this->assertSimpleRoute('/apps/app1/{folderId}/open', 'GET', 'FoldersController', 'open', route: $collection->get('app1.folders.open')); + $this->assertArrayHasKey('app1.folders.create', $collection->all()); + $this->assertSimpleRoute('/apps/app1/{folderId}/create', 'POST', 'FoldersController', 'create', route: $collection->get('app1.folders.create')); + } + + public function testParseRoutesRootApps(): void { + $routes = ['routes' => [ + ['name' => 'folders#open', 'url' => '/{folderId}/open', 'verb' => 'GET'], + ['name' => 'folders#create', 'url' => '/{folderId}/create', 'verb' => 'POST'] + ]]; + + $collection = $this->parser->parseDefaultRoutes($routes, 'core'); + $this->assertArrayHasKey('core.folders.open', $collection->all()); + $this->assertSimpleRoute('/{folderId}/open', 'GET', 'FoldersController', 'open', app: 'core', route: $collection->get('core.folders.open')); + $this->assertArrayHasKey('core.folders.create', $collection->all()); + $this->assertSimpleRoute('/{folderId}/create', 'POST', 'FoldersController', 'create', app: 'core', route: $collection->get('core.folders.create')); + } + + public function testParseRoutesWithResources(): void { + $routes = ['routes' => [ + ['name' => 'folders#open', 'url' => '/{folderId}/open', 'verb' => 'GET'], + ], 'resources' => [ + 'names' => ['url' => '/names'], + 'folder_names' => ['url' => '/folder/names'], + ]]; + + $collection = $this->parser->parseDefaultRoutes($routes, 'app1'); + $this->assertArrayHasKey('app1.folders.open', $collection->all()); + $this->assertSimpleResource('/apps/app1/folder/names', 'folder_names', 'FolderNamesController', 'app1', $collection); + $this->assertSimpleResource('/apps/app1/names', 'names', 'NamesController', 'app1', $collection); + } + + public function testParseRoutesWithPostfix(): void { + $routes = ['routes' => [ + ['name' => 'folders#update', 'url' => '/{folderId}/update', 'verb' => 'POST'], + ['name' => 'folders#update', 'url' => '/{folderId}/update', 'verb' => 'PUT', 'postfix' => '-edit'] + ]]; + + $collection = $this->parser->parseDefaultRoutes($routes, 'app1'); + $this->assertArrayHasKey('app1.folders.update', $collection->all()); + $this->assertSimpleRoute('/apps/app1/{folderId}/update', 'POST', 'FoldersController', 'update', route: $collection->get('app1.folders.update')); + $this->assertArrayHasKey('app1.folders.update-edit', $collection->all()); + $this->assertSimpleRoute('/apps/app1/{folderId}/update', 'PUT', 'FoldersController', 'update', route: $collection->get('app1.folders.update-edit')); + } + + public function testParseRoutesKebabCaseAction(): void { + $routes = ['routes' => [ + ['name' => 'folders#open_folder', 'url' => '/{folderId}/open', 'verb' => 'GET'] + ]]; + + $collection = $this->parser->parseDefaultRoutes($routes, 'app1'); + $this->assertArrayHasKey('app1.folders.open_folder', $collection->all()); + $this->assertSimpleRoute('/apps/app1/{folderId}/open', 'GET', 'FoldersController', 'openFolder', route: $collection->get('app1.folders.open_folder')); + } + + public function testParseRoutesKebabCaseController(): void { + $routes = ['routes' => [ + ['name' => 'my_folders#open', 'url' => '/{folderId}/open', 'verb' => 'GET'] + ]]; + + $collection = $this->parser->parseDefaultRoutes($routes, 'app1'); + $this->assertArrayHasKey('app1.my_folders.open', $collection->all()); + $this->assertSimpleRoute('/apps/app1/{folderId}/open', 'GET', 'MyFoldersController', 'open', route: $collection->get('app1.my_folders.open')); + } + + public function testParseRoutesLowercaseVerb(): void { + $routes = ['routes' => [ + ['name' => 'folders#delete', 'url' => '/{folderId}/delete', 'verb' => 'delete'] + ]]; + + $collection = $this->parser->parseDefaultRoutes($routes, 'app1'); + $this->assertArrayHasKey('app1.folders.delete', $collection->all()); + $this->assertSimpleRoute('/apps/app1/{folderId}/delete', 'DELETE', 'FoldersController', 'delete', route: $collection->get('app1.folders.delete')); + } + + public function testParseRoutesMissingVerb(): void { + $routes = ['routes' => [ + ['name' => 'folders#open', 'url' => '/{folderId}/open'] + ]]; + + $collection = $this->parser->parseDefaultRoutes($routes, 'app1'); + $this->assertArrayHasKey('app1.folders.open', $collection->all()); + $this->assertSimpleRoute('/apps/app1/{folderId}/open', 'GET', 'FoldersController', 'open', route: $collection->get('app1.folders.open')); + } + + public function testParseRoutesWithRequirements(): void { + $routes = ['routes' => [ + ['name' => 'folders#open', 'url' => '/{folderId}/open', 'verb' => 'GET', 'requirements' => ['folderId' => '\d+']] + ]]; + + $collection = $this->parser->parseDefaultRoutes($routes, 'app1'); + $this->assertArrayHasKey('app1.folders.open', $collection->all()); + $this->assertSimpleRoute('/apps/app1/{folderId}/open', 'GET', 'FoldersController', 'open', requirements: ['folderId' => '\d+'], route: $collection->get('app1.folders.open')); + } + + public function testParseRoutesWithDefaults(): void { + $routes = ['routes' => [ + ['name' => 'folders#open', 'url' => '/{folderId}/open', 'verb' => 'GET', 'defaults' => ['hello' => 'world']] + ]]; + + $collection = $this->parser->parseDefaultRoutes($routes, 'app1'); + $this->assertArrayHasKey('app1.folders.open', $collection->all()); + $this->assertSimpleRoute('/apps/app1/{folderId}/open', 'GET', 'FoldersController', 'open', defaults: ['hello' => 'world'], route: $collection->get('app1.folders.open')); + } + + public function testParseRoutesInvalidName(): void { + $routes = ['routes' => [ + ['name' => 'folders', 'url' => '/{folderId}/open', 'verb' => 'GET'] + ]]; + + $this->expectException(\UnexpectedValueException::class); + $this->parser->parseDefaultRoutes($routes, 'app1'); + } + + public function testParseRoutesInvalidName2(): void { + $routes = ['routes' => [ + ['name' => 'folders#open#action', 'url' => '/{folderId}/open', 'verb' => 'GET'] + ]]; + + $this->expectException(\UnexpectedValueException::class); + $this->parser->parseDefaultRoutes($routes, 'app1'); + } + + public function testParseRoutesEmpty(): void { + $routes = ['routes' => []]; + + $collection = $this->parser->parseDefaultRoutes($routes, 'app1'); + $this->assertEquals(0, $collection->count()); + } + + // OCS routes + + public function testParseOcsRoutes(): void { + $routes = ['ocs' => [ + ['name' => 'folders#open', 'url' => '/{folderId}/open', 'verb' => 'GET'], + ['name' => 'folders#create', 'url' => '/{folderId}/create', 'verb' => 'POST'] + ]]; + + $collection = $this->parser->parseOCSRoutes($routes, 'app1'); + $this->assertArrayHasKey('ocs.app1.folders.open', $collection->all()); + $this->assertSimpleRoute('/apps/app1/{folderId}/open', 'GET', 'FoldersController', 'open', route: $collection->get('ocs.app1.folders.open')); + $this->assertArrayHasKey('ocs.app1.folders.create', $collection->all()); + $this->assertSimpleRoute('/apps/app1/{folderId}/create', 'POST', 'FoldersController', 'create', route: $collection->get('ocs.app1.folders.create')); + } + + public function testParseOcsRoutesRootApps(): void { + $routes = ['ocs' => [ + ['name' => 'folders#open', 'url' => '/{folderId}/open', 'verb' => 'GET'], + ['name' => 'folders#create', 'url' => '/{folderId}/create', 'verb' => 'POST'] + ]]; + + $collection = $this->parser->parseOCSRoutes($routes, 'core'); + $this->assertArrayHasKey('ocs.core.folders.open', $collection->all()); + $this->assertSimpleRoute('/{folderId}/open', 'GET', 'FoldersController', 'open', app: 'core', route: $collection->get('ocs.core.folders.open')); + $this->assertArrayHasKey('ocs.core.folders.create', $collection->all()); + $this->assertSimpleRoute('/{folderId}/create', 'POST', 'FoldersController', 'create', app: 'core', route: $collection->get('ocs.core.folders.create')); + } + + public function testParseOcsRoutesWithPostfix(): void { + $routes = ['ocs' => [ + ['name' => 'folders#update', 'url' => '/{folderId}/update', 'verb' => 'POST'], + ['name' => 'folders#update', 'url' => '/{folderId}/update', 'verb' => 'PUT', 'postfix' => '-edit'] + ]]; + + $collection = $this->parser->parseOCSRoutes($routes, 'app1'); + $this->assertArrayHasKey('ocs.app1.folders.update', $collection->all()); + $this->assertSimpleRoute('/apps/app1/{folderId}/update', 'POST', 'FoldersController', 'update', route: $collection->get('ocs.app1.folders.update')); + $this->assertArrayHasKey('ocs.app1.folders.update-edit', $collection->all()); + $this->assertSimpleRoute('/apps/app1/{folderId}/update', 'PUT', 'FoldersController', 'update', route: $collection->get('ocs.app1.folders.update-edit')); + } + + public function testParseOcsRoutesKebabCaseAction(): void { + $routes = ['ocs' => [ + ['name' => 'folders#open_folder', 'url' => '/{folderId}/open', 'verb' => 'GET'] + ]]; + + $collection = $this->parser->parseOCSRoutes($routes, 'app1'); + $this->assertArrayHasKey('ocs.app1.folders.open_folder', $collection->all()); + $this->assertSimpleRoute('/apps/app1/{folderId}/open', 'GET', 'FoldersController', 'openFolder', route: $collection->get('ocs.app1.folders.open_folder')); + } + + public function testParseOcsRoutesKebabCaseController(): void { + $routes = ['ocs' => [ + ['name' => 'my_folders#open', 'url' => '/{folderId}/open', 'verb' => 'GET'] + ]]; + + $collection = $this->parser->parseOCSRoutes($routes, 'app1'); + $this->assertArrayHasKey('ocs.app1.my_folders.open', $collection->all()); + $this->assertSimpleRoute('/apps/app1/{folderId}/open', 'GET', 'MyFoldersController', 'open', route: $collection->get('ocs.app1.my_folders.open')); + } + + public function testParseOcsRoutesLowercaseVerb(): void { + $routes = ['ocs' => [ + ['name' => 'folders#delete', 'url' => '/{folderId}/delete', 'verb' => 'delete'] + ]]; + + $collection = $this->parser->parseOCSRoutes($routes, 'app1'); + $this->assertArrayHasKey('ocs.app1.folders.delete', $collection->all()); + $this->assertSimpleRoute('/apps/app1/{folderId}/delete', 'DELETE', 'FoldersController', 'delete', route: $collection->get('ocs.app1.folders.delete')); + } + + public function testParseOcsRoutesMissingVerb(): void { + $routes = ['ocs' => [ + ['name' => 'folders#open', 'url' => '/{folderId}/open'] + ]]; + + $collection = $this->parser->parseOCSRoutes($routes, 'app1'); + $this->assertArrayHasKey('ocs.app1.folders.open', $collection->all()); + $this->assertSimpleRoute('/apps/app1/{folderId}/open', 'GET', 'FoldersController', 'open', route: $collection->get('ocs.app1.folders.open')); + } + + public function testParseOcsRoutesWithRequirements(): void { + $routes = ['ocs' => [ + ['name' => 'folders#open', 'url' => '/{folderId}/open', 'verb' => 'GET', 'requirements' => ['folderId' => '\d+']] + ]]; + + $collection = $this->parser->parseOCSRoutes($routes, 'app1'); + $this->assertArrayHasKey('ocs.app1.folders.open', $collection->all()); + $this->assertSimpleRoute('/apps/app1/{folderId}/open', 'GET', 'FoldersController', 'open', requirements: ['folderId' => '\d+'], route: $collection->get('ocs.app1.folders.open')); + } + + public function testParseOcsRoutesWithDefaults(): void { + $routes = ['ocs' => [ + ['name' => 'folders#open', 'url' => '/{folderId}/open', 'verb' => 'GET', 'defaults' => ['hello' => 'world']] + ]]; + + $collection = $this->parser->parseOCSRoutes($routes, 'app1'); + $this->assertArrayHasKey('ocs.app1.folders.open', $collection->all()); + $this->assertSimpleRoute('/apps/app1/{folderId}/open', 'GET', 'FoldersController', 'open', defaults: ['hello' => 'world'], route: $collection->get('ocs.app1.folders.open')); + } + + public function testParseOcsRoutesInvalidName(): void { + $routes = ['ocs' => [ + ['name' => 'folders', 'url' => '/{folderId}/open', 'verb' => 'GET'] + ]]; + + $this->expectException(\UnexpectedValueException::class); + $this->parser->parseOCSRoutes($routes, 'app1'); + } + + public function testParseOcsRoutesEmpty(): void { + $routes = ['ocs' => []]; + + $collection = $this->parser->parseOCSRoutes($routes, 'app1'); + $this->assertEquals(0, $collection->count()); + } + + public function testParseOcsRoutesWithResources(): void { + $routes = ['ocs' => [ + ['name' => 'folders#open', 'url' => '/{folderId}/open', 'verb' => 'GET'], + ], 'ocs-resources' => [ + 'names' => ['url' => '/names', 'root' => '/core/something'], + 'folder_names' => ['url' => '/folder/names'], + ]]; + + $collection = $this->parser->parseOCSRoutes($routes, 'app1'); + $this->assertArrayHasKey('ocs.app1.folders.open', $collection->all()); + $this->assertOcsResource('/apps/app1/folder/names', 'folder_names', 'FolderNamesController', 'app1', $collection); + $this->assertOcsResource('/core/something/names', 'names', 'NamesController', 'app1', $collection); + } + + protected function assertSimpleRoute( + string $path, + string $method, + string $controller, + string $action, + string $app = 'app1', + array $requirements = [], + array $defaults = [], + ?RoutingRoute $route = null, + ): void { + self::assertEquals($path, $route->getPath()); + self::assertEqualsCanonicalizing([$method], $route->getMethods()); + self::assertEqualsCanonicalizing($requirements, $route->getRequirements()); + self::assertEquals([...$defaults, 'action' => null, 'caller' => [$app, $controller, $action]], $route->getDefaults()); + } + + protected function assertSimpleResource( + string $path, + string $resourceName, + string $controller, + string $app, + RouteCollection $collection, + ): void { + self::assertArrayHasKey("$app.$resourceName.index", $collection->all()); + self::assertArrayHasKey("$app.$resourceName.show", $collection->all()); + self::assertArrayHasKey("$app.$resourceName.create", $collection->all()); + self::assertArrayHasKey("$app.$resourceName.update", $collection->all()); + self::assertArrayHasKey("$app.$resourceName.destroy", $collection->all()); + + $this->assertSimpleRoute($path, 'GET', $controller, 'index', $app, route: $collection->get("$app.$resourceName.index")); + $this->assertSimpleRoute($path, 'POST', $controller, 'create', $app, route: $collection->get("$app.$resourceName.create")); + $this->assertSimpleRoute("$path/{id}", 'GET', $controller, 'show', $app, route: $collection->get("$app.$resourceName.show")); + $this->assertSimpleRoute("$path/{id}", 'PUT', $controller, 'update', $app, route: $collection->get("$app.$resourceName.update")); + $this->assertSimpleRoute("$path/{id}", 'DELETE', $controller, 'destroy', $app, route: $collection->get("$app.$resourceName.destroy")); + } + + protected function assertOcsResource( + string $path, + string $resourceName, + string $controller, + string $app, + RouteCollection $collection, + ): void { + self::assertArrayHasKey("ocs.$app.$resourceName.index", $collection->all()); + self::assertArrayHasKey("ocs.$app.$resourceName.show", $collection->all()); + self::assertArrayHasKey("ocs.$app.$resourceName.create", $collection->all()); + self::assertArrayHasKey("ocs.$app.$resourceName.update", $collection->all()); + self::assertArrayHasKey("ocs.$app.$resourceName.destroy", $collection->all()); + + $this->assertSimpleRoute($path, 'GET', $controller, 'index', $app, route: $collection->get("ocs.$app.$resourceName.index")); + $this->assertSimpleRoute($path, 'POST', $controller, 'create', $app, route: $collection->get("ocs.$app.$resourceName.create")); + $this->assertSimpleRoute("$path/{id}", 'GET', $controller, 'show', $app, route: $collection->get("ocs.$app.$resourceName.show")); + $this->assertSimpleRoute("$path/{id}", 'PUT', $controller, 'update', $app, route: $collection->get("ocs.$app.$resourceName.update")); + $this->assertSimpleRoute("$path/{id}", 'DELETE', $controller, 'destroy', $app, route: $collection->get("ocs.$app.$resourceName.destroy")); + } +} diff --git a/tests/lib/AppFramework/Routing/RoutingTest.php b/tests/lib/AppFramework/Routing/RoutingTest.php deleted file mode 100644 index 8522382ddcc..00000000000 --- a/tests/lib/AppFramework/Routing/RoutingTest.php +++ /dev/null @@ -1,476 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ -namespace Test\AppFramework\Routing; - -use OC\AppFramework\DependencyInjection\DIContainer; -use OC\AppFramework\Routing\RouteConfig; -use OC\Route\Route; -use OC\Route\Router; -use OCP\App\IAppManager; -use OCP\Diagnostics\IEventLogger; -use OCP\IConfig; -use OCP\IRequest; -use OCP\Route\IRouter; -use PHPUnit\Framework\MockObject\MockObject; -use Psr\Container\ContainerInterface; -use Psr\Log\LoggerInterface; - -class RoutingTest extends \Test\TestCase { - public function testSimpleRoute(): void { - $routes = ['routes' => [ - ['name' => 'folders#open', 'url' => '/folders/{folderId}/open', 'verb' => 'GET'] - ]]; - - $this->assertSimpleRoute($routes, 'folders.open', 'GET', '/apps/app1/folders/{folderId}/open', 'FoldersController', 'open'); - } - - public function testSimpleRouteWithUnderScoreNames(): void { - $routes = ['routes' => [ - ['name' => 'admin_folders#open_current', 'url' => '/folders/{folderId}/open', 'verb' => 'delete', 'root' => ''] - ]]; - - $this->assertSimpleRoute($routes, 'admin_folders.open_current', 'DELETE', '/folders/{folderId}/open', 'AdminFoldersController', 'openCurrent', [], [], '', true); - } - - public function testSimpleOCSRoute(): void { - $routes = ['ocs' => [ - ['name' => 'folders#open', 'url' => '/folders/{folderId}/open', 'verb' => 'GET'] - ] - ]; - - $this->assertSimpleOCSRoute($routes, 'folders.open', 'GET', '/apps/app1/folders/{folderId}/open', 'FoldersController', 'open'); - } - - public function testSimpleRouteWithMissingVerb(): void { - $routes = ['routes' => [ - ['name' => 'folders#open', 'url' => '/folders/{folderId}/open'] - ]]; - - $this->assertSimpleRoute($routes, 'folders.open', 'GET', '/apps/app1/folders/{folderId}/open', 'FoldersController', 'open'); - } - - public function testSimpleOCSRouteWithMissingVerb(): void { - $routes = ['ocs' => [ - ['name' => 'folders#open', 'url' => '/folders/{folderId}/open'] - ] - ]; - - $this->assertSimpleOCSRoute($routes, 'folders.open', 'GET', '/apps/app1/folders/{folderId}/open', 'FoldersController', 'open'); - } - - public function testSimpleRouteWithLowercaseVerb(): void { - $routes = ['routes' => [ - ['name' => 'folders#open', 'url' => '/folders/{folderId}/open', 'verb' => 'delete'] - ]]; - - $this->assertSimpleRoute($routes, 'folders.open', 'DELETE', '/apps/app1/folders/{folderId}/open', 'FoldersController', 'open'); - } - - public function testSimpleOCSRouteWithLowercaseVerb(): void { - $routes = ['ocs' => [ - ['name' => 'folders#open', 'url' => '/folders/{folderId}/open', 'verb' => 'delete'] - ] - ]; - - $this->assertSimpleOCSRoute($routes, 'folders.open', 'DELETE', '/apps/app1/folders/{folderId}/open', 'FoldersController', 'open'); - } - - public function testSimpleRouteWithRequirements(): void { - $routes = ['routes' => [ - ['name' => 'folders#open', 'url' => '/folders/{folderId}/open', 'verb' => 'delete', 'requirements' => ['something']] - ]]; - - $this->assertSimpleRoute($routes, 'folders.open', 'DELETE', '/apps/app1/folders/{folderId}/open', 'FoldersController', 'open', ['something']); - } - - public function testSimpleOCSRouteWithRequirements(): void { - $routes = ['ocs' => [ - ['name' => 'folders#open', 'url' => '/folders/{folderId}/open', 'verb' => 'delete', 'requirements' => ['something']] - ] - ]; - - $this->assertSimpleOCSRoute($routes, 'folders.open', 'DELETE', '/apps/app1/folders/{folderId}/open', 'FoldersController', 'open', ['something']); - } - - public function testSimpleRouteWithDefaults(): void { - $routes = ['routes' => [ - ['name' => 'folders#open', 'url' => '/folders/{folderId}/open', 'verb' => 'delete', [], 'defaults' => ['param' => 'foobar']] - ]]; - - $this->assertSimpleRoute($routes, 'folders.open', 'DELETE', '/apps/app1/folders/{folderId}/open', 'FoldersController', 'open', [], ['param' => 'foobar']); - } - - - public function testSimpleOCSRouteWithDefaults(): void { - $routes = ['ocs' => [ - ['name' => 'folders#open', 'url' => '/folders/{folderId}/open', 'verb' => 'delete', 'defaults' => ['param' => 'foobar']] - ] - ]; - - $this->assertSimpleOCSRoute($routes, 'folders.open', 'DELETE', '/apps/app1/folders/{folderId}/open', 'FoldersController', 'open', [], ['param' => 'foobar']); - } - - public function testSimpleRouteWithPostfix(): void { - $routes = ['routes' => [ - ['name' => 'folders#open', 'url' => '/folders/{folderId}/open', 'verb' => 'delete', 'postfix' => '_something'] - ]]; - - $this->assertSimpleRoute($routes, 'folders.open', 'DELETE', '/apps/app1/folders/{folderId}/open', 'FoldersController', 'open', [], [], '_something'); - } - - public function testSimpleOCSRouteWithPostfix(): void { - $routes = ['ocs' => [ - ['name' => 'folders#open', 'url' => '/folders/{folderId}/open', 'verb' => 'delete', 'postfix' => '_something'] - ] - ]; - - $this->assertSimpleOCSRoute($routes, 'folders.open', 'DELETE', '/apps/app1/folders/{folderId}/open', 'FoldersController', 'open', [], [], '_something'); - } - - - public function testSimpleRouteWithBrokenName(): void { - $this->expectException(\UnexpectedValueException::class); - - $routes = ['routes' => [ - ['name' => 'folders_open', 'url' => '/folders/{folderId}/open', 'verb' => 'delete'] - ]]; - - /** @var IRouter|MockObject $router */ - $router = $this->getMockBuilder(Router::class) - ->onlyMethods(['create']) - ->setConstructorArgs([ - $this->createMock(LoggerInterface::class), - $this->createMock(IRequest::class), - $this->createMock(IConfig::class), - $this->createMock(IEventLogger::class), - $this->createMock(ContainerInterface::class), - $this->createMock(IAppManager::class), - ]) - ->getMock(); - - // load route configuration - $container = new DIContainer('app1'); - $config = new RouteConfig($container, $router, $routes); - - $config->register(); - } - - - public function testSimpleOCSRouteWithBrokenName(): void { - $this->expectException(\UnexpectedValueException::class); - - $routes = ['ocs' => [ - ['name' => 'folders_open', 'url' => '/folders/{folderId}/open', 'verb' => 'delete'] - ]]; - - /** @var IRouter|MockObject $router */ - $router = $this->getMockBuilder(Router::class) - ->onlyMethods(['create']) - ->setConstructorArgs([ - $this->createMock(LoggerInterface::class), - $this->createMock(IRequest::class), - $this->createMock(IConfig::class), - $this->createMock(IEventLogger::class), - $this->createMock(ContainerInterface::class), - $this->createMock(IAppManager::class), - ]) - ->getMock(); - - // load route configuration - $container = new DIContainer('app1'); - $config = new RouteConfig($container, $router, $routes); - - $config->register(); - } - - public function testSimpleOCSRouteWithUnderScoreNames(): void { - $routes = ['ocs' => [ - ['name' => 'admin_folders#open_current', 'url' => '/folders/{folderId}/open', 'verb' => 'delete'] - ]]; - - $this->assertSimpleOCSRoute($routes, 'admin_folders.open_current', 'DELETE', '/apps/app1/folders/{folderId}/open', 'AdminFoldersController', 'openCurrent'); - } - - public function testOCSResource(): void { - $routes = ['ocs-resources' => ['account' => ['url' => '/accounts']]]; - - $this->assertOCSResource($routes, 'account', '/apps/app1/accounts', 'AccountController', 'id'); - } - - public function testOCSResourceWithUnderScoreName(): void { - $routes = ['ocs-resources' => ['admin_accounts' => ['url' => '/admin/accounts']]]; - - $this->assertOCSResource($routes, 'admin_accounts', '/apps/app1/admin/accounts', 'AdminAccountsController', 'id'); - } - - public function testOCSResourceWithRoot(): void { - $routes = ['ocs-resources' => ['admin_accounts' => ['url' => '/admin/accounts', 'root' => '/core/endpoint']]]; - - $this->assertOCSResource($routes, 'admin_accounts', '/core/endpoint/admin/accounts', 'AdminAccountsController', 'id'); - } - - public function testResource(): void { - $routes = ['resources' => ['account' => ['url' => '/accounts']]]; - - $this->assertResource($routes, 'account', '/apps/app1/accounts', 'AccountController', 'id'); - } - - public function testResourceWithUnderScoreName(): void { - $routes = ['resources' => ['admin_accounts' => ['url' => '/admin/accounts']]]; - - $this->assertResource($routes, 'admin_accounts', '/apps/app1/admin/accounts', 'AdminAccountsController', 'id'); - } - - private function assertSimpleRoute($routes, $name, $verb, $url, $controllerName, $actionName, array $requirements = [], array $defaults = [], $postfix = '', $allowRootUrl = false): void { - if ($postfix) { - $name .= $postfix; - } - - // route mocks - $container = new DIContainer('app1'); - $route = $this->mockRoute($container, $verb, $controllerName, $actionName, $requirements, $defaults); - - /** @var IRouter|MockObject $router */ - $router = $this->getMockBuilder(Router::class) - ->onlyMethods(['create']) - ->setConstructorArgs([ - $this->createMock(LoggerInterface::class), - $this->createMock(IRequest::class), - $this->createMock(IConfig::class), - $this->createMock(IEventLogger::class), - $this->createMock(ContainerInterface::class), - $this->createMock(IAppManager::class), - ]) - ->getMock(); - - // we expect create to be called once: - $router - ->expects($this->once()) - ->method('create') - ->with($this->equalTo('app1.' . $name), $this->equalTo($url)) - ->willReturn($route); - - // load route configuration - $config = new RouteConfig($container, $router, $routes); - if ($allowRootUrl) { - self::invokePrivate($config, 'rootUrlApps', [['app1']]); - } - - $config->register(); - } - - /** - * @param $routes - * @param string $name - * @param string $verb - * @param string $url - * @param string $controllerName - * @param string $actionName - * @param array $requirements - * @param array $defaults - * @param string $postfix - */ - private function assertSimpleOCSRoute($routes, - $name, - $verb, - $url, - $controllerName, - $actionName, - array $requirements = [], - array $defaults = [], - $postfix = '') { - if ($postfix) { - $name .= $postfix; - } - - // route mocks - $container = new DIContainer('app1'); - $route = $this->mockRoute($container, $verb, $controllerName, $actionName, $requirements, $defaults); - - /** @var IRouter|MockObject $router */ - $router = $this->getMockBuilder(Router::class) - ->onlyMethods(['create']) - ->setConstructorArgs([ - $this->createMock(LoggerInterface::class), - $this->createMock(IRequest::class), - $this->createMock(IConfig::class), - $this->createMock(IEventLogger::class), - $this->createMock(ContainerInterface::class), - $this->createMock(IAppManager::class), - ]) - ->getMock(); - - // we expect create to be called once: - $router - ->expects($this->once()) - ->method('create') - ->with($this->equalTo('ocs.app1.' . $name), $this->equalTo($url)) - ->willReturn($route); - - // load route configuration - $config = new RouteConfig($container, $router, $routes); - - $config->register(); - } - - /** - * @param array $yaml - * @param string $resourceName - * @param string $url - * @param string $controllerName - * @param string $paramName - */ - private function assertOCSResource($yaml, $resourceName, $url, $controllerName, $paramName): void { - /** @var IRouter|MockObject $router */ - $router = $this->getMockBuilder(Router::class) - ->onlyMethods(['create']) - ->setConstructorArgs([ - $this->createMock(LoggerInterface::class), - $this->createMock(IRequest::class), - $this->createMock(IConfig::class), - $this->createMock(IEventLogger::class), - $this->createMock(ContainerInterface::class), - $this->createMock(IAppManager::class), - ]) - ->getMock(); - - // route mocks - $container = new DIContainer('app1'); - $indexRoute = $this->mockRoute($container, 'GET', $controllerName, 'index'); - $showRoute = $this->mockRoute($container, 'GET', $controllerName, 'show'); - $createRoute = $this->mockRoute($container, 'POST', $controllerName, 'create'); - $updateRoute = $this->mockRoute($container, 'PUT', $controllerName, 'update'); - $destroyRoute = $this->mockRoute($container, 'DELETE', $controllerName, 'destroy'); - - $urlWithParam = $url . '/{' . $paramName . '}'; - - // we expect create to be called five times: - $router - ->expects($this->exactly(5)) - ->method('create') - ->withConsecutive( - [$this->equalTo('ocs.app1.' . $resourceName . '.index'), $this->equalTo($url)], - [$this->equalTo('ocs.app1.' . $resourceName . '.show'), $this->equalTo($urlWithParam)], - [$this->equalTo('ocs.app1.' . $resourceName . '.create'), $this->equalTo($url)], - [$this->equalTo('ocs.app1.' . $resourceName . '.update'), $this->equalTo($urlWithParam)], - [$this->equalTo('ocs.app1.' . $resourceName . '.destroy'), $this->equalTo($urlWithParam)], - )->willReturnOnConsecutiveCalls( - $indexRoute, - $showRoute, - $createRoute, - $updateRoute, - $destroyRoute, - ); - - // load route configuration - $config = new RouteConfig($container, $router, $yaml); - - $config->register(); - } - - /** - * @param string $resourceName - * @param string $url - * @param string $controllerName - * @param string $paramName - */ - private function assertResource($yaml, $resourceName, $url, $controllerName, $paramName) { - /** @var IRouter|MockObject $router */ - $router = $this->getMockBuilder(Router::class) - ->onlyMethods(['create']) - ->setConstructorArgs([ - $this->createMock(LoggerInterface::class), - $this->createMock(IRequest::class), - $this->createMock(IConfig::class), - $this->createMock(IEventLogger::class), - $this->createMock(ContainerInterface::class), - $this->createMock(IAppManager::class), - ]) - ->getMock(); - - // route mocks - $container = new DIContainer('app1'); - $indexRoute = $this->mockRoute($container, 'GET', $controllerName, 'index'); - $showRoute = $this->mockRoute($container, 'GET', $controllerName, 'show'); - $createRoute = $this->mockRoute($container, 'POST', $controllerName, 'create'); - $updateRoute = $this->mockRoute($container, 'PUT', $controllerName, 'update'); - $destroyRoute = $this->mockRoute($container, 'DELETE', $controllerName, 'destroy'); - - $urlWithParam = $url . '/{' . $paramName . '}'; - - // we expect create to be called five times: - $router - ->expects($this->exactly(5)) - ->method('create') - ->withConsecutive( - [$this->equalTo('app1.' . $resourceName . '.index'), $this->equalTo($url)], - [$this->equalTo('app1.' . $resourceName . '.show'), $this->equalTo($urlWithParam)], - [$this->equalTo('app1.' . $resourceName . '.create'), $this->equalTo($url)], - [$this->equalTo('app1.' . $resourceName . '.update'), $this->equalTo($urlWithParam)], - [$this->equalTo('app1.' . $resourceName . '.destroy'), $this->equalTo($urlWithParam)], - )->willReturnOnConsecutiveCalls( - $indexRoute, - $showRoute, - $createRoute, - $updateRoute, - $destroyRoute, - ); - - // load route configuration - $config = new RouteConfig($container, $router, $yaml); - - $config->register(); - } - - /** - * @param DIContainer $container - * @param string $verb - * @param string $controllerName - * @param string $actionName - * @param array $requirements - * @param array $defaults - * @return MockObject - */ - private function mockRoute( - DIContainer $container, - $verb, - $controllerName, - $actionName, - array $requirements = [], - array $defaults = [], - ) { - $route = $this->getMockBuilder(Route::class) - ->onlyMethods(['method', 'requirements', 'defaults']) - ->disableOriginalConstructor() - ->getMock(); - $route - ->expects($this->once()) - ->method('method') - ->with($this->equalTo($verb)) - ->willReturn($route); - - if (count($requirements) > 0) { - $route - ->expects($this->once()) - ->method('requirements') - ->with($this->equalTo($requirements)) - ->willReturn($route); - } - - $route->expects($this->once()) - ->method('defaults') - ->with($this->callback(function (array $def) use ($defaults, $controllerName, $actionName) { - $defaults['caller'] = ['app1', $controllerName, $actionName]; - - $this->assertEquals($defaults, $def); - return true; - })) - ->willReturn($route); - - return $route; - } -} diff --git a/tests/lib/AppFramework/Services/AppConfigTest.php b/tests/lib/AppFramework/Services/AppConfigTest.php index 46f73a8c088..718817a7636 100644 --- a/tests/lib/AppFramework/Services/AppConfigTest.php +++ b/tests/lib/AppFramework/Services/AppConfigTest.php @@ -28,7 +28,7 @@ class AppConfigTest extends TestCase { parent::setUp(); $this->config = $this->createMock(IConfig::class); $this->appConfigCore = $this->createMock(AppConfigCore::class); - + $this->appConfig = new AppConfig($this->config, $this->appConfigCore, self::TEST_APPID); } @@ -46,7 +46,7 @@ class AppConfigTest extends TestCase { * @return array * @see testHasAppKey */ - public function providerHasAppKey(): array { + public static function providerHasAppKey(): array { return [ // lazy, expected [false, true], @@ -76,7 +76,7 @@ class AppConfigTest extends TestCase { * @return array * @see testIsSensitive */ - public function providerIsSensitive(): array { + public static function providerIsSensitive(): array { return [ // lazy, expected [false, true], @@ -123,7 +123,7 @@ class AppConfigTest extends TestCase { * @return array * @see testIsLazy */ - public function providerIsLazy(): array { + public static function providerIsLazy(): array { return [ // expected [true], @@ -161,7 +161,7 @@ class AppConfigTest extends TestCase { * @return array * @see testGetAllAppValues */ - public function providerGetAllAppValues(): array { + public static function providerGetAllAppValues(): array { return [ // key, filtered ['', false], @@ -214,7 +214,7 @@ class AppConfigTest extends TestCase { * @see testSetAppValueArray * @see testSetAppValueArrayException */ - public function providerSetAppValue(): array { + public static function providerSetAppValue(): array { return [ // lazy, sensitive, expected [false, false, true], @@ -340,7 +340,7 @@ class AppConfigTest extends TestCase { * @return array * @see testSetAppValueBool */ - public function providerSetAppValueBool(): array { + public static function providerSetAppValueBool(): array { return [ // lazy, expected [false, true], @@ -456,7 +456,7 @@ class AppConfigTest extends TestCase { * @see testGetAppValueArray * @see testGetAppValueArrayException */ - public function providerGetAppValue(): array { + public static function providerGetAppValue(): array { return [ // lazy, exist [false, false], diff --git a/tests/lib/AppFramework/Utility/SimpleContainerTest.php b/tests/lib/AppFramework/Utility/SimpleContainerTest.php index d3e9dec18e0..93db01d3bc8 100644 --- a/tests/lib/AppFramework/Utility/SimpleContainerTest.php +++ b/tests/lib/AppFramework/Utility/SimpleContainerTest.php @@ -11,6 +11,7 @@ declare(strict_types=1); namespace Test\AppFramework\Utility; use OC\AppFramework\Utility\SimpleContainer; +use OCP\AppFramework\QueryException; use Psr\Container\NotFoundExceptionInterface; interface TestInterface { @@ -20,40 +21,40 @@ class ClassEmptyConstructor implements IInterfaceConstructor { } class ClassSimpleConstructor implements IInterfaceConstructor { - public $test; - public function __construct($test) { - $this->test = $test; + public function __construct( + public $test, + ) { } } class ClassComplexConstructor { - public $class; - public $test; - public function __construct(ClassSimpleConstructor $class, $test) { - $this->class = $class; - $this->test = $test; + public function __construct( + public ClassSimpleConstructor $class, + public $test, + ) { } } class ClassNullableUntypedConstructorArg { - public function __construct($class) { + public function __construct( + public $class, + ) { } } class ClassNullableTypedConstructorArg { - public $class; - public function __construct(?\Some\Class $class) { - $this->class = $class; + public function __construct( + public ?\Some\Class $class, + ) { } } interface IInterfaceConstructor { } class ClassInterfaceConstructor { - public $class; - public $test; - public function __construct(IInterfaceConstructor $class, $test) { - $this->class = $class; - $this->test = $test; + public function __construct( + public IInterfaceConstructor $class, + public $test, + ) { } } @@ -81,7 +82,7 @@ class SimpleContainerTest extends \Test\TestCase { $this->container->query('something really hard', false); $this->fail('Expected `QueryException` exception was not thrown'); } catch (\Throwable $exception) { - $this->assertInstanceOf(\OCP\AppFramework\QueryException::class, $exception); + $this->assertInstanceOf(QueryException::class, $exception); $this->assertInstanceOf(NotFoundExceptionInterface::class, $exception); } } @@ -95,7 +96,7 @@ class SimpleContainerTest extends \Test\TestCase { $this->container->query('something really hard'); $this->fail('Expected `QueryException` exception was not thrown'); } catch (\Throwable $exception) { - $this->assertInstanceOf(\OCP\AppFramework\QueryException::class, $exception); + $this->assertInstanceOf(QueryException::class, $exception); $this->assertInstanceOf(NotFoundExceptionInterface::class, $exception); } } @@ -103,7 +104,7 @@ class SimpleContainerTest extends \Test\TestCase { public function testNotAClass(): void { - $this->expectException(\OCP\AppFramework\QueryException::class); + $this->expectException(QueryException::class); $this->container->query('Test\AppFramework\Utility\TestInterface'); } @@ -191,7 +192,7 @@ class SimpleContainerTest extends \Test\TestCase { $this->container->query('test'), $this->container->query('test1')); } - public function sanitizeNameProvider() { + public static function sanitizeNameProvider(): array { return [ ['ABC\\Foo', 'ABC\\Foo'], ['\\ABC\\Foo', '\\ABC\\Foo'], @@ -212,11 +213,13 @@ class SimpleContainerTest extends \Test\TestCase { public function testConstructorComplexNoTestParameterFound(): void { - $this->expectException(\OCP\AppFramework\QueryException::class); + $this->expectException(QueryException::class); $object = $this->container->query( 'Test\AppFramework\Utility\ClassComplexConstructor' ); + /* Use the object to trigger DI on PHP >= 8.4 */ + get_object_vars($object); } public function testRegisterFactory(): void { @@ -241,9 +244,13 @@ class SimpleContainerTest extends \Test\TestCase { } public function testQueryUntypedNullable(): void { - $this->expectException(\OCP\AppFramework\QueryException::class); + $this->expectException(QueryException::class); - $this->container->query(ClassNullableUntypedConstructorArg::class); + $object = $this->container->query( + ClassNullableUntypedConstructorArg::class + ); + /* Use the object to trigger DI on PHP >= 8.4 */ + get_object_vars($object); } public function testQueryTypedNullable(): void { diff --git a/tests/lib/AppTest.php b/tests/lib/AppTest.php index 3e4d762a0a4..07205c730ce 100644 --- a/tests/lib/AppTest.php +++ b/tests/lib/AppTest.php @@ -10,6 +10,7 @@ namespace Test; use OC\App\AppManager; use OC\App\InfoParser; use OC\AppConfig; +use OC\Config\ConfigManager; use OCP\EventDispatcher\IEventDispatcher; use OCP\IAppConfig; use OCP\ICacheFactory; @@ -18,6 +19,7 @@ use OCP\IDBConnection; use OCP\IGroupManager; use OCP\IUserManager; use OCP\IUserSession; +use OCP\Server; use OCP\ServerVersion; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; @@ -34,7 +36,7 @@ class AppTest extends \Test\TestCase { public const TEST_GROUP1 = 'group1'; public const TEST_GROUP2 = 'group2'; - public function appVersionsProvider() { + public static function appVersionsProvider(): array { return [ // exact match [ @@ -335,7 +337,7 @@ class AppTest extends \Test\TestCase { /** * Providers for the app config values */ - public function appConfigValuesProvider() { + public static function appConfigValuesProvider(): array { return [ // logged in user1 [ @@ -469,8 +471,8 @@ class AppTest extends \Test\TestCase { * @dataProvider appConfigValuesProvider */ public function testEnabledApps($user, $expectedApps, $forceAll): void { - $userManager = \OCP\Server::get(IUserManager::class); - $groupManager = \OCP\Server::get(IGroupManager::class); + $userManager = Server::get(IUserManager::class); + $groupManager = Server::get(IGroupManager::class); $user1 = $userManager->createUser(self::TEST_USER1, 'NotAnEasyPassword123456+'); $user2 = $userManager->createUser(self::TEST_USER2, 'NotAnEasyPassword123456_'); $user3 = $userManager->createUser(self::TEST_USER3, 'NotAnEasyPassword123456?'); @@ -485,7 +487,7 @@ class AppTest extends \Test\TestCase { \OC_User::setUserId($user); $this->setupAppConfigMock()->expects($this->once()) - ->method('getValues') + ->method('searchValues') ->willReturn( [ 'app3' => 'yes', @@ -495,7 +497,6 @@ class AppTest extends \Test\TestCase { 'appforgroup2' => '["group2"]', 'appforgroup12' => '["group2","group1"]', ] - ); $apps = \OC_App::getEnabledApps(false, $forceAll); @@ -518,19 +519,18 @@ class AppTest extends \Test\TestCase { * enabled apps more than once when a user is set. */ public function testEnabledAppsCache(): void { - $userManager = \OCP\Server::get(IUserManager::class); + $userManager = Server::get(IUserManager::class); $user1 = $userManager->createUser(self::TEST_USER1, 'NotAnEasyPassword123456+'); \OC_User::setUserId(self::TEST_USER1); $this->setupAppConfigMock()->expects($this->once()) - ->method('getValues') + ->method('searchValues') ->willReturn( [ 'app3' => 'yes', 'app2' => 'no', ] - ); $apps = \OC_App::getEnabledApps(); @@ -550,8 +550,8 @@ class AppTest extends \Test\TestCase { private function setupAppConfigMock() { /** @var AppConfig|MockObject */ $appConfig = $this->getMockBuilder(AppConfig::class) - ->onlyMethods(['getValues']) - ->setConstructorArgs([\OCP\Server::get(IDBConnection::class)]) + ->onlyMethods(['searchValues']) + ->setConstructorArgs([Server::get(IDBConnection::class)]) ->disableOriginalConstructor() ->getMock(); @@ -567,13 +567,14 @@ class AppTest extends \Test\TestCase { private function registerAppConfig(AppConfig $appConfig) { $this->overwriteService(AppConfig::class, $appConfig); $this->overwriteService(AppManager::class, new AppManager( - \OCP\Server::get(IUserSession::class), - \OCP\Server::get(IConfig::class), - \OCP\Server::get(IGroupManager::class), - \OCP\Server::get(ICacheFactory::class), - \OCP\Server::get(IEventDispatcher::class), - \OCP\Server::get(LoggerInterface::class), - \OCP\Server::get(ServerVersion::class), + Server::get(IUserSession::class), + Server::get(IConfig::class), + Server::get(IGroupManager::class), + Server::get(ICacheFactory::class), + Server::get(IEventDispatcher::class), + Server::get(LoggerInterface::class), + Server::get(ServerVersion::class), + \OCP\Server::get(ConfigManager::class), )); } @@ -591,7 +592,7 @@ class AppTest extends \Test\TestCase { /** * Providers for the app data values */ - public function appDataProvider() { + public static function appDataProvider(): array { return [ [ ['description' => " \t This is a multiline \n test with \n \t \n \n some new lines "], diff --git a/tests/lib/Archive/TARTest.php b/tests/lib/Archive/TARTest.php index 36629a0273f..3a0a02fdbbd 100644 --- a/tests/lib/Archive/TARTest.php +++ b/tests/lib/Archive/TARTest.php @@ -8,6 +8,8 @@ namespace Test\Archive; use OC\Archive\TAR; +use OCP\ITempManager; +use OCP\Server; class TARTest extends TestBase { protected function getExisting() { @@ -16,6 +18,6 @@ class TARTest extends TestBase { } protected function getNew() { - return new TAR(\OC::$server->getTempManager()->getTemporaryFile('.tar.gz')); + return new TAR(Server::get(ITempManager::class)->getTemporaryFile('.tar.gz')); } } diff --git a/tests/lib/Archive/TestBase.php b/tests/lib/Archive/TestBase.php index fda485d2dc1..a4ff579d244 100644 --- a/tests/lib/Archive/TestBase.php +++ b/tests/lib/Archive/TestBase.php @@ -7,6 +7,10 @@ namespace Test\Archive; +use OCP\Files; +use OCP\ITempManager; +use OCP\Server; + abstract class TestBase extends \Test\TestCase { /** * @var \OC\Archive\Archive @@ -56,7 +60,7 @@ abstract class TestBase extends \Test\TestCase { $textFile = $dir . '/lorem.txt'; $this->assertEquals(file_get_contents($textFile), $this->instance->getFile('lorem.txt')); - $tmpFile = \OC::$server->getTempManager()->getTemporaryFile('.txt'); + $tmpFile = Server::get(ITempManager::class)->getTemporaryFile('.txt'); $this->instance->extractFile('lorem.txt', $tmpFile); $this->assertEquals(file_get_contents($textFile), file_get_contents($tmpFile)); } @@ -90,7 +94,7 @@ abstract class TestBase extends \Test\TestCase { $this->instance = $this->getNew(); $fh = $this->instance->getStream('lorem.txt', 'w'); $source = fopen($dir . '/lorem.txt', 'r'); - \OCP\Files::streamCopy($source, $fh); + Files::streamCopy($source, $fh); fclose($source); fclose($fh); $this->assertTrue($this->instance->fileExists('lorem.txt')); @@ -110,13 +114,13 @@ abstract class TestBase extends \Test\TestCase { public function testExtract(): void { $dir = \OC::$SERVERROOT . '/tests/data'; $this->instance = $this->getExisting(); - $tmpDir = \OC::$server->getTempManager()->getTemporaryFolder(); + $tmpDir = Server::get(ITempManager::class)->getTemporaryFolder(); $this->instance->extract($tmpDir); $this->assertEquals(true, file_exists($tmpDir . 'lorem.txt')); $this->assertEquals(true, file_exists($tmpDir . 'dir/lorem.txt')); $this->assertEquals(true, file_exists($tmpDir . 'logo-wide.png')); $this->assertEquals(file_get_contents($dir . '/lorem.txt'), file_get_contents($tmpDir . 'lorem.txt')); - \OCP\Files::rmdirr($tmpDir); + Files::rmdirr($tmpDir); } public function testMoveRemove(): void { $dir = \OC::$SERVERROOT . '/tests/data'; diff --git a/tests/lib/Archive/ZIPTest.php b/tests/lib/Archive/ZIPTest.php index 25707e4b051..272824980a7 100644 --- a/tests/lib/Archive/ZIPTest.php +++ b/tests/lib/Archive/ZIPTest.php @@ -8,6 +8,8 @@ namespace Test\Archive; use OC\Archive\ZIP; +use OCP\ITempManager; +use OCP\Server; class ZIPTest extends TestBase { protected function getExisting() { @@ -16,6 +18,10 @@ class ZIPTest extends TestBase { } protected function getNew() { - return new ZIP(\OC::$server->getTempManager()->getTempBaseDir() . '/newArchive.zip'); + $newZip = Server::get(ITempManager::class)->getTempBaseDir() . '/newArchive.zip'; + if (file_exists($newZip)) { + unlink($newZip); + } + return new ZIP($newZip); } } diff --git a/tests/lib/Authentication/Listeners/UserDeletedTokenCleanupListenerTest.php b/tests/lib/Authentication/Listeners/UserDeletedTokenCleanupListenerTest.php index f91371a86b7..1861a5b2150 100644 --- a/tests/lib/Authentication/Listeners/UserDeletedTokenCleanupListenerTest.php +++ b/tests/lib/Authentication/Listeners/UserDeletedTokenCleanupListenerTest.php @@ -83,13 +83,18 @@ class UserDeletedTokenCleanupListenerTest extends TestCase { $token2, $token3, ]); + + $calls = [ + ['user123', 1], + ['user123', 2], + ['user123', 3], + ]; $this->manager->expects($this->exactly(3)) ->method('invalidateTokenById') - ->withConsecutive( - ['user123', 1], - ['user123', 2], - ['user123', 3] - ); + ->willReturnCallback(function () use (&$calls): void { + $expected = array_shift($calls); + $this->assertEquals($expected, func_get_args()); + }); $this->logger->expects($this->never()) ->method('error'); diff --git a/tests/lib/Authentication/Login/ALoginCommandTest.php b/tests/lib/Authentication/Login/ALoginTestCommand.php index 2ab59835bfe..502380bc3fe 100644 --- a/tests/lib/Authentication/Login/ALoginCommandTest.php +++ b/tests/lib/Authentication/Login/ALoginTestCommand.php @@ -8,14 +8,13 @@ declare(strict_types=1); namespace Test\Authentication\Login; -use OC\Authentication\Login\ALoginCommand; use OC\Authentication\Login\LoginData; use OCP\IRequest; use OCP\IUser; use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; -abstract class ALoginCommandTest extends TestCase { +abstract class ALoginTestCommand extends TestCase { /** @var IRequest|MockObject */ protected $request; @@ -36,7 +35,7 @@ abstract class ALoginCommandTest extends TestCase { /** @var IUser|MockObject */ protected $user; - /** @var ALoginCommand */ + /** @var ALoginTestCommand */ protected $cmd; protected function setUp(): void { diff --git a/tests/lib/Authentication/Login/ClearLostPasswordTokensCommandTest.php b/tests/lib/Authentication/Login/ClearLostPasswordTokensCommandTest.php index 025612e963e..5ff2da28946 100644 --- a/tests/lib/Authentication/Login/ClearLostPasswordTokensCommandTest.php +++ b/tests/lib/Authentication/Login/ClearLostPasswordTokensCommandTest.php @@ -13,7 +13,7 @@ use OC\Authentication\Login\ClearLostPasswordTokensCommand; use OCP\IConfig; use PHPUnit\Framework\MockObject\MockObject; -class ClearLostPasswordTokensCommandTest extends ALoginCommandTest { +class ClearLostPasswordTokensCommandTest extends ALoginTestCommand { /** @var IConfig|MockObject */ private $config; diff --git a/tests/lib/Authentication/Login/CompleteLoginCommandTest.php b/tests/lib/Authentication/Login/CompleteLoginCommandTest.php index 4ddb26e7648..5b08368671f 100644 --- a/tests/lib/Authentication/Login/CompleteLoginCommandTest.php +++ b/tests/lib/Authentication/Login/CompleteLoginCommandTest.php @@ -13,7 +13,7 @@ use OC\Authentication\Login\CompleteLoginCommand; use OC\User\Session; use PHPUnit\Framework\MockObject\MockObject; -class CompleteLoginCommandTest extends ALoginCommandTest { +class CompleteLoginCommandTest extends ALoginTestCommand { /** @var Session|MockObject */ private $session; diff --git a/tests/lib/Authentication/Login/CreateSessionTokenCommandTest.php b/tests/lib/Authentication/Login/CreateSessionTokenCommandTest.php index fd6a154ef5d..668c0a6d6ea 100644 --- a/tests/lib/Authentication/Login/CreateSessionTokenCommandTest.php +++ b/tests/lib/Authentication/Login/CreateSessionTokenCommandTest.php @@ -15,7 +15,7 @@ use OC\User\Session; use OCP\IConfig; use PHPUnit\Framework\MockObject\MockObject; -class CreateSessionTokenCommandTest extends ALoginCommandTest { +class CreateSessionTokenCommandTest extends ALoginTestCommand { /** @var IConfig|MockObject */ private $config; diff --git a/tests/lib/Authentication/Login/FinishRememberedLoginCommandTest.php b/tests/lib/Authentication/Login/FinishRememberedLoginCommandTest.php index 4eb4f94055f..499abafa6e3 100644 --- a/tests/lib/Authentication/Login/FinishRememberedLoginCommandTest.php +++ b/tests/lib/Authentication/Login/FinishRememberedLoginCommandTest.php @@ -14,7 +14,7 @@ use OC\User\Session; use OCP\IConfig; use PHPUnit\Framework\MockObject\MockObject; -class FinishRememberedLoginCommandTest extends ALoginCommandTest { +class FinishRememberedLoginCommandTest extends ALoginTestCommand { /** @var Session|MockObject */ private $userSession; /** @var IConfig|MockObject */ diff --git a/tests/lib/Authentication/Login/LoggedInCheckCommandTest.php b/tests/lib/Authentication/Login/LoggedInCheckCommandTest.php index ce783050921..7b011d70673 100644 --- a/tests/lib/Authentication/Login/LoggedInCheckCommandTest.php +++ b/tests/lib/Authentication/Login/LoggedInCheckCommandTest.php @@ -15,7 +15,7 @@ use OCP\EventDispatcher\IEventDispatcher; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; -class LoggedInCheckCommandTest extends ALoginCommandTest { +class LoggedInCheckCommandTest extends ALoginTestCommand { /** @var LoggerInterface|MockObject */ private $logger; diff --git a/tests/lib/Authentication/Login/PreLoginHookCommandTest.php b/tests/lib/Authentication/Login/PreLoginHookCommandTest.php index b6d826f1c21..0e5096baf55 100644 --- a/tests/lib/Authentication/Login/PreLoginHookCommandTest.php +++ b/tests/lib/Authentication/Login/PreLoginHookCommandTest.php @@ -14,7 +14,7 @@ use OC\User\Manager; use OCP\IUserManager; use PHPUnit\Framework\MockObject\MockObject; -class PreLoginHookCommandTest extends ALoginCommandTest { +class PreLoginHookCommandTest extends ALoginTestCommand { /** @var IUserManager|MockObject */ private $userManager; diff --git a/tests/lib/Authentication/Login/SetUserTimezoneCommandTest.php b/tests/lib/Authentication/Login/SetUserTimezoneCommandTest.php index d4e15f68257..fb8240c4b1e 100644 --- a/tests/lib/Authentication/Login/SetUserTimezoneCommandTest.php +++ b/tests/lib/Authentication/Login/SetUserTimezoneCommandTest.php @@ -14,7 +14,7 @@ use OCP\IConfig; use OCP\ISession; use PHPUnit\Framework\MockObject\MockObject; -class SetUserTimezoneCommandTest extends ALoginCommandTest { +class SetUserTimezoneCommandTest extends ALoginTestCommand { /** @var IConfig|MockObject */ private $config; diff --git a/tests/lib/Authentication/Login/TwoFactorCommandTest.php b/tests/lib/Authentication/Login/TwoFactorCommandTest.php index af7d7446bfb..a95e4b50cbc 100644 --- a/tests/lib/Authentication/Login/TwoFactorCommandTest.php +++ b/tests/lib/Authentication/Login/TwoFactorCommandTest.php @@ -18,7 +18,7 @@ use OCP\Authentication\TwoFactorAuth\IProvider as ITwoFactorAuthProvider; use OCP\IURLGenerator; use PHPUnit\Framework\MockObject\MockObject; -class TwoFactorCommandTest extends ALoginCommandTest { +class TwoFactorCommandTest extends ALoginTestCommand { /** @var Manager|MockObject */ private $twoFactorManager; diff --git a/tests/lib/Authentication/Login/UidLoginCommandTest.php b/tests/lib/Authentication/Login/UidLoginCommandTest.php index 3073aac1859..daae34e2212 100644 --- a/tests/lib/Authentication/Login/UidLoginCommandTest.php +++ b/tests/lib/Authentication/Login/UidLoginCommandTest.php @@ -13,7 +13,7 @@ use OC\Authentication\Login\UidLoginCommand; use OC\User\Manager; use PHPUnit\Framework\MockObject\MockObject; -class UidLoginCommandTest extends ALoginCommandTest { +class UidLoginCommandTest extends ALoginTestCommand { /** @var Manager|MockObject */ private $userManager; diff --git a/tests/lib/Authentication/Login/UpdateLastPasswordConfirmCommandTest.php b/tests/lib/Authentication/Login/UpdateLastPasswordConfirmCommandTest.php index f5760f3f232..1a845a05c23 100644 --- a/tests/lib/Authentication/Login/UpdateLastPasswordConfirmCommandTest.php +++ b/tests/lib/Authentication/Login/UpdateLastPasswordConfirmCommandTest.php @@ -13,7 +13,7 @@ use OC\Authentication\Login\UpdateLastPasswordConfirmCommand; use OCP\ISession; use PHPUnit\Framework\MockObject\MockObject; -class UpdateLastPasswordConfirmCommandTest extends ALoginCommandTest { +class UpdateLastPasswordConfirmCommandTest extends ALoginTestCommand { /** @var ISession|MockObject */ private $session; diff --git a/tests/lib/Authentication/Login/UserDisabledCheckCommandTest.php b/tests/lib/Authentication/Login/UserDisabledCheckCommandTest.php index 84b1018e5fa..ee4e171d443 100644 --- a/tests/lib/Authentication/Login/UserDisabledCheckCommandTest.php +++ b/tests/lib/Authentication/Login/UserDisabledCheckCommandTest.php @@ -15,7 +15,7 @@ use OCP\IUserManager; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; -class UserDisabledCheckCommandTest extends ALoginCommandTest { +class UserDisabledCheckCommandTest extends ALoginTestCommand { /** @var IUserManager|MockObject */ private $userManager; diff --git a/tests/lib/Authentication/LoginCredentials/StoreTest.php b/tests/lib/Authentication/LoginCredentials/StoreTest.php index 072ec2ab571..aca586b91ec 100644 --- a/tests/lib/Authentication/LoginCredentials/StoreTest.php +++ b/tests/lib/Authentication/LoginCredentials/StoreTest.php @@ -111,7 +111,7 @@ class StoreTest extends TestCase { public function testGetLoginCredentialsSessionNotAvailable(): void { $this->session->expects($this->once()) ->method('getId') - ->will($this->throwException(new SessionNotAvailableException())); + ->willThrowException(new SessionNotAvailableException()); $this->expectException(CredentialsUnavailableException::class); $this->store->getLoginCredentials(); @@ -124,7 +124,7 @@ class StoreTest extends TestCase { $this->tokenProvider->expects($this->once()) ->method('getToken') ->with('sess2233') - ->will($this->throwException(new InvalidTokenException())); + ->willThrowException(new InvalidTokenException()); $this->expectException(CredentialsUnavailableException::class); $this->store->getLoginCredentials(); @@ -141,7 +141,7 @@ class StoreTest extends TestCase { $this->tokenProvider->expects($this->once()) ->method('getToken') ->with('sess2233') - ->will($this->throwException(new InvalidTokenException())); + ->willThrowException(new InvalidTokenException()); $this->session->expects($this->once()) ->method('exists') ->with($this->equalTo('login_credentials')) @@ -181,7 +181,7 @@ class StoreTest extends TestCase { $this->tokenProvider->expects($this->once()) ->method('getToken') ->with('sess2233') - ->will($this->throwException(new InvalidTokenException())); + ->willThrowException(new InvalidTokenException()); $this->session->expects($this->once()) ->method('exists') ->with($this->equalTo('login_credentials')) @@ -222,7 +222,7 @@ class StoreTest extends TestCase { $this->tokenProvider->expects($this->once()) ->method('getToken') ->with('sess2233') - ->will($this->throwException(new InvalidTokenException())); + ->willThrowException(new InvalidTokenException()); $this->session->expects($this->once()) ->method('exists') ->with($this->equalTo('login_credentials')) @@ -248,7 +248,7 @@ class StoreTest extends TestCase { $this->tokenProvider->expects($this->once()) ->method('getToken') ->with('sess2233') - ->will($this->throwException(new PasswordlessTokenException())); + ->willThrowException(new PasswordlessTokenException()); $this->expectException(CredentialsUnavailableException::class); $this->store->getLoginCredentials(); @@ -276,7 +276,7 @@ class StoreTest extends TestCase { $this->tokenProvider->expects($this->once()) ->method('getToken') ->with('sess2233') - ->will($this->throwException(new PasswordlessTokenException())); + ->willThrowException(new PasswordlessTokenException()); $this->session->expects($this->once()) ->method('exists') diff --git a/tests/lib/Authentication/Token/ManagerTest.php b/tests/lib/Authentication/Token/ManagerTest.php index 4fde9817d09..300517fab4a 100644 --- a/tests/lib/Authentication/Token/ManagerTest.php +++ b/tests/lib/Authentication/Token/ManagerTest.php @@ -128,10 +128,10 @@ class ManagerTest extends TestCase { $this->assertSame(121, mb_strlen($actual->getName())); } - public function tokenData(): array { + public static function tokenData(): array { return [ [new PublicKeyToken()], - [$this->createMock(IToken::class)], + [IToken::class], ]; } @@ -160,7 +160,11 @@ class ManagerTest extends TestCase { /** * @dataProvider tokenData */ - public function testUpdateToken(IToken $token): void { + public function testUpdateToken(IToken|string $token): void { + if (is_string($token)) { + $token = $this->createMock($token); + } + $this->setNoCall($token); $this->setCall($token, 'updateToken'); $this->setException($token); @@ -171,7 +175,11 @@ class ManagerTest extends TestCase { /** * @dataProvider tokenData */ - public function testUpdateTokenActivity(IToken $token): void { + public function testUpdateTokenActivity(IToken|string $token): void { + if (is_string($token)) { + $token = $this->createMock($token); + } + $this->setNoCall($token); $this->setCall($token, 'updateTokenActivity'); $this->setException($token); @@ -182,7 +190,11 @@ class ManagerTest extends TestCase { /** * @dataProvider tokenData */ - public function testGetPassword(IToken $token): void { + public function testGetPassword(IToken|string $token): void { + if (is_string($token)) { + $token = $this->createMock($token); + } + $this->setNoCall($token); $this->setCall($token, 'getPassword', 'password'); $this->setException($token); @@ -195,7 +207,11 @@ class ManagerTest extends TestCase { /** * @dataProvider tokenData */ - public function testSetPassword(IToken $token): void { + public function testSetPassword(IToken|string $token): void { + if (is_string($token)) { + $token = $this->createMock($token); + } + $this->setNoCall($token); $this->setCall($token, 'setPassword'); $this->setException($token); @@ -358,13 +374,18 @@ class ManagerTest extends TestCase { ->method('getTokenByUser') ->with('theUser') ->willReturn([$t1, $t2]); + + $calls = [ + ['theUser', 123], + ['theUser', 456], + ]; $this->publicKeyTokenProvider ->expects($this->exactly(2)) ->method('invalidateTokenById') - ->withConsecutive( - ['theUser', 123], - ['theUser', 456], - ); + ->willReturnCallback(function () use (&$calls): void { + $expected = array_shift($calls); + $this->assertEquals($expected, func_get_args()); + }); $this->manager->invalidateTokensOfUser('theUser', null); } diff --git a/tests/lib/Authentication/Token/PublicKeyTokenMapperTest.php b/tests/lib/Authentication/Token/PublicKeyTokenMapperTest.php index 7cc4e77ecb2..d1585dadc26 100644 --- a/tests/lib/Authentication/Token/PublicKeyTokenMapperTest.php +++ b/tests/lib/Authentication/Token/PublicKeyTokenMapperTest.php @@ -8,13 +8,14 @@ declare(strict_types=1); namespace Test\Authentication\Token; -use OC; use OC\Authentication\Token\PublicKeyToken; use OC\Authentication\Token\PublicKeyTokenMapper; +use OCP\AppFramework\Db\DoesNotExistException; use OCP\Authentication\Token\IToken; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IDBConnection; use OCP\IUser; +use OCP\Server; use Test\TestCase; /** @@ -33,7 +34,7 @@ class PublicKeyTokenMapperTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->dbConnection = OC::$server->getDatabaseConnection(); + $this->dbConnection = Server::get(IDBConnection::class); $this->time = time(); $this->resetDatabase(); @@ -178,7 +179,7 @@ class PublicKeyTokenMapperTest extends TestCase { public function testGetInvalidToken(): void { - $this->expectException(\OCP\AppFramework\Db\DoesNotExistException::class); + $this->expectException(DoesNotExistException::class); $token = 'thisisaninvalidtokenthatisnotinthedatabase'; @@ -210,14 +211,14 @@ class PublicKeyTokenMapperTest extends TestCase { public function testGetTokenByIdNotFound(): void { - $this->expectException(\OCP\AppFramework\Db\DoesNotExistException::class); + $this->expectException(DoesNotExistException::class); $this->mapper->getTokenById(-1); } public function testGetInvalidTokenById(): void { - $this->expectException(\OCP\AppFramework\Db\DoesNotExistException::class); + $this->expectException(DoesNotExistException::class); $id = '42'; diff --git a/tests/lib/Authentication/Token/PublicKeyTokenProviderTest.php b/tests/lib/Authentication/Token/PublicKeyTokenProviderTest.php index 6097c1f482d..c6c4ec4198f 100644 --- a/tests/lib/Authentication/Token/PublicKeyTokenProviderTest.php +++ b/tests/lib/Authentication/Token/PublicKeyTokenProviderTest.php @@ -23,6 +23,7 @@ use OCP\IConfig; use OCP\IDBConnection; use OCP\Security\ICrypto; use OCP\Security\IHasher; +use OCP\Server; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; use Test\TestCase; @@ -53,8 +54,8 @@ class PublicKeyTokenProviderTest extends TestCase { parent::setUp(); $this->mapper = $this->createMock(PublicKeyTokenMapper::class); - $this->hasher = \OC::$server->get(IHasher::class); - $this->crypto = \OC::$server->getCrypto(); + $this->hasher = Server::get(IHasher::class); + $this->crypto = Server::get(ICrypto::class); $this->config = $this->createMock(IConfig::class); $this->config->method('getSystemValue') ->willReturnMap([ @@ -232,7 +233,7 @@ class PublicKeyTokenProviderTest extends TestCase { public function testGetPasswordPasswordLessToken(): void { - $this->expectException(\OC\Authentication\Exceptions\PasswordlessTokenException::class); + $this->expectException(PasswordlessTokenException::class); $token = 'token1234'; $tk = new PublicKeyToken(); @@ -243,7 +244,7 @@ class PublicKeyTokenProviderTest extends TestCase { public function testGetPasswordInvalidToken(): void { - $this->expectException(\OC\Authentication\Exceptions\InvalidTokenException::class); + $this->expectException(InvalidTokenException::class); $token = 'tokentokentokentokentoken'; $uid = 'user'; @@ -294,7 +295,7 @@ class PublicKeyTokenProviderTest extends TestCase { public function testSetPasswordInvalidToken(): void { - $this->expectException(\OC\Authentication\Exceptions\InvalidTokenException::class); + $this->expectException(InvalidTokenException::class); $token = $this->createMock(IToken::class); $tokenId = 'token123'; @@ -304,12 +305,17 @@ class PublicKeyTokenProviderTest extends TestCase { } public function testInvalidateToken(): void { + $calls = [ + [hash('sha512', 'token7' . '1f4h9s')], + [hash('sha512', 'token7')] + ]; + $this->mapper->expects($this->exactly(2)) ->method('invalidate') - ->withConsecutive( - [hash('sha512', 'token7' . '1f4h9s')], - [hash('sha512', 'token7')] - ); + ->willReturnCallback(function () use (&$calls): void { + $expected = array_shift($calls); + $this->assertEquals($expected, func_get_args()); + }); $this->tokenProvider->invalidateToken('token7'); } @@ -336,14 +342,19 @@ class PublicKeyTokenProviderTest extends TestCase { ['token_auth_wipe_token_retention', $wipeTokenLifetime, 500], ['token_auth_token_retention', 60 * 60 * 24 * 365, 800], ]); + + $calls = [ + [$this->time - 150, IToken::TEMPORARY_TOKEN, IToken::DO_NOT_REMEMBER], + [$this->time - 300, IToken::TEMPORARY_TOKEN, IToken::REMEMBER], + [$this->time - 500, IToken::WIPE_TOKEN, null], + [$this->time - 800, IToken::PERMANENT_TOKEN, null], + ]; $this->mapper->expects($this->exactly(4)) ->method('invalidateOld') - ->withConsecutive( - [$this->time - 150, IToken::TEMPORARY_TOKEN, IToken::DO_NOT_REMEMBER], - [$this->time - 300, IToken::TEMPORARY_TOKEN, IToken::REMEMBER], - [$this->time - 500, IToken::WIPE_TOKEN, null], - [$this->time - 800, IToken::PERMANENT_TOKEN, null], - ); + ->willReturnCallback(function () use (&$calls): void { + $expected = array_shift($calls); + $this->assertEquals($expected, func_get_args()); + }); $this->tokenProvider->invalidateOldTokens(); } @@ -453,16 +464,17 @@ class PublicKeyTokenProviderTest extends TestCase { public function testGetInvalidToken(): void { $this->expectException(InvalidTokenException::class); + $calls = [ + 'unhashedTokentokentokentokentoken' . '1f4h9s', + 'unhashedTokentokentokentokentoken', + ]; $this->mapper->expects($this->exactly(2)) ->method('getToken') - ->withConsecutive( - [$this->callback(function (string $token): bool { - return hash('sha512', 'unhashedTokentokentokentokentoken' . '1f4h9s') === $token; - })], - [$this->callback(function (string $token): bool { - return hash('sha512', 'unhashedTokentokentokentokentoken') === $token; - })] - )->willThrowException(new DoesNotExistException('nope')); + ->willReturnCallback(function (string $token) use (&$calls): void { + $expected = array_shift($calls); + $this->assertEquals(hash('sha512', $expected), $token); + throw new DoesNotExistException('nope'); + }); $this->tokenProvider->getToken('unhashedTokentokentokentokentoken'); } diff --git a/tests/lib/Authentication/TwoFactorAuth/Db/ProviderUserAssignmentDaoTest.php b/tests/lib/Authentication/TwoFactorAuth/Db/ProviderUserAssignmentDaoTest.php index 7a1ea64ca9a..b59ef876ffd 100644 --- a/tests/lib/Authentication/TwoFactorAuth/Db/ProviderUserAssignmentDaoTest.php +++ b/tests/lib/Authentication/TwoFactorAuth/Db/ProviderUserAssignmentDaoTest.php @@ -9,9 +9,9 @@ declare(strict_types=1); namespace Test\Authentication\TwoFactorAuth\Db; -use OC; use OC\Authentication\TwoFactorAuth\Db\ProviderUserAssignmentDao; use OCP\IDBConnection; +use OCP\Server; use Test\TestCase; /** @@ -27,7 +27,7 @@ class ProviderUserAssignmentDaoTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->dbConn = OC::$server->getDatabaseConnection(); + $this->dbConn = Server::get(IDBConnection::class); $qb = $this->dbConn->getQueryBuilder(); $q = $qb->delete(ProviderUserAssignmentDao::TABLE_NAME); $q->execute(); diff --git a/tests/lib/Authentication/TwoFactorAuth/ManagerTest.php b/tests/lib/Authentication/TwoFactorAuth/ManagerTest.php index 52792c29ed0..c68d1de60c5 100644 --- a/tests/lib/Authentication/TwoFactorAuth/ManagerTest.php +++ b/tests/lib/Authentication/TwoFactorAuth/ManagerTest.php @@ -8,8 +8,9 @@ namespace Test\Authentication\TwoFactorAuth; -use OC; +use OC\Authentication\Exceptions\InvalidTokenException; use OC\Authentication\Token\IProvider as TokenProvider; +use OC\Authentication\Token\IToken; use OC\Authentication\TwoFactorAuth\Manager; use OC\Authentication\TwoFactorAuth\MandatoryTwoFactor; use OC\Authentication\TwoFactorAuth\ProviderLoader; @@ -204,7 +205,7 @@ class ManagerTest extends TestCase { $this->assertTrue($this->manager->isTwoFactorAuthenticated($this->user)); } - public function providerStatesFixData(): array { + public static function providerStatesFixData(): array { return [ [false, false], [true, true], @@ -356,12 +357,18 @@ class ManagerTest extends TestCase { ->method('get') ->with('two_factor_remember_login') ->willReturn(false); + + $calls = [ + ['two_factor_auth_uid'], + ['two_factor_remember_login'], + ]; $this->session->expects($this->exactly(2)) ->method('remove') - ->withConsecutive( - ['two_factor_auth_uid'], - ['two_factor_remember_login'] - ); + ->willReturnCallback(function () use (&$calls): void { + $expected = array_shift($calls); + $this->assertEquals($expected, func_get_args()); + }); + $this->session->expects($this->once()) ->method('set') ->with(Manager::SESSION_UID_DONE, 'jos'); @@ -398,7 +405,7 @@ class ManagerTest extends TestCase { 'provider' => 'Fake 2FA', ])) ->willReturnSelf(); - $token = $this->createMock(OC\Authentication\Token\IToken::class); + $token = $this->createMock(IToken::class); $this->tokenProvider->method('getToken') ->with('mysessionid') ->willReturn($token); @@ -474,18 +481,23 @@ class ManagerTest extends TestCase { public function testNeedsSecondFactor(): void { $user = $this->createMock(IUser::class); + + $calls = [ + ['app_password'], + ['two_factor_auth_uid'], + [Manager::SESSION_UID_DONE], + ]; $this->session->expects($this->exactly(3)) ->method('exists') - ->withConsecutive( - ['app_password'], - ['two_factor_auth_uid'], - [Manager::SESSION_UID_DONE], - ) - ->willReturn(false); + ->willReturnCallback(function () use (&$calls) { + $expected = array_shift($calls); + $this->assertEquals($expected, func_get_args()); + return false; + }); $this->session->method('getId') ->willReturn('mysessionid'); - $token = $this->createMock(OC\Authentication\Token\IToken::class); + $token = $this->createMock(IToken::class); $this->tokenProvider->method('getToken') ->with('mysessionid') ->willReturn($token); @@ -513,7 +525,7 @@ class ManagerTest extends TestCase { $this->timeFactory, $this->dispatcher, ]) - ->setMethods(['loadTwoFactorApp', 'isTwoFactorAuthenticated'])// Do not actually load the apps + ->onlyMethods(['isTwoFactorAuthenticated'])// Do not actually load the apps ->getMock(); $manager->method('isTwoFactorAuthenticated') @@ -550,16 +562,20 @@ class ManagerTest extends TestCase { $this->user->method('getUID') ->willReturn('ferdinand'); + $calls = [ + ['two_factor_auth_uid', 'ferdinand'], + ['two_factor_remember_login', true], + ]; $this->session->expects($this->exactly(2)) ->method('set') - ->withConsecutive( - ['two_factor_auth_uid', 'ferdinand'], - ['two_factor_remember_login', true] - ); + ->willReturnCallback(function () use (&$calls): void { + $expected = array_shift($calls); + $this->assertEquals($expected, func_get_args()); + }); $this->session->method('getId') ->willReturn('mysessionid'); - $token = $this->createMock(OC\Authentication\Token\IToken::class); + $token = $this->createMock(IToken::class); $this->tokenProvider->method('getToken') ->with('mysessionid') ->willReturn($token); @@ -580,16 +596,20 @@ class ManagerTest extends TestCase { $this->user->method('getUID') ->willReturn('ferdinand'); + $calls = [ + ['two_factor_auth_uid', 'ferdinand'], + ['two_factor_remember_login', false], + ]; $this->session->expects($this->exactly(2)) ->method('set') - ->withConsecutive( - ['two_factor_auth_uid', 'ferdinand'], - ['two_factor_remember_login', false] - ); + ->willReturnCallback(function () use (&$calls): void { + $expected = array_shift($calls); + $this->assertEquals($expected, func_get_args()); + }); $this->session->method('getId') ->willReturn('mysessionid'); - $token = $this->createMock(OC\Authentication\Token\IToken::class); + $token = $this->createMock(IToken::class); $this->tokenProvider->method('getToken') ->with('mysessionid') ->willReturn($token); @@ -650,7 +670,7 @@ class ManagerTest extends TestCase { $this->session->method('getId') ->willReturn('mysessionid'); - $token = $this->createMock(OC\Authentication\Token\IToken::class); + $token = $this->createMock(IToken::class); $token->method('getId') ->willReturn(40); @@ -685,7 +705,7 @@ class ManagerTest extends TestCase { $this->tokenProvider->method('getToken') ->with('mysessionid') - ->willThrowException(new OC\Authentication\Exceptions\InvalidTokenException()); + ->willThrowException(new InvalidTokenException()); $this->config->method('getUserKeys')->willReturn([]); @@ -710,21 +730,29 @@ class ManagerTest extends TestCase { '42', '43', '44' ]); + $deleteUserValueCalls = [ + ['theUserId', 'login_token_2fa', '42'], + ['theUserId', 'login_token_2fa', '43'], + ['theUserId', 'login_token_2fa', '44'], + ]; $this->config->expects($this->exactly(3)) ->method('deleteUserValue') - ->withConsecutive( - ['theUserId', 'login_token_2fa', '42'], - ['theUserId', 'login_token_2fa', '43'], - ['theUserId', 'login_token_2fa', '44'], - ); + ->willReturnCallback(function () use (&$deleteUserValueCalls): void { + $expected = array_shift($deleteUserValueCalls); + $this->assertEquals($expected, func_get_args()); + }); + $invalidateCalls = [ + ['theUserId', 42], + ['theUserId', 43], + ['theUserId', 44], + ]; $this->tokenProvider->expects($this->exactly(3)) ->method('invalidateTokenById') - ->withConsecutive( - ['theUserId', 42], - ['theUserId', 43], - ['theUserId', 44], - ); + ->willReturnCallback(function () use (&$invalidateCalls): void { + $expected = array_shift($invalidateCalls); + $this->assertEquals($expected, func_get_args()); + }); $this->manager->clearTwoFactorPending('theUserId'); } @@ -736,22 +764,28 @@ class ManagerTest extends TestCase { '42', '43', '44' ]); + $deleteUserValueCalls = [ + ['theUserId', 'login_token_2fa', '42'], + ['theUserId', 'login_token_2fa', '43'], + ['theUserId', 'login_token_2fa', '44'], + ]; $this->config->expects($this->exactly(3)) ->method('deleteUserValue') - ->withConsecutive( - ['theUserId', 'login_token_2fa', '42'], - ['theUserId', 'login_token_2fa', '43'], - ['theUserId', 'login_token_2fa', '44'], - ); + ->willReturnCallback(function () use (&$deleteUserValueCalls): void { + $expected = array_shift($deleteUserValueCalls); + $this->assertEquals($expected, func_get_args()); + }); + $invalidateCalls = [ + ['theUserId', 42], + ['theUserId', 43], + ['theUserId', 44], + ]; $this->tokenProvider->expects($this->exactly(3)) ->method('invalidateTokenById') - ->withConsecutive( - ['theUserId', 42], - ['theUserId', 43], - ['theUserId', 44], - ) - ->willReturnCallback(function ($user, $tokenId) { + ->willReturnCallback(function ($user, $tokenId) use (&$invalidateCalls): void { + $expected = array_shift($invalidateCalls); + $this->assertEquals($expected, func_get_args()); if ($tokenId === 43) { throw new DoesNotExistException('token does not exist'); } diff --git a/tests/lib/Authentication/TwoFactorAuth/ProviderManagerTest.php b/tests/lib/Authentication/TwoFactorAuth/ProviderManagerTest.php index 34248f11f21..6004e67603b 100644 --- a/tests/lib/Authentication/TwoFactorAuth/ProviderManagerTest.php +++ b/tests/lib/Authentication/TwoFactorAuth/ProviderManagerTest.php @@ -9,6 +9,7 @@ declare(strict_types=1); namespace lib\Authentication\TwoFactorAuth; +use OC\Authentication\Exceptions\InvalidProviderException; use OC\Authentication\TwoFactorAuth\ProviderLoader; use OC\Authentication\TwoFactorAuth\ProviderManager; use OCP\Authentication\TwoFactorAuth\IActivatableByAdmin; @@ -43,7 +44,7 @@ class ProviderManagerTest extends TestCase { public function testTryEnableInvalidProvider(): void { - $this->expectException(\OC\Authentication\Exceptions\InvalidProviderException::class); + $this->expectException(InvalidProviderException::class); $user = $this->createMock(IUser::class); $this->providerManager->tryEnableProviderFor('none', $user); @@ -89,7 +90,7 @@ class ProviderManagerTest extends TestCase { public function testTryDisableInvalidProvider(): void { - $this->expectException(\OC\Authentication\Exceptions\InvalidProviderException::class); + $this->expectException(InvalidProviderException::class); $user = $this->createMock(IUser::class); $this->providerManager->tryDisableProviderFor('none', $user); diff --git a/tests/lib/Authentication/TwoFactorAuth/RegistryTest.php b/tests/lib/Authentication/TwoFactorAuth/RegistryTest.php index 77e619d03a2..2018dc1a634 100644 --- a/tests/lib/Authentication/TwoFactorAuth/RegistryTest.php +++ b/tests/lib/Authentication/TwoFactorAuth/RegistryTest.php @@ -119,12 +119,17 @@ class RegistryTest extends TestCase { 'provider_id' => 'twofactor_u2f', ] ]); + + $calls = [ + [new TwoFactorProviderDisabled('twofactor_u2f')], + [new TwoFactorProviderUserDeleted($user, 'twofactor_u2f')], + ]; $this->dispatcher->expects($this->exactly(2)) ->method('dispatchTyped') - ->withConsecutive( - [new TwoFactorProviderDisabled('twofactor_u2f')], - [new TwoFactorProviderUserDeleted($user, 'twofactor_u2f')], - ); + ->willReturnCallback(function () use (&$calls): void { + $expected = array_shift($calls); + $this->assertEquals($expected, func_get_args()); + }); $this->registry->deleteUserData($user); } diff --git a/tests/lib/AutoLoaderTest.php b/tests/lib/AutoLoaderTest.php deleted file mode 100644 index 72d4a2e94cf..00000000000 --- a/tests/lib/AutoLoaderTest.php +++ /dev/null @@ -1,57 +0,0 @@ -<?php -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -namespace Test; - -class AutoLoaderTest extends TestCase { - /** - * @var \OC\Autoloader $loader - */ - private $loader; - - protected function setUp(): void { - parent::setUp(); - $this->loader = new \OC\AutoLoader([]); - } - - public function testLegacyPath(): void { - $this->assertEquals([ - \OC::$SERVERROOT . '/lib/private/legacy/json.php', - ], $this->loader->findClass('OC_JSON')); - } - - public function testLoadTestTestCase(): void { - $this->assertEquals([ - \OC::$SERVERROOT . '/tests/lib/TestCase.php' - ], $this->loader->findClass('Test\TestCase')); - } - - public function testLoadCore(): void { - $this->assertEquals([ - \OC::$SERVERROOT . '/lib/private/legacy/foo/bar.php', - ], $this->loader->findClass('OC_Foo_Bar')); - } - - public function testLoadPublicNamespace(): void { - $this->assertEquals([], $this->loader->findClass('OCP\Foo\Bar')); - } - - public function testLoadAppNamespace(): void { - $result = $this->loader->findClass('OCA\Files\Foobar'); - $this->assertEquals(2, count($result)); - $this->assertStringEndsWith('apps/files/foobar.php', $result[0]); - $this->assertStringEndsWith('apps/files/lib/foobar.php', $result[1]); - } - - public function testLoadCoreNamespaceCore(): void { - $this->assertEquals([], $this->loader->findClass('OC\Core\Foo\Bar')); - } - - public function testLoadCoreNamespaceSettings(): void { - $this->assertEquals([], $this->loader->findClass('OC\Settings\Foo\Bar')); - } -} diff --git a/tests/lib/Avatar/AvatarManagerTest.php b/tests/lib/Avatar/AvatarManagerTest.php index 25e8e1563f5..5fac90e0f34 100644 --- a/tests/lib/Avatar/AvatarManagerTest.php +++ b/tests/lib/Avatar/AvatarManagerTest.php @@ -186,7 +186,7 @@ class AvatarManagerTest extends \Test\TestCase { $this->assertEquals($expected, $this->avatarManager->getAvatar('vaLid-USER')); } - public function dataGetAvatarScopes() { + public static function dataGetAvatarScopes(): array { return [ // public access cannot see real avatar [IAccountManager::SCOPE_PRIVATE, true, false, true], diff --git a/tests/lib/Avatar/UserAvatarTest.php b/tests/lib/Avatar/UserAvatarTest.php index 0e2bfe6872f..ead829c231c 100644 --- a/tests/lib/Avatar/UserAvatarTest.php +++ b/tests/lib/Avatar/UserAvatarTest.php @@ -7,8 +7,10 @@ namespace Test\Avatar; +use OC\Avatar\UserAvatar; use OC\Files\SimpleFS\SimpleFolder; use OC\User\User; +use OCP\Color; use OCP\Files\File; use OCP\Files\NotFoundException; use OCP\Files\SimpleFS\ISimpleFile; @@ -41,7 +43,7 @@ class UserAvatarTest extends \Test\TestCase { $this->avatar = $this->getUserAvatar($this->user); } - public function avatarTextData() { + public static function avatarTextData(): array { return [ ['', '?'], ['matchish', 'M'], @@ -56,7 +58,7 @@ class UserAvatarTest extends \Test\TestCase { ->willReturn($file); $this->folder->method('getFile') - ->willReturnCallback(function (string $path) { + ->willReturnCallback(function (string $path): void { if ($path === 'avatar.64.png') { throw new NotFoundException(); } @@ -144,7 +146,7 @@ class UserAvatarTest extends \Test\TestCase { if ($path === 'avatar.png') { return $file; } else { - throw new \OCP\Files\NotFoundException; + throw new NotFoundException; } } ); @@ -261,17 +263,17 @@ class UserAvatarTest extends \Test\TestCase { } public function testMixPalette(): void { - $colorFrom = new \OCP\Color(0, 0, 0); - $colorTo = new \OCP\Color(6, 12, 18); + $colorFrom = new Color(0, 0, 0); + $colorTo = new Color(6, 12, 18); $steps = 6; - $palette = \OCP\Color::mixPalette($steps, $colorFrom, $colorTo); + $palette = Color::mixPalette($steps, $colorFrom, $colorTo); foreach ($palette as $j => $color) { // calc increment $incR = $colorTo->red() / $steps * $j; $incG = $colorTo->green() / $steps * $j; $incB = $colorTo->blue() / $steps * $j; // ensure everything is equal - $this->assertEquals($color, new \OCP\Color($incR, $incG, $incB)); + $this->assertEquals($color, new Color($incR, $incG, $incB)); } $hashToInt = $this->invokePrivate($this->avatar, 'hashToInt', ['abcdef', 18]); $this->assertTrue(gettype($hashToInt) === 'integer'); @@ -288,7 +290,7 @@ class UserAvatarTest extends \Test\TestCase { $l = $this->createMock(IL10N::class); $l->method('t')->willReturnArgument(0); - return new \OC\Avatar\UserAvatar( + return new UserAvatar( $this->folder, $l, $user, diff --git a/tests/lib/BackgroundJob/DummyJobList.php b/tests/lib/BackgroundJob/DummyJobList.php index 7b7fce7e9e8..fac9db28b01 100644 --- a/tests/lib/BackgroundJob/DummyJobList.php +++ b/tests/lib/BackgroundJob/DummyJobList.php @@ -7,14 +7,16 @@ namespace Test\BackgroundJob; +use OC\BackgroundJob\JobList; use OCP\BackgroundJob\IJob; +use OCP\Server; /** * Class DummyJobList * * in memory job list for testing purposes */ -class DummyJobList extends \OC\BackgroundJob\JobList { +class DummyJobList extends JobList { /** * @var IJob[] */ @@ -38,7 +40,7 @@ class DummyJobList extends \OC\BackgroundJob\JobList { public function add($job, $argument = null, ?int $firstCheck = null): void { if (is_string($job)) { /** @var IJob $job */ - $job = \OCP\Server::get($job); + $job = Server::get($job); } $job->setArgument($argument); $job->setId($this->lastId); diff --git a/tests/lib/BackgroundJob/JobListTest.php b/tests/lib/BackgroundJob/JobListTest.php index bf21639d3aa..2c3461f22cd 100644 --- a/tests/lib/BackgroundJob/JobListTest.php +++ b/tests/lib/BackgroundJob/JobListTest.php @@ -10,10 +10,13 @@ declare(strict_types=1); namespace Test\BackgroundJob; +use OC\BackgroundJob\JobList; use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJob; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IConfig; +use OCP\IDBConnection; +use OCP\Server; use Psr\Log\LoggerInterface; use Test\TestCase; @@ -40,15 +43,15 @@ class JobListTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->connection = \OC::$server->getDatabaseConnection(); + $this->connection = Server::get(IDBConnection::class); $this->clearJobsList(); $this->config = $this->createMock(IConfig::class); $this->timeFactory = $this->createMock(ITimeFactory::class); - $this->instance = new \OC\BackgroundJob\JobList( + $this->instance = new JobList( $this->connection, $this->config, $this->timeFactory, - \OC::$server->get(LoggerInterface::class), + Server::get(LoggerInterface::class), ); } @@ -73,7 +76,7 @@ class JobListTest extends TestCase { return $jobs; } - public function argumentProvider() { + public static function argumentProvider(): array { return [ [null], [false], @@ -277,10 +280,10 @@ class JobListTest extends TestCase { ->method('getTime') ->willReturn(123456789); - $job = new TestJob($this->timeFactory, $this, function () { + $job = new TestJob($this->timeFactory, $this, function (): void { }); - $job2 = new TestJob($this->timeFactory, $this, function () { + $job2 = new TestJob($this->timeFactory, $this, function (): void { }); $this->instance->add($job, 1); @@ -310,10 +313,10 @@ class JobListTest extends TestCase { return time(); }); - $job = new TestParallelAwareJob($this->timeFactory, $this, function () { + $job = new TestParallelAwareJob($this->timeFactory, $this, function (): void { }); - $job2 = new TestParallelAwareJob($this->timeFactory, $this, function () { + $job2 = new TestParallelAwareJob($this->timeFactory, $this, function (): void { }); $this->instance->add($job, 1); diff --git a/tests/lib/BackgroundJob/JobTest.php b/tests/lib/BackgroundJob/JobTest.php index 9024742f432..485f64eca9a 100644 --- a/tests/lib/BackgroundJob/JobTest.php +++ b/tests/lib/BackgroundJob/JobTest.php @@ -8,6 +8,7 @@ namespace Test\BackgroundJob; use OCP\AppFramework\Utility\ITimeFactory; +use OCP\Server; use Psr\Log\LoggerInterface; class JobTest extends \Test\TestCase { @@ -18,7 +19,7 @@ class JobTest extends \Test\TestCase { protected function setUp(): void { parent::setUp(); $this->run = false; - $this->timeFactory = \OCP\Server::get(ITimeFactory::class); + $this->timeFactory = Server::get(ITimeFactory::class); $this->logger = $this->createMock(LoggerInterface::class); \OC::$server->registerService(LoggerInterface::class, fn ($c) => $this->logger); @@ -27,7 +28,7 @@ class JobTest extends \Test\TestCase { public function testRemoveAfterException(): void { $jobList = new DummyJobList(); $e = new \Exception(); - $job = new TestJob($this->timeFactory, $this, function () use ($e) { + $job = new TestJob($this->timeFactory, $this, function () use ($e): void { throw $e; }); $jobList->add($job); @@ -43,7 +44,7 @@ class JobTest extends \Test\TestCase { public function testRemoveAfterError(): void { $jobList = new DummyJobList(); - $job = new TestJob($this->timeFactory, $this, function () { + $job = new TestJob($this->timeFactory, $this, function (): void { $test = null; $test->someMethod(); }); diff --git a/tests/lib/BackgroundJob/QueuedJobTest.php b/tests/lib/BackgroundJob/QueuedJobTest.php index 893f476bb5f..ad01dae0a31 100644 --- a/tests/lib/BackgroundJob/QueuedJobTest.php +++ b/tests/lib/BackgroundJob/QueuedJobTest.php @@ -9,6 +9,7 @@ namespace Test\BackgroundJob; use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\QueuedJob; +use OCP\Server; class TestQueuedJobNew extends QueuedJob { public bool $ran = false; @@ -28,7 +29,7 @@ class QueuedJobTest extends \Test\TestCase { } public function testJobShouldBeRemovedNew(): void { - $job = new TestQueuedJobNew(\OCP\Server::get(ITimeFactory::class)); + $job = new TestQueuedJobNew(Server::get(ITimeFactory::class)); $job->setId(42); $this->jobList->add($job); diff --git a/tests/lib/BackgroundJob/TestJob.php b/tests/lib/BackgroundJob/TestJob.php index ea0634e63d9..f4e2b31594b 100644 --- a/tests/lib/BackgroundJob/TestJob.php +++ b/tests/lib/BackgroundJob/TestJob.php @@ -8,10 +8,10 @@ namespace Test\BackgroundJob; use OCP\AppFramework\Utility\ITimeFactory; +use OCP\BackgroundJob\Job; +use OCP\Server; -class TestJob extends \OCP\BackgroundJob\Job { - private $testCase; - +class TestJob extends Job { /** * @var callable $callback */ @@ -21,9 +21,12 @@ class TestJob extends \OCP\BackgroundJob\Job { * @param JobTest $testCase * @param callable $callback */ - public function __construct(?ITimeFactory $time = null, $testCase = null, $callback = null) { - parent::__construct($time ?? \OCP\Server::get(ITimeFactory::class)); - $this->testCase = $testCase; + public function __construct( + ?ITimeFactory $time = null, + private $testCase = null, + $callback = null, + ) { + parent::__construct($time ?? Server::get(ITimeFactory::class)); $this->callback = $callback; } diff --git a/tests/lib/BackgroundJob/TestParallelAwareJob.php b/tests/lib/BackgroundJob/TestParallelAwareJob.php index f7a6cf5fa79..fb49dd671ce 100644 --- a/tests/lib/BackgroundJob/TestParallelAwareJob.php +++ b/tests/lib/BackgroundJob/TestParallelAwareJob.php @@ -7,10 +7,10 @@ namespace Test\BackgroundJob; use OCP\AppFramework\Utility\ITimeFactory; +use OCP\BackgroundJob\Job; +use OCP\Server; -class TestParallelAwareJob extends \OCP\BackgroundJob\Job { - private $testCase; - +class TestParallelAwareJob extends Job { /** * @var callable $callback */ @@ -20,10 +20,13 @@ class TestParallelAwareJob extends \OCP\BackgroundJob\Job { * @param JobTest $testCase * @param callable $callback */ - public function __construct(?ITimeFactory $time = null, $testCase = null, $callback = null) { - parent::__construct($time ?? \OC::$server->get(ITimeFactory::class)); + public function __construct( + ?ITimeFactory $time = null, + private $testCase = null, + $callback = null, + ) { + parent::__construct($time ?? Server::get(ITimeFactory::class)); $this->setAllowParallelRuns(false); - $this->testCase = $testCase; $this->callback = $callback; } diff --git a/tests/lib/BackgroundJob/TimedJobTest.php b/tests/lib/BackgroundJob/TimedJobTest.php index 6037365104f..27f9c64499c 100644 --- a/tests/lib/BackgroundJob/TimedJobTest.php +++ b/tests/lib/BackgroundJob/TimedJobTest.php @@ -8,6 +8,7 @@ namespace Test\BackgroundJob; use OCP\AppFramework\Utility\ITimeFactory; +use OCP\Server; class TimedJobTest extends \Test\TestCase { private DummyJobList $jobList; @@ -17,7 +18,7 @@ class TimedJobTest extends \Test\TestCase { parent::setUp(); $this->jobList = new DummyJobList(); - $this->time = \OCP\Server::get(ITimeFactory::class); + $this->time = Server::get(ITimeFactory::class); } public function testShouldRunAfterIntervalNew(): void { diff --git a/tests/lib/BinaryFinderTest.php b/tests/lib/BinaryFinderTest.php index 42306e49eac..af7bf8b9126 100644 --- a/tests/lib/BinaryFinderTest.php +++ b/tests/lib/BinaryFinderTest.php @@ -39,9 +39,9 @@ class BinaryFinderTest extends TestCase { $config ->method('getSystemValue') ->with('binary_search_paths', $this->anything()) - ->will($this->returnCallback(function ($key, $default) { + ->willReturnCallback(function ($key, $default) { return $default; - })); + }); $finder = new BinaryFinder($this->cacheFactory, $config); $this->assertEquals($finder->findBinaryPath('cat'), '/usr/bin/cat'); $this->assertEquals($this->cache->get('cat'), '/usr/bin/cat'); @@ -52,9 +52,9 @@ class BinaryFinderTest extends TestCase { $config ->method('getSystemValue') ->with('binary_search_paths', $this->anything()) - ->will($this->returnCallback(function ($key, $default) { + ->willReturnCallback(function ($key, $default) { return $default; - })); + }); $finder = new BinaryFinder($this->cacheFactory, $config); $this->assertFalse($finder->findBinaryPath('cata')); $this->assertFalse($this->cache->get('cata')); diff --git a/tests/lib/Cache/CappedMemoryCacheTest.php b/tests/lib/Cache/CappedMemoryCacheTest.php index f2ed1a5ee0d..f0cf9aa280b 100644 --- a/tests/lib/Cache/CappedMemoryCacheTest.php +++ b/tests/lib/Cache/CappedMemoryCacheTest.php @@ -7,6 +7,8 @@ namespace Test\Cache; +use OCP\Cache\CappedMemoryCache; + /** * Class CappedMemoryCacheTest * @@ -15,11 +17,11 @@ namespace Test\Cache; class CappedMemoryCacheTest extends TestCache { protected function setUp(): void { parent::setUp(); - $this->instance = new \OCP\Cache\CappedMemoryCache(); + $this->instance = new CappedMemoryCache(); } public function testSetOverCap(): void { - $instance = new \OCP\Cache\CappedMemoryCache(3); + $instance = new CappedMemoryCache(3); $instance->set('1', 'a'); $instance->set('2', 'b'); diff --git a/tests/lib/Cache/FileCacheTest.php b/tests/lib/Cache/FileCacheTest.php index 1d12147af0d..a60609782f0 100644 --- a/tests/lib/Cache/FileCacheTest.php +++ b/tests/lib/Cache/FileCacheTest.php @@ -7,8 +7,16 @@ namespace Test\Cache; +use OC\Cache\File; +use OC\Files\Filesystem; use OC\Files\Storage\Local; +use OC\Files\Storage\Temporary; +use OC\Files\View; +use OCP\Files\LockNotAcquiredException; use OCP\Files\Mount\IMountManager; +use OCP\ITempManager; +use OCP\Lock\LockedException; +use OCP\Server; use Test\Traits\UserTrait; /** @@ -55,17 +63,17 @@ class FileCacheTest extends TestCache { \OC_Hook::clear('OC_Filesystem'); /** @var IMountManager $manager */ - $manager = \OC::$server->get(IMountManager::class); + $manager = Server::get(IMountManager::class); $manager->removeMount('/test'); - $storage = new \OC\Files\Storage\Temporary([]); - \OC\Files\Filesystem::mount($storage, [], '/test/cache'); + $storage = new Temporary([]); + Filesystem::mount($storage, [], '/test/cache'); //set up the users dir - $this->rootView = new \OC\Files\View(''); + $this->rootView = new View(''); $this->rootView->mkdir('/test'); - $this->instance = new \OC\Cache\File(); + $this->instance = new File(); // forces creation of cache folder for subsequent tests $this->instance->set('hack', 'hack'); @@ -88,11 +96,11 @@ class FileCacheTest extends TestCache { private function setupMockStorage() { $mockStorage = $this->getMockBuilder(Local::class) - ->setMethods(['filemtime', 'unlink']) - ->setConstructorArgs([['datadir' => \OC::$server->getTempManager()->getTemporaryFolder()]]) + ->onlyMethods(['filemtime', 'unlink']) + ->setConstructorArgs([['datadir' => Server::get(ITempManager::class)->getTemporaryFolder()]]) ->getMock(); - \OC\Files\Filesystem::mount($mockStorage, [], '/test/cache'); + Filesystem::mount($mockStorage, [], '/test/cache'); return $mockStorage; } @@ -125,10 +133,10 @@ class FileCacheTest extends TestCache { $this->instance->gc(); } - public function lockExceptionProvider() { + public static function lockExceptionProvider(): array { return [ - [new \OCP\Lock\LockedException('key1')], - [new \OCP\Files\LockNotAcquiredException('key1', 1)], + [new LockedException('key1')], + [new LockNotAcquiredException('key1', 1)], ]; } @@ -142,11 +150,7 @@ class FileCacheTest extends TestCache { ->method('filemtime') ->willReturn(100); $mockStorage->expects($this->atLeastOnce()) - ->method('unlink') - ->will($this->onConsecutiveCalls( - $this->throwException($testException), - $this->returnValue(true) - )); + ->method('unlink')->willReturnOnConsecutiveCalls($this->throwException($testException), $this->returnValue(true)); $this->instance->set('key1', 'value1'); $this->instance->set('key2', 'value2'); diff --git a/tests/lib/Calendar/ManagerTest.php b/tests/lib/Calendar/ManagerTest.php index cecebcfc4cf..7f8afc0247b 100644 --- a/tests/lib/Calendar/ManagerTest.php +++ b/tests/lib/Calendar/ManagerTest.php @@ -11,6 +11,7 @@ use OC\AppFramework\Bootstrap\Coordinator; use OC\Calendar\AvailabilityResult; use OC\Calendar\Manager; use OCA\DAV\CalDAV\Auth\CustomPrincipalPlugin; +use OCA\DAV\Connector\Sabre\Server; use OCA\DAV\ServerFactory; use OCP\AppFramework\Utility\ITimeFactory; use OCP\Calendar\ICalendar; @@ -199,7 +200,7 @@ class ManagerTest extends TestCase { $this->assertEquals($expected, $result); } - public function searchProvider() { + public static function searchProvider(): array { $search1 = [ [ 'id' => 1, @@ -1096,7 +1097,7 @@ class ManagerTest extends TestCase { $this->userManager, $this->serverFactory, ]) - ->setMethods([ + ->onlyMethods([ 'getCalendarsForPrincipal' ]) ->getMock(); @@ -1544,11 +1545,11 @@ class ManagerTest extends TestCase { $this->userManager, $this->serverFactory, ]) - ->setMethods([ + ->onlyMethods([ 'getCalendarsForPrincipal' ]) ->getMock(); - + $principalUri = 'principals/user/pierre'; $sender = 'clint@stardew-tent-living.com'; $recipient = 'pierre@general-store.com'; @@ -1588,7 +1589,7 @@ class ManagerTest extends TestCase { $this->userManager, $this->serverFactory, ]) - ->setMethods([ + ->onlyMethods([ 'getCalendarsForPrincipal' ]) ->getMock(); @@ -1725,7 +1726,7 @@ EOF; ->method('setCurrentPrincipal') ->with('principals/users/admin'); - $server = $this->createMock(\OCA\DAV\Connector\Sabre\Server::class); + $server = $this->createMock(Server::class); $server->expects(self::once()) ->method('getPlugin') ->with('auth') @@ -1736,7 +1737,7 @@ EOF; RequestInterface $request, ResponseInterface $response, bool $sendResponse, - ) { + ): void { $requestBody = file_get_contents(__DIR__ . '/../../data/ics/free-busy-request.ics'); $this->assertEquals('POST', $request->getMethod()); $this->assertEquals('calendars/admin/outbox', $request->getPath()); @@ -1792,7 +1793,7 @@ EOF; ->method('setCurrentPrincipal') ->with('principals/users/admin'); - $server = $this->createMock(\OCA\DAV\Connector\Sabre\Server::class); + $server = $this->createMock(Server::class); $server->expects(self::once()) ->method('getPlugin') ->with('auth') @@ -1803,7 +1804,7 @@ EOF; RequestInterface $request, ResponseInterface $response, bool $sendResponse, - ) { + ): void { $requestBody = file_get_contents(__DIR__ . '/../../data/ics/free-busy-request.ics'); $this->assertEquals('POST', $request->getMethod()); $this->assertEquals('calendars/admin/outbox', $request->getPath()); diff --git a/tests/lib/Calendar/ResourcesRoomsUpdaterTest.php b/tests/lib/Calendar/ResourcesRoomsUpdaterTest.php index 7776ba8cd3a..9e54d21fda4 100644 --- a/tests/lib/Calendar/ResourcesRoomsUpdaterTest.php +++ b/tests/lib/Calendar/ResourcesRoomsUpdaterTest.php @@ -112,11 +112,11 @@ class ResourcesRoomsUpdaterTest extends TestCase { $backend2->method('getBackendIdentifier') ->willReturn('backend2'); $backend2->method('listAllResources') - ->will($this->throwException(new BackendTemporarilyUnavailableException())); + ->willThrowException(new BackendTemporarilyUnavailableException()); $backend2->method('getResource') - ->will($this->throwException(new BackendTemporarilyUnavailableException())); + ->willThrowException(new BackendTemporarilyUnavailableException()); $backend2->method('getAllResources') - ->will($this->throwException(new BackendTemporarilyUnavailableException())); + ->willThrowException(new BackendTemporarilyUnavailableException()); $backend3->method('getBackendIdentifier') ->willReturn('backend3'); $backend3->method('listAllResources') diff --git a/tests/lib/CapabilitiesManagerTest.php b/tests/lib/CapabilitiesManagerTest.php index 23909a91c5a..5206a28aa76 100644 --- a/tests/lib/CapabilitiesManagerTest.php +++ b/tests/lib/CapabilitiesManagerTest.php @@ -129,7 +129,7 @@ class CapabilitiesManagerTest extends TestCase { } public function testInvalidCapability(): void { - $this->manager->registerCapability(function () { + $this->manager->registerCapability(function (): void { throw new QueryException(); }); diff --git a/tests/lib/Collaboration/Collaborators/MailPluginTest.php b/tests/lib/Collaboration/Collaborators/MailPluginTest.php index 02b1034240f..61afeb7897c 100644 --- a/tests/lib/Collaboration/Collaborators/MailPluginTest.php +++ b/tests/lib/Collaboration/Collaborators/MailPluginTest.php @@ -134,7 +134,7 @@ class MailPluginTest extends TestCase { $this->assertSame($reachedEnd, $moreResults); } - public function dataGetEmail() { + public static function dataGetEmail(): array { return [ // data set 0 ['test', [], true, ['emails' => [], 'exact' => ['emails' => []]], false, false, false], @@ -618,7 +618,7 @@ class MailPluginTest extends TestCase { $this->groupManager->expects($this->any()) ->method('getUserGroupIds') - ->willReturnCallback(function (\OCP\IUser $user) use ($userToGroupMapping) { + ->willReturnCallback(function (IUser $user) use ($userToGroupMapping) { return $userToGroupMapping[$user->getUID()]; }); @@ -636,7 +636,7 @@ class MailPluginTest extends TestCase { $this->assertSame($reachedEnd, $moreResults); } - public function dataGetEmailGroupsOnly() { + public static function dataGetEmailGroupsOnly(): array { return [ // The user `User` can share with the current user [ diff --git a/tests/lib/Collaboration/Collaborators/RemotePluginTest.php b/tests/lib/Collaboration/Collaborators/RemotePluginTest.php index 14894aa2df6..aa7e4c8afd5 100644 --- a/tests/lib/Collaboration/Collaborators/RemotePluginTest.php +++ b/tests/lib/Collaboration/Collaborators/RemotePluginTest.php @@ -141,7 +141,7 @@ class RemotePluginTest extends TestCase { $this->plugin->splitUserRemote($id); } - public function dataGetRemote() { + public static function dataGetRemote() { return [ ['test', [], true, ['remotes' => [], 'exact' => ['remotes' => []]], false, true], ['test', [], false, ['remotes' => [], 'exact' => ['remotes' => []]], false, true], @@ -374,7 +374,7 @@ class RemotePluginTest extends TestCase { ]; } - public function dataTestSplitUserRemote() { + public static function dataTestSplitUserRemote(): array { $userPrefix = ['user@name', 'username']; $protocols = ['', 'http://', 'https://']; $remotes = [ @@ -410,7 +410,7 @@ class RemotePluginTest extends TestCase { return $testCases; } - public function dataTestSplitUserRemoteError() { + public static function dataTestSplitUserRemoteError(): array { return [ // Invalid path ['user@'], diff --git a/tests/lib/Collaboration/Collaborators/SearchResultTest.php b/tests/lib/Collaboration/Collaborators/SearchResultTest.php index 6641a2caed1..7a0afe87e4b 100644 --- a/tests/lib/Collaboration/Collaborators/SearchResultTest.php +++ b/tests/lib/Collaboration/Collaborators/SearchResultTest.php @@ -27,7 +27,7 @@ class SearchResultTest extends TestCase { $this->search = new Search($this->container); } - public function dataAddResultSet() { + public static function dataAddResultSet(): array { return [ [[], ['exact' => []]], [['users' => ['exact' => null, 'loose' => []]], ['exact' => ['users' => []], 'users' => []]], @@ -51,7 +51,7 @@ class SearchResultTest extends TestCase { $this->assertEquals($expected, $result->asArray()); } - public function dataHasResult() { + public static function dataHasResult(): array { $result = ['value' => ['shareWith' => 'l1']]; return [ [[],'users', 'n1', false], diff --git a/tests/lib/Collaboration/Collaborators/SearchTest.php b/tests/lib/Collaboration/Collaborators/SearchTest.php index 3e43d6331b2..146befe966e 100644 --- a/tests/lib/Collaboration/Collaborators/SearchTest.php +++ b/tests/lib/Collaboration/Collaborators/SearchTest.php @@ -115,7 +115,7 @@ class SearchTest extends TestCase { $this->assertSame($expectedMoreResults, $moreResults); } - public function dataSearchSharees() { + public static function dataSearchSharees(): array { return [ // #0 [ diff --git a/tests/lib/Collaboration/Collaborators/UserPluginTest.php b/tests/lib/Collaboration/Collaborators/UserPluginTest.php index 453f16c6686..3b342b7938b 100644 --- a/tests/lib/Collaboration/Collaborators/UserPluginTest.php +++ b/tests/lib/Collaboration/Collaborators/UserPluginTest.php @@ -124,7 +124,7 @@ class UserPluginTest extends TestCase { return $group; } - public function dataGetUsers() { + public function dataGetUsers(): array { return [ ['test', false, true, [], [], [], [], true, false], ['test', false, false, [], [], [], [], true, false], @@ -508,7 +508,7 @@ class UserPluginTest extends TestCase { $this->assertSame($reachedEnd, $moreResults); } - public function takeOutCurrentUserProvider() { + public static function takeOutCurrentUserProvider(): array { $inputUsers = [ 'alice' => 'Alice', 'bob' => 'Bob', @@ -555,7 +555,7 @@ class UserPluginTest extends TestCase { $this->assertSame($expectedUIDs, array_keys($users)); } - public function dataSearchEnumeration() { + public static function dataSearchEnumeration(): array { return [ [ 'test', diff --git a/tests/lib/Command/AsyncBusTest.php b/tests/lib/Command/AsyncBusTestCase.php index e8d7a857129..6aca4d8d6e6 100644 --- a/tests/lib/Command/AsyncBusTest.php +++ b/tests/lib/Command/AsyncBusTestCase.php @@ -15,19 +15,18 @@ use Test\TestCase; class SimpleCommand implements ICommand { public function handle() { - AsyncBusTest::$lastCommand = 'SimpleCommand'; + AsyncBusTestCase::$lastCommand = 'SimpleCommand'; } } class StateFullCommand implements ICommand { - private $state; - - public function __construct($state) { - $this->state = $state; + public function __construct( + private $state, + ) { } public function handle() { - AsyncBusTest::$lastCommand = $this->state; + AsyncBusTestCase::$lastCommand = $this->state; } } @@ -35,28 +34,28 @@ class FilesystemCommand implements ICommand { use FileAccess; public function handle() { - AsyncBusTest::$lastCommand = 'FileAccess'; + AsyncBusTestCase::$lastCommand = 'FileAccess'; } } function basicFunction() { - AsyncBusTest::$lastCommand = 'function'; + AsyncBusTestCase::$lastCommand = 'function'; } // clean class to prevent phpunit putting closure in $this class ThisClosureTest { private function privateMethod() { - AsyncBusTest::$lastCommand = 'closure-this'; + AsyncBusTestCase::$lastCommand = 'closure-this'; } public function test(IBus $bus) { - $bus->push(function () { + $bus->push(function (): void { $this->privateMethod(); }); } } -abstract class AsyncBusTest extends TestCase { +abstract class AsyncBusTestCase extends TestCase { /** * Basic way to check output from a command * @@ -107,7 +106,7 @@ abstract class AsyncBusTest extends TestCase { } public function testStaticCallable(): void { - $this->getBus()->push(['\Test\Command\AsyncBusTest', 'DummyCommand']); + $this->getBus()->push(['\Test\Command\AsyncBusTestCase', 'DummyCommand']); $this->runJobs(); $this->assertEquals('static', self::$lastCommand); } @@ -126,16 +125,16 @@ abstract class AsyncBusTest extends TestCase { } public function testClosure(): void { - $this->getBus()->push(function () { - AsyncBusTest::$lastCommand = 'closure'; + $this->getBus()->push(function (): void { + AsyncBusTestCase::$lastCommand = 'closure'; }); $this->runJobs(); $this->assertEquals('closure', self::$lastCommand); } public function testClosureSelf(): void { - $this->getBus()->push(function () { - AsyncBusTest::$lastCommand = 'closure-self'; + $this->getBus()->push(function (): void { + AsyncBusTestCase::$lastCommand = 'closure-self'; }); $this->runJobs(); $this->assertEquals('closure-self', self::$lastCommand); @@ -152,8 +151,8 @@ abstract class AsyncBusTest extends TestCase { public function testClosureBind(): void { $state = 'bar'; - $this->getBus()->push(function () use ($state) { - AsyncBusTest::$lastCommand = 'closure-' . $state; + $this->getBus()->push(function () use ($state): void { + AsyncBusTestCase::$lastCommand = 'closure-' . $state; }); $this->runJobs(); $this->assertEquals('closure-bar', self::$lastCommand); diff --git a/tests/lib/Command/BackgroundModeTest.php b/tests/lib/Command/BackgroundModeTest.php index 941449c98bb..2f874deb78a 100644 --- a/tests/lib/Command/BackgroundModeTest.php +++ b/tests/lib/Command/BackgroundModeTest.php @@ -16,6 +16,9 @@ use Symfony\Component\Console\Input\InputDefinition; use Symfony\Component\Console\Tester\CommandTester; use Test\TestCase; +/** + * @group DB + */ class BackgroundModeTest extends TestCase { private IAppConfig $appConfig; @@ -49,7 +52,7 @@ class BackgroundModeTest extends TestCase { $this->assertStringContainsString($mode, $output); } - public function dataModeCommand(): array { + public static function dataModeCommand(): array { return [ 'ajax' => ['ajax'], 'cron' => ['cron'], diff --git a/tests/lib/Command/CronBusTest.php b/tests/lib/Command/CronBusTest.php index 96190f717c6..2e5617efb31 100644 --- a/tests/lib/Command/CronBusTest.php +++ b/tests/lib/Command/CronBusTest.php @@ -9,7 +9,10 @@ namespace Test\Command; use OC\Command\CronBus; use Test\BackgroundJob\DummyJobList; -class CronBusTest extends AsyncBusTest { +/** + * @group DB + */ +class CronBusTest extends AsyncBusTestCase { /** * @var \OCP\BackgroundJob\IJobList */ diff --git a/tests/lib/Command/Integrity/SignAppTest.php b/tests/lib/Command/Integrity/SignAppTest.php index d4921c79431..15f98dba0c0 100644 --- a/tests/lib/Command/Integrity/SignAppTest.php +++ b/tests/lib/Command/Integrity/SignAppTest.php @@ -44,22 +44,28 @@ class SignAppTest extends TestCase { $inputInterface ->expects($this->exactly(3)) ->method('getOption') - ->withConsecutive( - ['path'], - ['privateKey'], - ['certificate'], - )->willReturnOnConsecutiveCalls( - null, - 'PrivateKey', - 'Certificate', - ); - + ->willReturnMap([ + ['path', null], + ['privateKey', 'PrivateKey'], + ['certificate', 'Certificate'], + ]); + + $calls = [ + 'This command requires the --path, --privateKey and --certificate.', + '*', + '*', + ]; $outputInterface ->expects($this->any()) ->method('writeln') - ->withConsecutive( - ['This command requires the --path, --privateKey and --certificate.'] - ); + ->willReturnCallback(function (string $message) use (&$calls): void { + $expected = array_shift($calls); + if ($expected === '*') { + $this->assertNotEmpty($message); + } else { + $this->assertEquals($expected, $message); + } + }); $this->assertSame(1, self::invokePrivate($this->signApp, 'execute', [$inputInterface, $outputInterface])); } @@ -71,22 +77,28 @@ class SignAppTest extends TestCase { $inputInterface ->expects($this->exactly(3)) ->method('getOption') - ->withConsecutive( - ['path'], - ['privateKey'], - ['certificate'], - )->willReturnOnConsecutiveCalls( - 'AppId', - null, - 'Certificate', - ); - + ->willReturnMap([ + ['path', 'AppId'], + ['privateKey', null], + ['certificate', 'Certificate'], + ]); + + $calls = [ + 'This command requires the --path, --privateKey and --certificate.', + '*', + '*', + ]; $outputInterface ->expects($this->any()) ->method('writeln') - ->withConsecutive( - ['This command requires the --path, --privateKey and --certificate.'] - ); + ->willReturnCallback(function (string $message) use (&$calls): void { + $expected = array_shift($calls); + if ($expected === '*') { + $this->assertNotEmpty($message); + } else { + $this->assertEquals($expected, $message); + } + }); $this->assertSame(1, self::invokePrivate($this->signApp, 'execute', [$inputInterface, $outputInterface])); } @@ -98,22 +110,28 @@ class SignAppTest extends TestCase { $inputInterface ->expects($this->exactly(3)) ->method('getOption') - ->withConsecutive( - ['path'], - ['privateKey'], - ['certificate'], - )->willReturnOnConsecutiveCalls( - 'AppId', - 'privateKey', - null, - ); - + ->willReturnMap([ + ['path', 'AppId'], + ['privateKey', 'PrivateKey'], + ['certificate', null], + ]); + + $calls = [ + 'This command requires the --path, --privateKey and --certificate.', + '*', + '*', + ]; $outputInterface ->expects($this->any()) ->method('writeln') - ->withConsecutive( - ['This command requires the --path, --privateKey and --certificate.'] - ); + ->willReturnCallback(function (string $message) use (&$calls): void { + $expected = array_shift($calls); + if ($expected === '*') { + $this->assertNotEmpty($message); + } else { + $this->assertEquals($expected, $message); + } + }); $this->assertSame(1, self::invokePrivate($this->signApp, 'execute', [$inputInterface, $outputInterface])); } @@ -125,29 +143,26 @@ class SignAppTest extends TestCase { $inputInterface ->expects($this->exactly(3)) ->method('getOption') - ->withConsecutive( - ['path'], - ['privateKey'], - ['certificate'], - )->willReturnOnConsecutiveCalls( - 'AppId', - 'privateKey', - 'certificate', - ); + ->willReturnMap([ + ['path', 'AppId'], + ['privateKey', 'privateKey'], + ['certificate', 'certificate'], + ]); $this->fileAccessHelper ->expects($this->any()) ->method('file_get_contents') - ->withConsecutive(['privateKey']) - ->willReturnOnConsecutiveCalls(false); + ->willReturnMap([ + ['privateKey', false], + ]); $outputInterface ->expects($this->any()) ->method('writeln') - ->withConsecutive( - ['Private key "privateKey" does not exists.'] - ); + ->willReturnCallback(function (string $message): void { + $this->assertEquals('Private key "privateKey" does not exists.', $message); + }); $this->assertSame(1, self::invokePrivate($this->signApp, 'execute', [$inputInterface, $outputInterface])); } @@ -159,34 +174,26 @@ class SignAppTest extends TestCase { $inputInterface ->expects($this->exactly(3)) ->method('getOption') - ->withConsecutive( - ['path'], - ['privateKey'], - ['certificate'], - )->willReturnOnConsecutiveCalls( - 'AppId', - 'privateKey', - 'certificate', - ); + ->willReturnMap([ + ['path', 'AppId'], + ['privateKey', 'privateKey'], + ['certificate', 'certificate'], + ]); $this->fileAccessHelper ->expects($this->any()) ->method('file_get_contents') - ->withConsecutive( - ['privateKey'], - ['certificate'], - ) - ->willReturnOnConsecutiveCalls( - \OC::$SERVERROOT . '/tests/data/integritycheck/core.key', - false - ); + ->willReturnMap([ + ['privateKey', file_get_contents(\OC::$SERVERROOT . '/tests/data/integritycheck/core.key')], + ['certificate', false], + ]); $outputInterface ->expects($this->any()) ->method('writeln') - ->withConsecutive( - ['Certificate "certificate" does not exists.'] - ); + ->willReturnCallback(function (string $message): void { + $this->assertEquals('Certificate "certificate" does not exists.', $message); + }); $this->assertSame(1, self::invokePrivate($this->signApp, 'execute', [$inputInterface, $outputInterface])); } @@ -198,27 +205,19 @@ class SignAppTest extends TestCase { $inputInterface ->expects($this->exactly(3)) ->method('getOption') - ->withConsecutive( - ['path'], - ['privateKey'], - ['certificate'], - )->willReturnOnConsecutiveCalls( - 'AppId', - 'privateKey', - 'certificate', - ); + ->willReturnMap([ + ['path', 'AppId'], + ['privateKey', 'privateKey'], + ['certificate', 'certificate'], + ]); $this->fileAccessHelper ->expects($this->any()) ->method('file_get_contents') - ->withConsecutive( - ['privateKey'], - ['certificate'], - ) - ->willReturnOnConsecutiveCalls( - file_get_contents(\OC::$SERVERROOT . '/tests/data/integritycheck/core.key'), - file_get_contents(\OC::$SERVERROOT . '/tests/data/integritycheck/core.crt'), - ); + ->willReturnMap([ + ['privateKey', file_get_contents(\OC::$SERVERROOT . '/tests/data/integritycheck/core.key')], + ['certificate', \OC::$SERVERROOT . '/tests/data/integritycheck/core.crt'], + ]); $this->checker ->expects($this->once()) @@ -228,9 +227,9 @@ class SignAppTest extends TestCase { $outputInterface ->expects($this->any()) ->method('writeln') - ->withConsecutive( - ['Error: My error message'] - ); + ->willReturnCallback(function (string $message): void { + $this->assertEquals('Error: My error message', $message); + }); $this->assertSame(1, self::invokePrivate($this->signApp, 'execute', [$inputInterface, $outputInterface])); } @@ -242,27 +241,19 @@ class SignAppTest extends TestCase { $inputInterface ->expects($this->exactly(3)) ->method('getOption') - ->withConsecutive( - ['path'], - ['privateKey'], - ['certificate'], - )->willReturnOnConsecutiveCalls( - 'AppId', - 'privateKey', - 'certificate', - ); + ->willReturnMap([ + ['path', 'AppId'], + ['privateKey', 'privateKey'], + ['certificate', 'certificate'], + ]); $this->fileAccessHelper ->expects($this->any()) ->method('file_get_contents') - ->withConsecutive( - ['privateKey'], - ['certificate'], - ) - ->willReturnOnConsecutiveCalls( - file_get_contents(\OC::$SERVERROOT . '/tests/data/integritycheck/core.key'), - file_get_contents(\OC::$SERVERROOT . '/tests/data/integritycheck/core.crt'), - ); + ->willReturnMap([ + ['privateKey', file_get_contents(\OC::$SERVERROOT . '/tests/data/integritycheck/core.key')], + ['certificate', \OC::$SERVERROOT . '/tests/data/integritycheck/core.crt'], + ]); $this->checker ->expects($this->once()) @@ -271,9 +262,9 @@ class SignAppTest extends TestCase { $outputInterface ->expects($this->any()) ->method('writeln') - ->withConsecutive( - ['Successfully signed "AppId"'] - ); + ->willReturnCallback(function (string $message): void { + $this->assertEquals('Successfully signed "AppId"', $message); + }); $this->assertSame(0, self::invokePrivate($this->signApp, 'execute', [$inputInterface, $outputInterface])); } diff --git a/tests/lib/Command/Integrity/SignCoreTest.php b/tests/lib/Command/Integrity/SignCoreTest.php index bbb68e00a84..efff6da2f95 100644 --- a/tests/lib/Command/Integrity/SignCoreTest.php +++ b/tests/lib/Command/Integrity/SignCoreTest.php @@ -39,22 +39,18 @@ class SignCoreTest extends TestCase { $inputInterface ->expects($this->exactly(3)) ->method('getOption') - ->withConsecutive( - ['privateKey'], - ['certificate'], - ['path'], - )->willReturnOnConsecutiveCalls( - null, - 'certificate', - 'certificate', - ); + ->willReturnMap([ + ['privateKey', null], + ['certificate', 'certificate'], + ['path', 'certificate'], + ]); $outputInterface ->expects($this->any()) ->method('writeln') - ->withConsecutive( - ['--privateKey, --certificate and --path are required.'] - ); + ->willReturnCallback(function (string $message): void { + $this->assertEquals('--privateKey, --certificate and --path are required.', $message); + }); $this->assertSame(1, self::invokePrivate($this->signCore, 'execute', [$inputInterface, $outputInterface])); } @@ -66,22 +62,18 @@ class SignCoreTest extends TestCase { $inputInterface ->expects($this->exactly(3)) ->method('getOption') - ->withConsecutive( - ['privateKey'], - ['certificate'], - ['path'], - )->willReturnOnConsecutiveCalls( - 'privateKey', - null, - 'certificate', - ); + ->willReturnMap([ + ['privateKey', 'privateKey'], + ['certificate', null], + ['path', 'certificate'], + ]); $outputInterface ->expects($this->any()) ->method('writeln') - ->withConsecutive( - ['--privateKey, --certificate and --path are required.'] - ); + ->willReturnCallback(function (string $message): void { + $this->assertEquals('--privateKey, --certificate and --path are required.', $message); + }); $this->assertSame(1, self::invokePrivate($this->signCore, 'execute', [$inputInterface, $outputInterface])); } @@ -93,32 +85,24 @@ class SignCoreTest extends TestCase { $inputInterface ->expects($this->exactly(3)) ->method('getOption') - ->withConsecutive( - ['privateKey'], - ['certificate'], - ['path'], - )->willReturnOnConsecutiveCalls( - 'privateKey', - 'certificate', - 'certificate', - ); + ->willReturnMap([ + ['privateKey', 'privateKey'], + ['certificate', 'certificate'], + ['path', 'certificate'], + ]); $this->fileAccessHelper - ->expects($this->any()) ->method('file_get_contents') - ->withConsecutive( - ['privateKey'], - ) - ->willReturnOnConsecutiveCalls( - false, - ); + ->willReturnMap([ + ['privateKey', false], + ]); $outputInterface ->expects($this->any()) ->method('writeln') - ->withConsecutive( - ['Private key "privateKey" does not exists.'] - ); + ->willReturnCallback(function (string $message): void { + $this->assertEquals('Private key "privateKey" does not exists.', $message); + }); $this->assertSame(1, self::invokePrivate($this->signCore, 'execute', [$inputInterface, $outputInterface])); } @@ -130,34 +114,26 @@ class SignCoreTest extends TestCase { $inputInterface ->expects($this->exactly(3)) ->method('getOption') - ->withConsecutive( - ['privateKey'], - ['certificate'], - ['path'], - )->willReturnOnConsecutiveCalls( - 'privateKey', - 'certificate', - 'certificate', - ); + ->willReturnMap([ + ['privateKey', 'privateKey'], + ['certificate', 'certificate'], + ['path', 'certificate'], + ]); $this->fileAccessHelper ->expects($this->any()) ->method('file_get_contents') - ->withConsecutive( - ['privateKey'], - ['certificate'], - ) - ->willReturnOnConsecutiveCalls( - file_get_contents(\OC::$SERVERROOT . '/tests/data/integritycheck/core.key'), - false, - ); + ->willReturnMap([ + ['privateKey', file_get_contents(\OC::$SERVERROOT . '/tests/data/integritycheck/core.key')], + ['certificate', false], + ]); $outputInterface ->expects($this->any()) ->method('writeln') - ->withConsecutive( - ['Certificate "certificate" does not exists.'] - ); + ->willReturnCallback(function (string $message): void { + $this->assertEquals('Certificate "certificate" does not exists.', $message); + }); $this->assertSame(1, self::invokePrivate($this->signCore, 'execute', [$inputInterface, $outputInterface])); } @@ -169,27 +145,19 @@ class SignCoreTest extends TestCase { $inputInterface ->expects($this->exactly(3)) ->method('getOption') - ->withConsecutive( - ['privateKey'], - ['certificate'], - ['path'], - )->willReturnOnConsecutiveCalls( - 'privateKey', - 'certificate', - 'certificate', - ); + ->willReturnMap([ + ['privateKey', 'privateKey'], + ['certificate', 'certificate'], + ['path', 'certificate'], + ]); $this->fileAccessHelper ->expects($this->any()) ->method('file_get_contents') - ->withConsecutive( - ['privateKey'], - ['certificate'], - ) - ->willReturnOnConsecutiveCalls( - file_get_contents(\OC::$SERVERROOT . '/tests/data/integritycheck/core.key'), - file_get_contents(\OC::$SERVERROOT . '/tests/data/integritycheck/core.crt'), - ); + ->willReturnMap([ + ['privateKey', file_get_contents(\OC::$SERVERROOT . '/tests/data/integritycheck/core.key')], + ['certificate', file_get_contents(\OC::$SERVERROOT . '/tests/data/integritycheck/core.crt')], + ]); $this->checker ->expects($this->once()) @@ -199,9 +167,9 @@ class SignCoreTest extends TestCase { $outputInterface ->expects($this->any()) ->method('writeln') - ->withConsecutive( - ['Error: My exception message'] - ); + ->willReturnCallback(function (string $message): void { + $this->assertEquals('Error: My exception message', $message); + }); $this->assertEquals(1, self::invokePrivate($this->signCore, 'execute', [$inputInterface, $outputInterface])); } @@ -213,27 +181,19 @@ class SignCoreTest extends TestCase { $inputInterface ->expects($this->exactly(3)) ->method('getOption') - ->withConsecutive( - ['privateKey'], - ['certificate'], - ['path'], - )->willReturnOnConsecutiveCalls( - 'privateKey', - 'certificate', - 'certificate', - ); + ->willReturnMap([ + ['privateKey', 'privateKey'], + ['certificate', 'certificate'], + ['path', 'certificate'], + ]); $this->fileAccessHelper ->expects($this->any()) ->method('file_get_contents') - ->withConsecutive( - ['privateKey'], - ['certificate'], - ) - ->willReturnOnConsecutiveCalls( - file_get_contents(\OC::$SERVERROOT . '/tests/data/integritycheck/core.key'), - file_get_contents(\OC::$SERVERROOT . '/tests/data/integritycheck/core.crt'), - ); + ->willReturnMap([ + ['privateKey', file_get_contents(\OC::$SERVERROOT . '/tests/data/integritycheck/core.key')], + ['certificate', file_get_contents(\OC::$SERVERROOT . '/tests/data/integritycheck/core.crt')], + ]); $this->checker ->expects($this->once()) @@ -242,9 +202,9 @@ class SignCoreTest extends TestCase { $outputInterface ->expects($this->any()) ->method('writeln') - ->withConsecutive( - ['Successfully signed "core"'] - ); + ->willReturnCallback(function (string $message): void { + $this->assertEquals('Successfully signed "core"', $message); + }); $this->assertEquals(0, self::invokePrivate($this->signCore, 'execute', [$inputInterface, $outputInterface])); } diff --git a/tests/lib/Comments/CommentTest.php b/tests/lib/Comments/CommentTest.php index 3cfc897b28e..9e28531a045 100644 --- a/tests/lib/Comments/CommentTest.php +++ b/tests/lib/Comments/CommentTest.php @@ -8,6 +8,8 @@ namespace Test\Comments; use OC\Comments\Comment; use OCP\Comments\IComment; +use OCP\Comments\IllegalIDChangeException; +use OCP\Comments\MessageTooLongException; use Test\TestCase; class CommentTest extends TestCase { @@ -62,7 +64,7 @@ class CommentTest extends TestCase { public function testSetIdIllegalInput(): void { - $this->expectException(\OCP\Comments\IllegalIDChangeException::class); + $this->expectException(IllegalIDChangeException::class); $comment = new Comment(); @@ -81,7 +83,7 @@ class CommentTest extends TestCase { $this->assertSame('', $comment->getId()); } - public function simpleSetterProvider() { + public static function simpleSetterProvider(): array { return [ ['Id', true], ['TopmostParentId', true], @@ -105,7 +107,7 @@ class CommentTest extends TestCase { $comment->$setter($input); } - public function roleSetterProvider() { + public static function roleSetterProvider(): array { return [ ['Actor', true, true], ['Actor', 'users', true], @@ -131,14 +133,14 @@ class CommentTest extends TestCase { public function testSetUberlongMessage(): void { - $this->expectException(\OCP\Comments\MessageTooLongException::class); + $this->expectException(MessageTooLongException::class); $comment = new Comment(); $msg = str_pad('', IComment::MAX_MESSAGE_LENGTH + 1, 'x'); $comment->setMessage($msg); } - public function mentionsProvider(): array { + public static function mentionsProvider(): array { return [ [ '@alice @bob look look, a cook!', diff --git a/tests/lib/Comments/FakeFactory.php b/tests/lib/Comments/FakeFactory.php index 04604ab2b44..19d8b58ae01 100644 --- a/tests/lib/Comments/FakeFactory.php +++ b/tests/lib/Comments/FakeFactory.php @@ -6,12 +6,13 @@ */ namespace Test\Comments; +use OCP\Comments\ICommentsManagerFactory; use OCP\IServerContainer; /** * Class FakeFactory */ -class FakeFactory implements \OCP\Comments\ICommentsManagerFactory { +class FakeFactory implements ICommentsManagerFactory { public function __construct(IServerContainer $serverContainer) { } diff --git a/tests/lib/Comments/ManagerTest.php b/tests/lib/Comments/ManagerTest.php index fb2f913f291..5d03bb06521 100644 --- a/tests/lib/Comments/ManagerTest.php +++ b/tests/lib/Comments/ManagerTest.php @@ -43,7 +43,7 @@ class ManagerTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->connection = \OC::$server->getDatabaseConnection(); + $this->connection = Server::get(IDBConnection::class); $this->rootFolder = $this->createMock(IRootFolder::class); $sql = $this->connection->getDatabasePlatform()->getTruncateTableSQL('`*PREFIX*comments`'); @@ -96,7 +96,7 @@ class ManagerTest extends TestCase { public function testGetCommentNotFound(): void { - $this->expectException(\OCP\Comments\NotFoundException::class); + $this->expectException(NotFoundException::class); $manager = $this->getManager(); $manager->get('22'); @@ -116,7 +116,7 @@ class ManagerTest extends TestCase { $creationDT = new \DateTime('yesterday'); $latestChildDT = new \DateTime(); - $qb = \OCP\Server::get(IDBConnection::class)->getQueryBuilder(); + $qb = Server::get(IDBConnection::class)->getQueryBuilder(); $qb ->insert('comments') ->values([ @@ -158,7 +158,7 @@ class ManagerTest extends TestCase { public function testGetTreeNotFound(): void { - $this->expectException(\OCP\Comments\NotFoundException::class); + $this->expectException(NotFoundException::class); $manager = $this->getManager(); $manager->getTree('22'); @@ -450,7 +450,7 @@ class ManagerTest extends TestCase { public function testDelete(): void { - $this->expectException(\OCP\Comments\NotFoundException::class); + $this->expectException(NotFoundException::class); $manager = $this->getManager(); @@ -564,7 +564,7 @@ class ManagerTest extends TestCase { $manager->delete($comment->getId()); $comment->setMessage('very beautiful, I am really so much impressed!'); - $this->expectException(\OCP\Comments\NotFoundException::class); + $this->expectException(NotFoundException::class); $manager->save($comment); } @@ -652,10 +652,10 @@ class ManagerTest extends TestCase { } public function testDeleteReferencesOfActorWithUserManagement(): void { - $user = \OCP\Server::get(IUserManager::class)->createUser('xenia', 'NotAnEasyPassword123456+'); + $user = Server::get(IUserManager::class)->createUser('xenia', 'NotAnEasyPassword123456+'); $this->assertInstanceOf(IUser::class, $user); - $manager = \OCP\Server::get(ICommentsManager::class); + $manager = Server::get(ICommentsManager::class); $comment = $manager->create('users', $user->getUID(), 'files', 'file64'); $comment ->setMessage('Most important comment I ever left on the Internet.') @@ -1073,6 +1073,7 @@ class ManagerTest extends TestCase { * @return array<string, IComment> */ private function proccessComments(array $data): array { + $this->connection->beginTransaction(); /** @var array<string, IComment> $comments */ $comments = []; foreach ($data as $comment) { @@ -1088,6 +1089,7 @@ class ManagerTest extends TestCase { $comment = $this->testSave($message, $actorId, $verb, $parentId, $id); $comments[$comment->getMessage() . '#' . $comment->getActorId()] = $comment; } + $this->connection->commit(); return $comments; } @@ -2423,7 +2425,7 @@ class ManagerTest extends TestCase { $expected = array_combine($keys, $expected); if ($notFound) { - $this->expectException(\OCP\Comments\NotFoundException::class); + $this->expectException(NotFoundException::class); } $comment = $processedComments[$expected['message'] . '#' . $expected['actorId']]; $actual = $manager->getReactionComment((int)$comment->getParentId(), $comment->getActorType(), $comment->getActorId(), $comment->getMessage()); diff --git a/tests/lib/Config/LexiconTest.php b/tests/lib/Config/LexiconTest.php index 5bcd3509b22..530767a7416 100644 --- a/tests/lib/Config/LexiconTest.php +++ b/tests/lib/Config/LexiconTest.php @@ -10,7 +10,9 @@ namespace Tests\lib\Config; use NCU\Config\Exceptions\TypeConflictException; use NCU\Config\Exceptions\UnknownKeyException; use NCU\Config\IUserConfig; +use OC\AppConfig; use OC\AppFramework\Bootstrap\Coordinator; +use OC\Config\ConfigManager; use OCP\Exceptions\AppConfigTypeConflictException; use OCP\Exceptions\AppConfigUnknownKeyException; use OCP\IAppConfig; @@ -25,13 +27,15 @@ use Test\TestCase; * @package Test */ class LexiconTest extends TestCase { + /** @var AppConfig */ private IAppConfig $appConfig; private IUserConfig $userConfig; + private ConfigManager $configManager; protected function setUp(): void { parent::setUp(); - $bootstrapCoordinator = \OCP\Server::get(Coordinator::class); + $bootstrapCoordinator = Server::get(Coordinator::class); $bootstrapCoordinator->getRegistrationContext()?->registerConfigLexicon(TestConfigLexicon_I::APPID, TestConfigLexicon_I::class); $bootstrapCoordinator->getRegistrationContext()?->registerConfigLexicon(TestConfigLexicon_N::APPID, TestConfigLexicon_N::class); $bootstrapCoordinator->getRegistrationContext()?->registerConfigLexicon(TestConfigLexicon_W::APPID, TestConfigLexicon_W::class); @@ -39,6 +43,7 @@ class LexiconTest extends TestCase { $this->appConfig = Server::get(IAppConfig::class); $this->userConfig = Server::get(IUserConfig::class); + $this->configManager = Server::get(ConfigManager::class); } protected function tearDown(): void { @@ -141,11 +146,61 @@ class LexiconTest extends TestCase { public function testUserLexiconSetException() { $this->expectException(UnknownKeyException::class); $this->userConfig->setValueString('user1', TestConfigLexicon_E::APPID, 'key_exception', 'new_value'); - $this->assertSame('', $this->userConfig->getValueString('user1', TestConfigLexicon_E::APPID, 'key3', '')); + $this->assertSame('', $this->userConfig->getValueString('user1', TestConfigLexicon_E::APPID, 'key5', '')); } public function testUserLexiconGetException() { $this->expectException(UnknownKeyException::class); $this->userConfig->getValueString('user1', TestConfigLexicon_E::APPID, 'key_exception'); } + + public function testAppConfigLexiconRenameSetNewValue() { + $this->assertSame(12345, $this->appConfig->getValueInt(TestConfigLexicon_I::APPID, 'key3', 123)); + $this->appConfig->setValueInt(TestConfigLexicon_I::APPID, 'old_key3', 994); + $this->assertSame(994, $this->appConfig->getValueInt(TestConfigLexicon_I::APPID, 'key3', 123)); + } + + public function testAppConfigLexiconRenameSetOldValuePreMigration() { + $this->appConfig->ignoreLexiconAliases(true); + $this->appConfig->setValueInt(TestConfigLexicon_I::APPID, 'old_key3', 993); + $this->appConfig->ignoreLexiconAliases(false); + $this->assertSame(12345, $this->appConfig->getValueInt(TestConfigLexicon_I::APPID, 'key3', 123)); + } + + public function testAppConfigLexiconRenameSetOldValuePostMigration() { + $this->appConfig->ignoreLexiconAliases(true); + $this->appConfig->setValueInt(TestConfigLexicon_I::APPID, 'old_key3', 994); + $this->appConfig->ignoreLexiconAliases(false); + $this->configManager->migrateConfigLexiconKeys(TestConfigLexicon_I::APPID); + $this->assertSame(994, $this->appConfig->getValueInt(TestConfigLexicon_I::APPID, 'key3', 123)); + } + + public function testAppConfigLexiconRenameGetNewValue() { + $this->appConfig->setValueInt(TestConfigLexicon_I::APPID, 'key3', 981); + $this->assertSame(981, $this->appConfig->getValueInt(TestConfigLexicon_I::APPID, 'old_key3', 123)); + } + + public function testAppConfigLexiconRenameGetOldValuePreMigration() { + $this->appConfig->ignoreLexiconAliases(true); + $this->appConfig->setValueInt(TestConfigLexicon_I::APPID, 'key3', 984); + $this->assertSame(123, $this->appConfig->getValueInt(TestConfigLexicon_I::APPID, 'old_key3', 123)); + $this->appConfig->ignoreLexiconAliases(false); + } + + public function testAppConfigLexiconRenameGetOldValuePostMigration() { + $this->appConfig->ignoreLexiconAliases(true); + $this->appConfig->setValueInt(TestConfigLexicon_I::APPID, 'key3', 987); + $this->appConfig->ignoreLexiconAliases(false); + $this->configManager->migrateConfigLexiconKeys(TestConfigLexicon_I::APPID); + $this->assertSame(987, $this->appConfig->getValueInt(TestConfigLexicon_I::APPID, 'old_key3', 123)); + } + + public function testAppConfigLexiconRenameInvertBoolean() { + $this->appConfig->ignoreLexiconAliases(true); + $this->appConfig->setValueBool(TestConfigLexicon_I::APPID, 'old_key4', true); + $this->appConfig->ignoreLexiconAliases(false); + $this->assertSame(true, $this->appConfig->getValueBool(TestConfigLexicon_I::APPID, 'key4')); + $this->configManager->migrateConfigLexiconKeys(TestConfigLexicon_I::APPID); + $this->assertSame(false, $this->appConfig->getValueBool(TestConfigLexicon_I::APPID, 'key4')); + } } diff --git a/tests/lib/Config/TestConfigLexicon_I.php b/tests/lib/Config/TestConfigLexicon_I.php index 497c62acecb..6fb7921b6e6 100644 --- a/tests/lib/Config/TestConfigLexicon_I.php +++ b/tests/lib/Config/TestConfigLexicon_I.php @@ -25,8 +25,9 @@ class TestConfigLexicon_I implements IConfigLexicon { public function getAppConfigs(): array { return [ new ConfigLexiconEntry('key1', ValueType::STRING, 'abcde', 'test key', true, IAppConfig::FLAG_SENSITIVE), - new ConfigLexiconEntry('key2', ValueType::INT, 12345, 'test key', false) - + new ConfigLexiconEntry('key2', ValueType::INT, 12345, 'test key', false), + new ConfigLexiconEntry('key3', ValueType::INT, 12345, 'test key', true, rename: 'old_key3'), + new ConfigLexiconEntry('key4', ValueType::BOOL, 12345, 'test key', true, rename: 'old_key4', options: ConfigLexiconEntry::RENAME_INVERT_BOOLEAN), ]; } diff --git a/tests/lib/Config/UserConfigTest.php b/tests/lib/Config/UserConfigTest.php index f9a9b5c5272..e27e831f425 100644 --- a/tests/lib/Config/UserConfigTest.php +++ b/tests/lib/Config/UserConfigTest.php @@ -15,6 +15,7 @@ use OC\Config\UserConfig; use OCP\IConfig; use OCP\IDBConnection; use OCP\Security\ICrypto; +use OCP\Server; use Psr\Log\LoggerInterface; use Test\TestCase; @@ -170,10 +171,10 @@ class UserConfigTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->connection = \OCP\Server::get(IDBConnection::class); - $this->config = \OCP\Server::get(IConfig::class); - $this->logger = \OCP\Server::get(LoggerInterface::class); - $this->crypto = \OCP\Server::get(ICrypto::class); + $this->connection = Server::get(IDBConnection::class); + $this->config = Server::get(IConfig::class); + $this->logger = Server::get(LoggerInterface::class); + $this->crypto = Server::get(ICrypto::class); // storing current preferences and emptying the data table $sql = $this->connection->getQueryBuilder(); @@ -278,7 +279,7 @@ class UserConfigTest extends TestCase { * @return IUserConfig */ private function generateUserConfig(array $preLoading = []): IUserConfig { - $userConfig = new \OC\Config\UserConfig( + $userConfig = new UserConfig( $this->connection, $this->config, $this->logger, @@ -333,10 +334,7 @@ class UserConfigTest extends TestCase { ); } - /** - * @return array[] - */ - public function providerHasKey(): array { + public static function providerHasKey(): array { return [ ['user1', 'app1', 'key1', false, true], ['user0', 'app1', 'key1', false, false], @@ -358,10 +356,7 @@ class UserConfigTest extends TestCase { $this->assertEquals($result, $userConfig->hasKey($userId, $appId, $key, $lazy)); } - /** - * @return array[] - */ - public function providerIsSensitive(): array { + public static function providerIsSensitive(): array { return [ ['user1', 'app1', 'key1', false, false, false], ['user0', 'app1', 'key1', false, false, true], @@ -399,10 +394,7 @@ class UserConfigTest extends TestCase { $this->assertEquals($result, $userConfig->isSensitive($userId, $appId, $key, $lazy)); } - /** - * @return array[] - */ - public function providerIsLazy(): array { + public static function providerIsLazy(): array { return [ ['user1', 'app1', 'key1', false, false], ['user0', 'app1', 'key1', false, true], @@ -432,7 +424,7 @@ class UserConfigTest extends TestCase { $this->assertEquals($result, $userConfig->isLazy($userId, $appId, $key)); } - public function providerGetValues(): array { + public static function providerGetValues(): array { return [ [ 'user1', 'app1', '', true, @@ -565,7 +557,7 @@ class UserConfigTest extends TestCase { ); } - public function providerGetAllValues(): array { + public static function providerGetAllValues(): array { return [ [ 'user2', false, @@ -662,7 +654,7 @@ class UserConfigTest extends TestCase { $this->assertEqualsCanonicalizing($result, $userConfig->getAllValues($userId, $filtered)); } - public function providerSearchValuesByApps(): array { + public static function providerSearchValuesByApps(): array { return [ [ 'user1', 'key1', false, null, @@ -708,7 +700,7 @@ class UserConfigTest extends TestCase { $this->assertEquals($result, $userConfig->getValuesByApps($userId, $key, $lazy, $typedAs)); } - public function providerSearchValuesByUsers(): array { + public static function providerSearchValuesByUsers(): array { return [ [ 'app2', 'key2', null, null, @@ -760,7 +752,7 @@ class UserConfigTest extends TestCase { ); } - public function providerSearchValuesByValueString(): array { + public static function providerSearchValuesByValueString(): array { return [ ['app2', 'key2', 'value2a', false, ['user1']], ['app2', 'key2', 'value2A', false, ['user4']], @@ -782,7 +774,7 @@ class UserConfigTest extends TestCase { $this->assertEqualsCanonicalizing($result, iterator_to_array($userConfig->searchUsersByValueString($app, $key, $value, $ci))); } - public function providerSearchValuesByValueInt(): array { + public static function providerSearchValuesByValueInt(): array { return [ ['app3', 'key8', 12, []], // sensitive value, cannot search ['app2', 'key8', 12, ['user2', 'user5']], // sensitive value, cannot search @@ -803,7 +795,7 @@ class UserConfigTest extends TestCase { $this->assertEqualsCanonicalizing($result, iterator_to_array($userConfig->searchUsersByValueInt($app, $key, $value))); } - public function providerSearchValuesByValues(): array { + public static function providerSearchValuesByValues(): array { return [ ['app2', 'key2', ['value2a', 'value2b'], ['user1', 'user2']], ['app2', 'key2', ['value2a', 'value2c'], ['user1', 'user3']], @@ -823,7 +815,7 @@ class UserConfigTest extends TestCase { $this->assertEqualsCanonicalizing($result, iterator_to_array($userConfig->searchUsersByValues($app, $key, $values))); } - public function providerSearchValuesByValueBool(): array { + public static function providerSearchValuesByValueBool(): array { return [ ['app3', 'key10', true, ['user1', 'user4']], ['app3', 'key10', false, ['user2']], @@ -843,7 +835,7 @@ class UserConfigTest extends TestCase { $this->assertEqualsCanonicalizing($result, iterator_to_array($userConfig->searchUsersByValueBool($app, $key, $value))); } - public function providerGetValueMixed(): array { + public static function providerGetValueMixed(): array { return [ [ ['user1'], 'user1', 'app1', 'key0', 'default_because_unknown_key', true, @@ -943,7 +935,7 @@ class UserConfigTest extends TestCase { $this->assertEquals($result, $userConfig->getValueString($userId, $app, $key, $default, $lazy)); } - public function providerGetValueInt(): array { + public static function providerGetValueInt(): array { return [ [['user1'], 'user1', 'app1', 'key0', 54321, true, 54321], [null, 'user1', 'app1', 'key0', 54321, true, 54321], @@ -985,7 +977,7 @@ class UserConfigTest extends TestCase { $this->assertEquals($result, $userConfig->getValueInt($userId, $app, $key, $default, $lazy)); } - public function providerGetValueFloat(): array { + public static function providerGetValueFloat(): array { return [ [['user1'], 'user1', 'app1', 'key0', 54.321, true, 54.321], [null, 'user1', 'app1', 'key0', 54.321, true, 54.321], @@ -1026,7 +1018,7 @@ class UserConfigTest extends TestCase { $this->assertEquals($result, $userConfig->getValueFloat($userId, $app, $key, $default, $lazy)); } - public function providerGetValueBool(): array { + public static function providerGetValueBool(): array { return [ [['user1'], 'user1', 'app1', 'key0', false, true, false], [null, 'user1', 'app1', 'key0', false, true, false], @@ -1087,7 +1079,7 @@ class UserConfigTest extends TestCase { $this->assertEquals($result, $userConfig->getValueBool($userId, $app, $key, $default, $lazy)); } - public function providerGetValueArray(): array { + public static function providerGetValueArray(): array { return [ [ ['user1'], 'user1', 'app1', 'key0', ['default_because_unknown_key'], true, @@ -1126,7 +1118,7 @@ class UserConfigTest extends TestCase { ); } - public function providerGetValueType(): array { + public static function providerGetValueType(): array { return [ [null, 'user1', 'app1', 'key1', false, ValueType::MIXED], [null, 'user1', 'app1', 'key1', true, null, UnknownKeyException::class], @@ -1187,7 +1179,7 @@ class UserConfigTest extends TestCase { } } - public function providerSetValueMixed(): array { + public static function providerSetValueMixed(): array { return [ [null, 'user1', 'app1', 'key1', 'value', false, false, true], [null, 'user1', 'app1', 'key1', '12345', true, false, true], @@ -1249,8 +1241,21 @@ class UserConfigTest extends TestCase { } } + /** + * This test needs to stay! Emails are expected to be lowercase due to performance reasons. + * This way we can skip the expensive casing change on the database. + */ + public function testSetValueMixedWithSettingsEmail(): void { + $userConfig = $this->generateUserConfig(); + + $edited = $userConfig->setValueMixed('user1', 'settings', 'email', 'mixed.CASE@Nextcloud.com'); + $this->assertTrue($edited); + + $actual = $userConfig->getValueMixed('user1', 'settings', 'email'); + $this->assertEquals('mixed.case@nextcloud.com', $actual); + } - public function providerSetValueString(): array { + public static function providerSetValueString(): array { return [ [null, 'user1', 'app1', 'key1', 'value', false, false, true], [null, 'user1', 'app1', 'key1', '12345', true, false, true], @@ -1325,7 +1330,7 @@ class UserConfigTest extends TestCase { } } - public function providerSetValueInt(): array { + public static function providerSetValueInt(): array { return [ [null, 'user1', 'app1', 'key1', 12345, false, false, true], [null, 'user1', 'app1', 'key1', 12345, true, false, true], @@ -1389,7 +1394,7 @@ class UserConfigTest extends TestCase { } } - public function providerSetValueFloat(): array { + public static function providerSetValueFloat(): array { return [ [null, 'user1', 'app1', 'key1', 12.345, false, false, true], [null, 'user1', 'app1', 'key1', 12.345, true, false, true], @@ -1453,7 +1458,7 @@ class UserConfigTest extends TestCase { } - public function providerSetValueArray(): array { + public static function providerSetValueArray(): array { return [ [null, 'user1', 'app1', 'key1', [], false, false, true], [null, 'user1', 'app1', 'key1', [], true, false, true], @@ -1520,7 +1525,7 @@ class UserConfigTest extends TestCase { } } - public function providerUpdateSensitive(): array { + public static function providerUpdateSensitive(): array { return [ [null, 'user1', 'app1', 'key1', false, false], [['user1'], 'user1', 'app1', 'key1', false, false], @@ -1566,7 +1571,7 @@ class UserConfigTest extends TestCase { } } - public function providerUpdateGlobalSensitive(): array { + public static function providerUpdateGlobalSensitive(): array { return [[true], [false]]; } @@ -1610,7 +1615,7 @@ class UserConfigTest extends TestCase { } } - public function providerUpdateLazy(): array { + public static function providerUpdateLazy(): array { return [ [null, 'user1', 'app1', 'key1', false, false], [['user1'], 'user1', 'app1', 'key1', false, false], @@ -1649,7 +1654,7 @@ class UserConfigTest extends TestCase { } } - public function providerUpdateGlobalLazy(): array { + public static function providerUpdateGlobalLazy(): array { return [[true], [false]]; } @@ -1679,7 +1684,7 @@ class UserConfigTest extends TestCase { } } - public function providerGetDetails(): array { + public static function providerGetDetails(): array { return [ [ 'user3', 'app2', 'key2', @@ -1732,7 +1737,7 @@ class UserConfigTest extends TestCase { } - public function providerDeletePreference(): array { + public static function providerDeletePreference(): array { return [ [null, 'user1', 'app1', 'key22'], [['user1'], 'user1', 'app1', 'fast_string_sensitive'], @@ -1763,7 +1768,7 @@ class UserConfigTest extends TestCase { $this->assertEquals(false, $userConfig->hasKey($userId, $app, $key, $lazy)); } - public function providerDeleteKey(): array { + public static function providerDeleteKey(): array { return [ [null, 'app2', 'key3'], [['user1'], 'app2', 'key3'], @@ -1832,7 +1837,7 @@ class UserConfigTest extends TestCase { 'fastCache' => [], 'lazyLoaded' => [], 'lazyCache' => [], - 'valueTypes' => [], + 'valueDetails' => [], ], $userConfig->statusCache() ); diff --git a/tests/lib/ConfigTest.php b/tests/lib/ConfigTest.php index 3be066c6839..89135e0cffd 100644 --- a/tests/lib/ConfigTest.php +++ b/tests/lib/ConfigTest.php @@ -8,6 +8,8 @@ namespace Test; use OC\Config; +use OCP\ITempManager; +use OCP\Server; class ConfigTest extends TestCase { public const TESTCONTENT = '<?php $CONFIG=array("foo"=>"bar", "beers" => array("Appenzeller", "Guinness", "Kölsch"), "alcohol_free" => false);'; @@ -22,7 +24,7 @@ class ConfigTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->randomTmpDir = \OC::$server->getTempManager()->getTemporaryFolder(); + $this->randomTmpDir = Server::get(ITempManager::class)->getTemporaryFolder(); $this->configFile = $this->randomTmpDir . 'testconfig.php'; file_put_contents($this->configFile, self::TESTCONTENT); } @@ -33,7 +35,7 @@ class ConfigTest extends TestCase { } private function getConfig(): Config { - return new \OC\Config($this->randomTmpDir, 'testconfig.php'); + return new Config($this->randomTmpDir, 'testconfig.php'); } public function testGetKeys(): void { @@ -159,7 +161,7 @@ class ConfigTest extends TestCase { file_put_contents($additionalConfigPath, $additionalConfig); // Reinstantiate the config to force a read-in of the additional configs - $config = new \OC\Config($this->randomTmpDir, 'testconfig.php'); + $config = new Config($this->randomTmpDir, 'testconfig.php'); // Ensure that the config value can be read and the config has not been modified $this->assertSame('totallyOutdated', $config->getValue('php53', 'bogusValue')); diff --git a/tests/lib/Contacts/ContactsMenu/Providers/LocalTimeProviderTest.php b/tests/lib/Contacts/ContactsMenu/Providers/LocalTimeProviderTest.php index 7b1e6249832..198ec6c672e 100644 --- a/tests/lib/Contacts/ContactsMenu/Providers/LocalTimeProviderTest.php +++ b/tests/lib/Contacts/ContactsMenu/Providers/LocalTimeProviderTest.php @@ -47,15 +47,15 @@ class LocalTimeProviderTest extends TestCase { $this->l = $this->createMock(IL10N::class); $this->l->expects($this->any()) ->method('t') - ->will($this->returnCallback(function ($text, $parameters = []) { + ->willReturnCallback(function ($text, $parameters = []) { return vsprintf($text, $parameters); - })); + }); $this->l->expects($this->any()) ->method('n') - ->will($this->returnCallback(function ($text, $textPlural, $n, $parameters = []) { + ->willReturnCallback(function ($text, $textPlural, $n, $parameters = []) { $formatted = str_replace('%n', (string)$n, $n === 1 ? $text : $textPlural); return vsprintf($formatted, $parameters); - })); + }); $this->urlGenerator = $this->createMock(IURLGenerator::class); $this->userManager = $this->createMock(IUserManager::class); $this->timeFactory = $this->createMock(ITimeFactory::class); diff --git a/tests/lib/ContactsManagerTest.php b/tests/lib/ContactsManagerTest.php index 7586b063883..5f7e65312f2 100644 --- a/tests/lib/ContactsManagerTest.php +++ b/tests/lib/ContactsManagerTest.php @@ -6,6 +6,8 @@ */ namespace Test; +use OC\ContactsManager; +use OCP\Constants; use OCP\IAddressBook; class ContactsManagerTest extends \Test\TestCase { @@ -14,10 +16,10 @@ class ContactsManagerTest extends \Test\TestCase { protected function setUp(): void { parent::setUp(); - $this->cm = new \OC\ContactsManager(); + $this->cm = new ContactsManager(); } - public function searchProvider() { + public static function searchProvider(): array { $search1 = [ 0 => [ 'N' => [0 => '', 1 => 'Jan', 2 => 'Jansen', 3 => '', 4 => '',], @@ -153,7 +155,7 @@ class ContactsManagerTest extends \Test\TestCase { $addressbook->expects($this->any()) ->method('getPermissions') - ->willReturn(\OCP\Constants::PERMISSION_ALL); + ->willReturn(Constants::PERMISSION_ALL); $addressbook->expects($this->once()) ->method('delete') @@ -176,7 +178,7 @@ class ContactsManagerTest extends \Test\TestCase { $addressbook->expects($this->any()) ->method('getPermissions') - ->willReturn(\OCP\Constants::PERMISSION_READ); + ->willReturn(Constants::PERMISSION_READ); $addressbook->expects($this->never()) ->method('delete'); @@ -216,7 +218,7 @@ class ContactsManagerTest extends \Test\TestCase { $addressbook->expects($this->any()) ->method('getPermissions') - ->willReturn(\OCP\Constants::PERMISSION_ALL); + ->willReturn(Constants::PERMISSION_ALL); $addressbook->expects($this->once()) ->method('createOrUpdate') @@ -239,7 +241,7 @@ class ContactsManagerTest extends \Test\TestCase { $addressbook->expects($this->any()) ->method('getPermissions') - ->willReturn(\OCP\Constants::PERMISSION_READ); + ->willReturn(Constants::PERMISSION_READ); $addressbook->expects($this->never()) ->method('createOrUpdate'); diff --git a/tests/lib/DB/AdapterTest.php b/tests/lib/DB/AdapterTest.php index 99b7cf4e099..bf95ad26a97 100644 --- a/tests/lib/DB/AdapterTest.php +++ b/tests/lib/DB/AdapterTest.php @@ -6,6 +6,8 @@ namespace Test\DB; +use OCP\IDBConnection; +use OCP\Server; use Test\TestCase; class AdapterTest extends TestCase { @@ -13,8 +15,8 @@ class AdapterTest extends TestCase { private $connection; public function setUp(): void { - $this->connection = \OC::$server->getDatabaseConnection(); - $this->appId = uniqid('test_db_adapter', true); + $this->connection = Server::get(IDBConnection::class); + $this->appId = substr(uniqid('test_db_adapter', true), 0, 32); } public function tearDown(): void { diff --git a/tests/lib/DB/ConnectionFactoryTest.php b/tests/lib/DB/ConnectionFactoryTest.php index 23bde34a8fb..31dd8037964 100644 --- a/tests/lib/DB/ConnectionFactoryTest.php +++ b/tests/lib/DB/ConnectionFactoryTest.php @@ -12,7 +12,7 @@ use OCP\ICacheFactory; use Test\TestCase; class ConnectionFactoryTest extends TestCase { - public function splitHostFromPortAndSocketData() { + public static function splitHostFromPortAndSocketData(): array { return [ ['127.0.0.1', ['host' => '127.0.0.1']], ['db.example.org', ['host' => 'db.example.org']], diff --git a/tests/lib/DB/Exception/DbalExceptionTest.php b/tests/lib/DB/Exception/DbalExceptionTest.php index 470beff9080..c37e65aea0e 100644 --- a/tests/lib/DB/Exception/DbalExceptionTest.php +++ b/tests/lib/DB/Exception/DbalExceptionTest.php @@ -44,7 +44,7 @@ class DbalExceptionTest extends \Test\TestCase { $this->assertSame($reason, $result->getReason()); } - public function dataDriverException(): array { + public static function dataDriverException(): array { return [ [LockWaitTimeoutException::class, DbalException::REASON_LOCK_WAIT_TIMEOUT], [ForeignKeyConstraintViolationException::class, DbalException::REASON_FOREIGN_KEY_VIOLATION], diff --git a/tests/lib/DB/MigrationsTest.php b/tests/lib/DB/MigrationsTest.php index 57ffb91e37e..6a730d5290c 100644 --- a/tests/lib/DB/MigrationsTest.php +++ b/tests/lib/DB/MigrationsTest.php @@ -175,7 +175,7 @@ class MigrationsTest extends \Test\TestCase { $this->migrationService->executeStep('20170130180000'); } - public function dataGetMigration() { + public static function dataGetMigration(): array { return [ ['current', '20170130180001'], ['prev', '20170130180000'], @@ -234,7 +234,7 @@ class MigrationsTest extends \Test\TestCase { ]; $this->migrationService->expects($this->exactly(2)) ->method('executeStep') - ->willReturnCallback(function () use (&$calls) { + ->willReturnCallback(function () use (&$calls): void { $expected = array_shift($calls); $this->assertEquals($expected, func_get_args()); }); diff --git a/tests/lib/DB/MigratorTest.php b/tests/lib/DB/MigratorTest.php index c6afe5a053a..26b0e000cf6 100644 --- a/tests/lib/DB/MigratorTest.php +++ b/tests/lib/DB/MigratorTest.php @@ -16,8 +16,10 @@ use OC\DB\Migrator; use OC\DB\OracleMigrator; use OC\DB\SQLiteMigrator; use OCP\DB\Types; +use OCP\EventDispatcher\IEventDispatcher; use OCP\IConfig; use OCP\IDBConnection; +use OCP\Server; /** * Class MigratorTest @@ -46,15 +48,15 @@ class MigratorTest extends \Test\TestCase { protected function setUp(): void { parent::setUp(); - $this->config = \OC::$server->getConfig(); - $this->connection = \OC::$server->get(\OC\DB\Connection::class); + $this->config = Server::get(IConfig::class); + $this->connection = Server::get(\OC\DB\Connection::class); $this->tableName = $this->getUniqueTableName(); $this->tableNameTmp = $this->getUniqueTableName(); } private function getMigrator(): Migrator { - $dispatcher = \OC::$server->get(\OCP\EventDispatcher\IEventDispatcher::class); + $dispatcher = Server::get(IEventDispatcher::class); if ($this->connection->getDatabaseProvider() === IDBConnection::PLATFORM_SQLITE) { return new SQLiteMigrator($this->connection, $this->config, $dispatcher); } elseif ($this->connection->getDatabaseProvider() === IDBConnection::PLATFORM_ORACLE) { @@ -261,7 +263,7 @@ class MigratorTest extends \Test\TestCase { $this->assertTrue($startSchema->getTable($this->tableNameTmp)->hasForeignKey($fkName)); } - public function dataNotNullEmptyValuesFailOracle(): array { + public static function dataNotNullEmptyValuesFailOracle(): array { return [ [ParameterType::BOOLEAN, true, Types::BOOLEAN, false], [ParameterType::BOOLEAN, false, Types::BOOLEAN, true], diff --git a/tests/lib/DB/QueryBuilder/ExpressionBuilderDBTest.php b/tests/lib/DB/QueryBuilder/ExpressionBuilderDBTest.php index 392fe9ff937..87fc4273dde 100644 --- a/tests/lib/DB/QueryBuilder/ExpressionBuilderDBTest.php +++ b/tests/lib/DB/QueryBuilder/ExpressionBuilderDBTest.php @@ -11,6 +11,7 @@ use OC\DB\QueryBuilder\Literal; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\DB\Types; use OCP\IConfig; +use OCP\IDBConnection; use OCP\Server; use Test\TestCase; @@ -25,12 +26,12 @@ class ExpressionBuilderDBTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->connection = \OC::$server->getDatabaseConnection(); + $this->connection = Server::get(IDBConnection::class); $this->prepareTestingTable(); } - public function likeProvider() { - $connection = \OC::$server->getDatabaseConnection(); + public static function likeProvider(): array { + $connection = Server::get(IDBConnection::class); return [ ['foo', 'bar', false], @@ -65,8 +66,8 @@ class ExpressionBuilderDBTest extends TestCase { $this->assertEquals($match, $column); } - public function ilikeProvider() { - $connection = \OC::$server->getDatabaseConnection(); + public static function ilikeProvider(): array { + $connection = Server::get(IDBConnection::class); return [ ['foo', 'bar', false], diff --git a/tests/lib/DB/QueryBuilder/ExpressionBuilderTest.php b/tests/lib/DB/QueryBuilder/ExpressionBuilderTest.php index c14c55e6d02..aa6428b0ca8 100644 --- a/tests/lib/DB/QueryBuilder/ExpressionBuilderTest.php +++ b/tests/lib/DB/QueryBuilder/ExpressionBuilderTest.php @@ -10,6 +10,8 @@ namespace Test\DB\QueryBuilder; use Doctrine\DBAL\Query\Expression\ExpressionBuilder as DoctrineExpressionBuilder; use OC\DB\QueryBuilder\ExpressionBuilder\ExpressionBuilder; use OCP\DB\QueryBuilder\IQueryBuilder; +use OCP\IDBConnection; +use OCP\Server; use Psr\Log\LoggerInterface; use Test\TestCase; @@ -39,8 +41,8 @@ class ExpressionBuilderTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->connection = \OC::$server->getDatabaseConnection(); - $this->internalConnection = \OC::$server->get(\OC\DB\Connection::class); + $this->connection = Server::get(IDBConnection::class); + $this->internalConnection = Server::get(\OC\DB\Connection::class); $this->logger = $this->createMock(LoggerInterface::class); $queryBuilder = $this->createMock(IQueryBuilder::class); @@ -50,8 +52,8 @@ class ExpressionBuilderTest extends TestCase { $this->doctrineExpressionBuilder = new DoctrineExpressionBuilder($this->internalConnection); } - public function dataComparison() { - $valueSets = $this->dataComparisons(); + public static function dataComparison(): array { + $valueSets = self::dataComparisons(); $comparisonOperators = ['=', '<>', '<', '>', '<=', '>=']; $testSets = []; @@ -82,7 +84,7 @@ class ExpressionBuilderTest extends TestCase { ); } - public function dataComparisons() { + public static function dataComparisons(): array { return [ ['value', false, 'value', false], ['value', false, 'value', true], @@ -213,7 +215,7 @@ class ExpressionBuilderTest extends TestCase { ); } - public function dataLike() { + public static function dataLike(): array { return [ ['value', false], ['value', true], @@ -250,7 +252,7 @@ class ExpressionBuilderTest extends TestCase { ); } - public function dataIn() { + public static function dataIn(): array { return [ ['value', false], ['value', true], @@ -317,7 +319,7 @@ class ExpressionBuilderTest extends TestCase { return [$doctrineInput, $ocInput]; } - public function dataLiteral() { + public static function dataLiteral(): array { return [ ['value', null], ['1', null], @@ -345,7 +347,7 @@ class ExpressionBuilderTest extends TestCase { ); } - public function dataClobComparisons() { + public static function dataClobComparisons(): array { return [ ['eq', '5', IQueryBuilder::PARAM_STR, false, 3], ['eq', '5', IQueryBuilder::PARAM_STR, true, 1], diff --git a/tests/lib/DB/QueryBuilder/FunctionBuilderTest.php b/tests/lib/DB/QueryBuilder/FunctionBuilderTest.php index f3007ace85c..6dc57879dd7 100644 --- a/tests/lib/DB/QueryBuilder/FunctionBuilderTest.php +++ b/tests/lib/DB/QueryBuilder/FunctionBuilderTest.php @@ -8,6 +8,8 @@ namespace Test\DB\QueryBuilder; use OC\DB\QueryBuilder\Literal; use OCP\DB\QueryBuilder\IQueryBuilder; +use OCP\IDBConnection; +use OCP\Server; use Test\TestCase; /** @@ -24,7 +26,7 @@ class FunctionBuilderTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->connection = \OC::$server->getDatabaseConnection(); + $this->connection = Server::get(IDBConnection::class); } /** @@ -49,7 +51,7 @@ class FunctionBuilderTest extends TestCase { $this->assertEquals($return, $column); } - public function providerTestConcatString(): array { + public static function providerTestConcatString(): array { return [ '1 column: string param unicode' => [function ($q) { @@ -323,7 +325,7 @@ class FunctionBuilderTest extends TestCase { $this->assertGreaterThan(1, $column); } - public function octetLengthProvider() { + public static function octetLengthProvider(): array { return [ ['', 0], ['foobar', 6], @@ -348,7 +350,7 @@ class FunctionBuilderTest extends TestCase { $this->assertEquals($bytes, $column); } - public function charLengthProvider() { + public static function charLengthProvider(): array { return [ ['', 0], ['foobar', 6], diff --git a/tests/lib/DB/QueryBuilder/Partitioned/JoinConditionTest.php b/tests/lib/DB/QueryBuilder/Partitioned/JoinConditionTest.php index a8ebf11c2c2..3d34ad389bc 100644 --- a/tests/lib/DB/QueryBuilder/Partitioned/JoinConditionTest.php +++ b/tests/lib/DB/QueryBuilder/Partitioned/JoinConditionTest.php @@ -22,7 +22,7 @@ class JoinConditionTest extends TestCase { parent::setUp(); } - public function platformProvider(): array { + public static function platformProvider(): array { return [ [IDBConnection::PLATFORM_SQLITE], [IDBConnection::PLATFORM_POSTGRES], diff --git a/tests/lib/DB/QueryBuilder/QueryBuilderTest.php b/tests/lib/DB/QueryBuilder/QueryBuilderTest.php index 508748f13b2..05913b87e4e 100644 --- a/tests/lib/DB/QueryBuilder/QueryBuilderTest.php +++ b/tests/lib/DB/QueryBuilder/QueryBuilderTest.php @@ -17,6 +17,7 @@ use OCP\DB\IResult; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\DB\QueryBuilder\IQueryFunction; use OCP\IDBConnection; +use OCP\Server; use Psr\Log\LoggerInterface; /** @@ -42,7 +43,7 @@ class QueryBuilderTest extends \Test\TestCase { protected function setUp(): void { parent::setUp(); - $this->connection = \OC::$server->getDatabaseConnection(); + $this->connection = Server::get(IDBConnection::class); $this->config = $this->createMock(SystemConfig::class); $this->logger = $this->createMock(LoggerInterface::class); $this->queryBuilder = new QueryBuilder($this->connection, $this->config, $this->logger); @@ -88,7 +89,7 @@ class QueryBuilderTest extends \Test\TestCase { ->execute(); } - public function dataFirstResult() { + public static function dataFirstResult(): array { return [ [0, [99, 98, 97, 96, 95, 94, 93, 92, 91]], [0, [99, 98, 97, 96, 95, 94, 93, 92, 91]], @@ -124,7 +125,7 @@ class QueryBuilderTest extends \Test\TestCase { $this->deleteTestingRows(); } - public function dataMaxResults() { + public static function dataMaxResults(): array { return [ [null, [99, 98, 97, 96, 95, 94, 93, 92, 91]], // Limit 0 gives mixed results: either all entries or none is returned @@ -161,10 +162,10 @@ class QueryBuilderTest extends \Test\TestCase { $this->deleteTestingRows(); } - public function dataSelect() { + public function dataSelect(): array { $config = $this->createMock(SystemConfig::class); $logger = $this->createMock(LoggerInterface::class); - $queryBuilder = new QueryBuilder(\OC::$server->getDatabaseConnection(), $config, $logger); + $queryBuilder = new QueryBuilder(Server::get(IDBConnection::class), $config, $logger); return [ // select('column1') [['configvalue'], ['configvalue' => '99']], @@ -229,10 +230,10 @@ class QueryBuilderTest extends \Test\TestCase { $this->deleteTestingRows(); } - public function dataSelectAlias() { + public function dataSelectAlias(): array { $config = $this->createMock(SystemConfig::class); $logger = $this->createMock(LoggerInterface::class); - $queryBuilder = new QueryBuilder(\OC::$server->getDatabaseConnection(), $config, $logger); + $queryBuilder = new QueryBuilder(Server::get(IDBConnection::class), $config, $logger); return [ ['configvalue', 'cv', ['cv' => '99']], [$queryBuilder->expr()->literal('column1'), 'thing', ['thing' => 'column1']], @@ -338,10 +339,10 @@ class QueryBuilderTest extends \Test\TestCase { $this->deleteTestingRows('testFirstResult2'); } - public function dataAddSelect() { + public function dataAddSelect(): array { $config = $this->createMock(SystemConfig::class); $logger = $this->createMock(LoggerInterface::class); - $queryBuilder = new QueryBuilder(\OC::$server->getDatabaseConnection(), $config, $logger); + $queryBuilder = new QueryBuilder(Server::get(IDBConnection::class), $config, $logger); return [ // addSelect('column1') [['configvalue'], ['appid' => 'testFirstResult', 'configvalue' => '99']], @@ -408,7 +409,7 @@ class QueryBuilderTest extends \Test\TestCase { $this->deleteTestingRows(); } - public function dataDelete() { + public static function dataDelete(): array { return [ ['data', null, ['table' => '`*PREFIX*data`', 'alias' => null], '`*PREFIX*data`'], ['data', 't', ['table' => '`*PREFIX*data`', 'alias' => 't'], '`*PREFIX*data` t'], @@ -437,7 +438,7 @@ class QueryBuilderTest extends \Test\TestCase { ); } - public function dataUpdate() { + public static function dataUpdate(): array { return [ ['data', null, ['table' => '`*PREFIX*data`', 'alias' => null], '`*PREFIX*data`'], ['data', 't', ['table' => '`*PREFIX*data`', 'alias' => 't'], '`*PREFIX*data` t'], @@ -466,7 +467,7 @@ class QueryBuilderTest extends \Test\TestCase { ); } - public function dataInsert() { + public static function dataInsert(): array { return [ ['data', ['table' => '`*PREFIX*data`'], '`*PREFIX*data`'], ]; @@ -493,10 +494,10 @@ class QueryBuilderTest extends \Test\TestCase { ); } - public function dataFrom() { + public function dataFrom(): array { $config = $this->createMock(SystemConfig::class); $logger = $this->createMock(LoggerInterface::class); - $qb = new QueryBuilder(\OC::$server->getDatabaseConnection(), $config, $logger); + $qb = new QueryBuilder(Server::get(IDBConnection::class), $config, $logger); return [ [$qb->createFunction('(' . $qb->select('*')->from('test')->getSQL() . ')'), 'q', null, null, [ ['table' => '(SELECT * FROM `*PREFIX*test`)', 'alias' => '`q`'] @@ -541,7 +542,7 @@ class QueryBuilderTest extends \Test\TestCase { ); } - public function dataJoin() { + public static function dataJoin(): array { return [ [ 'd1', 'data2', null, null, @@ -622,7 +623,7 @@ class QueryBuilderTest extends \Test\TestCase { ); } - public function dataLeftJoin() { + public static function dataLeftJoin(): array { return [ [ 'd1', 'data2', null, null, @@ -672,7 +673,7 @@ class QueryBuilderTest extends \Test\TestCase { ); } - public function dataRightJoin() { + public static function dataRightJoin(): array { return [ [ 'd1', 'data2', null, null, @@ -722,7 +723,7 @@ class QueryBuilderTest extends \Test\TestCase { ); } - public function dataSet() { + public static function dataSet(): array { return [ ['column1', new Literal('value'), null, null, ['`column1` = value'], '`column1` = value'], ['column1', new Parameter(':param'), null, null, ['`column1` = :param'], '`column1` = :param'], @@ -759,7 +760,7 @@ class QueryBuilderTest extends \Test\TestCase { ); } - public function dataWhere() { + public static function dataWhere(): array { return [ [['where1'], new CompositeExpression('AND', ['where1']), 'where1'], [['where1', 'where2'], new CompositeExpression('AND', ['where1', 'where2']), '(where1) AND (where2)'], @@ -816,7 +817,7 @@ class QueryBuilderTest extends \Test\TestCase { ); } - public function dataOrWhere() { + public static function dataOrWhere(): array { return [ [['where1'], new CompositeExpression('OR', ['where1']), 'where1'], [['where1', 'where2'], new CompositeExpression('OR', ['where1', 'where2']), '(where1) OR (where2)'], @@ -848,7 +849,7 @@ class QueryBuilderTest extends \Test\TestCase { ); } - public function dataGroupBy() { + public static function dataGroupBy(): array { return [ [['column1'], ['`column1`'], '`column1`'], [['column1', 'column2'], ['`column1`', '`column2`'], '`column1`, `column2`'], @@ -880,7 +881,7 @@ class QueryBuilderTest extends \Test\TestCase { ); } - public function dataAddGroupBy() { + public static function dataAddGroupBy(): array { return [ [['column2'], ['`column1`', '`column2`'], '`column1`, `column2`'], [['column2', 'column3'], ['`column1`', '`column2`', '`column3`'], '`column1`, `column2`, `column3`'], @@ -913,7 +914,7 @@ class QueryBuilderTest extends \Test\TestCase { ); } - public function dataSetValue() { + public static function dataSetValue(): array { return [ ['column', 'value', ['`column`' => 'value'], '(`column`) VALUES(value)'], ]; @@ -967,7 +968,7 @@ class QueryBuilderTest extends \Test\TestCase { ); } - public function dataHaving() { + public static function dataHaving(): array { return [ [['condition1'], new CompositeExpression('AND', ['condition1']), 'HAVING condition1'], [['condition1', 'condition2'], new CompositeExpression('AND', ['condition1', 'condition2']), 'HAVING (condition1) AND (condition2)'], @@ -1008,7 +1009,7 @@ class QueryBuilderTest extends \Test\TestCase { ); } - public function dataAndHaving() { + public static function dataAndHaving(): array { return [ [['condition2'], new CompositeExpression('AND', ['condition1', 'condition2']), 'HAVING (condition1) AND (condition2)'], [['condition2', 'condition3'], new CompositeExpression('AND', ['condition1', 'condition2', 'condition3']), 'HAVING (condition1) AND (condition2) AND (condition3)'], @@ -1050,7 +1051,7 @@ class QueryBuilderTest extends \Test\TestCase { ); } - public function dataOrHaving() { + public static function dataOrHaving(): array { return [ [['condition2'], new CompositeExpression('OR', ['condition1', 'condition2']), 'HAVING (condition1) OR (condition2)'], [['condition2', 'condition3'], new CompositeExpression('OR', ['condition1', 'condition2', 'condition3']), 'HAVING (condition1) OR (condition2) OR (condition3)'], @@ -1092,7 +1093,7 @@ class QueryBuilderTest extends \Test\TestCase { ); } - public function dataOrderBy() { + public static function dataOrderBy(): array { return [ ['column', null, ['`column` ASC'], 'ORDER BY `column` ASC'], ['column', 'ASC', ['`column` ASC'], 'ORDER BY `column` ASC'], @@ -1122,7 +1123,7 @@ class QueryBuilderTest extends \Test\TestCase { ); } - public function dataAddOrderBy() { + public static function dataAddOrderBy(): array { return [ ['column2', null, null, ['`column1` ASC', '`column2` ASC'], 'ORDER BY `column1` ASC, `column2` ASC'], ['column2', null, 'ASC', ['`column1` ASC', '`column2` ASC'], 'ORDER BY `column1` ASC, `column2` ASC'], @@ -1197,10 +1198,10 @@ class QueryBuilderTest extends \Test\TestCase { } } - public function dataGetTableName() { + public function dataGetTableName(): array { $config = $this->createMock(SystemConfig::class); $logger = $this->createMock(LoggerInterface::class); - $qb = new QueryBuilder(\OC::$server->getDatabaseConnection(), $config, $logger); + $qb = new QueryBuilder(Server::get(IDBConnection::class), $config, $logger); return [ ['*PREFIX*table', null, '`*PREFIX*table`'], ['*PREFIX*table', true, '`*PREFIX*table`'], @@ -1234,7 +1235,7 @@ class QueryBuilderTest extends \Test\TestCase { ); } - public function dataGetColumnName() { + public static function dataGetColumnName(): array { return [ ['column', '', '`column`'], ['column', 'a', '`a`.`column`'], @@ -1427,7 +1428,7 @@ class QueryBuilderTest extends \Test\TestCase { $this->logger ->expects($this->once()) ->method('error') - ->willReturnCallback(function ($message, $parameters) { + ->willReturnCallback(function ($message, $parameters): void { $this->assertInstanceOf(QueryException::class, $parameters['exception']); $this->assertSame( 'More than 1000 expressions in a list are not allowed on Oracle.', @@ -1462,7 +1463,7 @@ class QueryBuilderTest extends \Test\TestCase { $this->logger ->expects($this->once()) ->method('error') - ->willReturnCallback(function ($message, $parameters) { + ->willReturnCallback(function ($message, $parameters): void { $this->assertInstanceOf(QueryException::class, $parameters['exception']); $this->assertSame( 'The number of parameters must not exceed 65535. Restriction by PostgreSQL.', diff --git a/tests/lib/DB/QueryBuilder/QuoteHelperTest.php b/tests/lib/DB/QueryBuilder/QuoteHelperTest.php index 3c2e33c28ea..eb09055033e 100644 --- a/tests/lib/DB/QueryBuilder/QuoteHelperTest.php +++ b/tests/lib/DB/QueryBuilder/QuoteHelperTest.php @@ -23,7 +23,7 @@ class QuoteHelperTest extends \Test\TestCase { $this->helper = new QuoteHelper(); } - public function dataQuoteColumnName() { + public static function dataQuoteColumnName(): array { return [ ['column', '`column`'], [new Literal('literal'), 'literal'], @@ -48,7 +48,7 @@ class QuoteHelperTest extends \Test\TestCase { ); } - public function dataQuoteColumnNames() { + public static function dataQuoteColumnNames(): array { return [ // Single case ['d.column', '`d`.`column`'], diff --git a/tests/lib/DateTimeFormatterTest.php b/tests/lib/DateTimeFormatterTest.php index 924cac9d399..84319512f58 100644 --- a/tests/lib/DateTimeFormatterTest.php +++ b/tests/lib/DateTimeFormatterTest.php @@ -7,6 +7,9 @@ namespace Test; +use OC\DateTimeFormatter; +use OCP\Util; + class DateTimeFormatterTest extends TestCase { /** @var \OC\DateTimeFormatter */ protected $formatter; @@ -33,26 +36,26 @@ class DateTimeFormatterTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->formatter = new \OC\DateTimeFormatter(new \DateTimeZone('UTC'), \OCP\Util::getL10N('lib', 'en')); + $this->formatter = new DateTimeFormatter(new \DateTimeZone('UTC'), Util::getL10N('lib', 'en')); } - protected function getTimestampAgo($time, $seconds = 0, $minutes = 0, $hours = 0, $days = 0, $years = 0) { + protected static function getTimestampAgo($time, $seconds = 0, $minutes = 0, $hours = 0, $days = 0, $years = 0) { return $time - $seconds - $minutes * 60 - $hours * 3600 - $days * 24 * 3600 - $years * 365 * 24 * 3600; } - public function formatTimeSpanData() { + public static function formatTimeSpanData(): array { $time = 1416916800; // Use a fixed timestamp so we don't switch days/years with the getTimestampAgo - $deL10N = \OCP\Util::getL10N('lib', 'de'); + $deL10N = Util::getL10N('lib', 'de'); return [ ['seconds ago', $time, $time], ['in a few seconds', $time + 5 , $time], - ['1 minute ago', $this->getTimestampAgo($time, 30, 1), $time], - ['15 minutes ago', $this->getTimestampAgo($time, 30, 15), $time], - ['in 15 minutes', $time, $this->getTimestampAgo($time, 30, 15)], - ['1 hour ago', $this->getTimestampAgo($time, 30, 15, 1), $time], - ['3 hours ago', $this->getTimestampAgo($time, 30, 15, 3), $time], - ['in 3 hours', $time, $this->getTimestampAgo($time, 30, 15, 3)], - ['4 days ago', $this->getTimestampAgo($time, 30, 15, 3, 4), $time], + ['1 minute ago', self::getTimestampAgo($time, 30, 1), $time], + ['15 minutes ago', self::getTimestampAgo($time, 30, 15), $time], + ['in 15 minutes', $time, self::getTimestampAgo($time, 30, 15)], + ['1 hour ago', self::getTimestampAgo($time, 30, 15, 1), $time], + ['3 hours ago', self::getTimestampAgo($time, 30, 15, 3), $time], + ['in 3 hours', $time, self::getTimestampAgo($time, 30, 15, 3)], + ['4 days ago', self::getTimestampAgo($time, 30, 15, 3, 4), $time], ['seconds ago', new \DateTime('Wed, 02 Oct 2013 23:59:58 +0000'), new \DateTime('Wed, 02 Oct 2013 23:59:59 +0000')], ['seconds ago', new \DateTime('Wed, 02 Oct 2013 23:59:00 +0000'), new \DateTime('Wed, 02 Oct 2013 23:59:59 +0000')], @@ -81,29 +84,29 @@ class DateTimeFormatterTest extends TestCase { $this->assertEquals((string)$expected, (string)$this->formatter->formatTimeSpan($timestamp, $compare, $locale)); } - public function formatDateSpanData() { + public static function formatDateSpanData(): array { $time = 1416916800; // Use a fixed timestamp so we don't switch days/years with the getTimestampAgo - $deL10N = \OCP\Util::getL10N('lib', 'de'); + $deL10N = Util::getL10N('lib', 'de'); return [ // Normal testing - ['today', $this->getTimestampAgo($time, 30, 15), $time], - ['yesterday', $this->getTimestampAgo($time, 0, 0, 0, 1), $time], - ['tomorrow', $time, $this->getTimestampAgo($time, 0, 0, 0, 1)], - ['4 days ago', $this->getTimestampAgo($time, 0, 0, 0, 4), $time], - ['in 4 days', $time, $this->getTimestampAgo($time, 0, 0, 0, 4)], - ['5 months ago', $this->getTimestampAgo($time, 0, 0, 0, 155), $time], - ['next month', $time, $this->getTimestampAgo($time, 0, 0, 0, 32)], - ['in 5 months', $time, $this->getTimestampAgo($time, 0, 0, 0, 155)], - ['2 years ago', $this->getTimestampAgo($time, 0, 0, 0, 0, 2), $time], - ['next year', $time, $this->getTimestampAgo($time, 0, 0, 0, 0, 1)], - ['in 2 years', $time, $this->getTimestampAgo($time, 0, 0, 0, 0, 2)], + ['today', self::getTimestampAgo($time, 30, 15), $time], + ['yesterday', self::getTimestampAgo($time, 0, 0, 0, 1), $time], + ['tomorrow', $time, self::getTimestampAgo($time, 0, 0, 0, 1)], + ['4 days ago', self::getTimestampAgo($time, 0, 0, 0, 4), $time], + ['in 4 days', $time, self::getTimestampAgo($time, 0, 0, 0, 4)], + ['5 months ago', self::getTimestampAgo($time, 0, 0, 0, 155), $time], + ['next month', $time, self::getTimestampAgo($time, 0, 0, 0, 32)], + ['in 5 months', $time, self::getTimestampAgo($time, 0, 0, 0, 155)], + ['2 years ago', self::getTimestampAgo($time, 0, 0, 0, 0, 2), $time], + ['next year', $time, self::getTimestampAgo($time, 0, 0, 0, 0, 1)], + ['in 2 years', $time, self::getTimestampAgo($time, 0, 0, 0, 0, 2)], // Test with compare timestamp - ['today', $this->getTimestampAgo($time, 0, 0, 0, 0, 1), $this->getTimestampAgo($time, 0, 0, 0, 0, 1)], - ['yesterday', $this->getTimestampAgo($time, 30, 15, 3, 1, 1), $this->getTimestampAgo($time, 0, 0, 0, 0, 1)], - ['4 days ago', $this->getTimestampAgo($time, 30, 15, 3, 4, 1), $this->getTimestampAgo($time, 0, 0, 0, 0, 1)], - ['5 months ago', $this->getTimestampAgo($time, 30, 15, 3, 155, 1), $this->getTimestampAgo($time, 0, 0, 0, 0, 1)], - ['2 years ago', $this->getTimestampAgo($time, 30, 15, 3, 35, 3), $this->getTimestampAgo($time, 0, 0, 0, 0, 1)], + ['today', self::getTimestampAgo($time, 0, 0, 0, 0, 1), self::getTimestampAgo($time, 0, 0, 0, 0, 1)], + ['yesterday', self::getTimestampAgo($time, 30, 15, 3, 1, 1), self::getTimestampAgo($time, 0, 0, 0, 0, 1)], + ['4 days ago', self::getTimestampAgo($time, 30, 15, 3, 4, 1), self::getTimestampAgo($time, 0, 0, 0, 0, 1)], + ['5 months ago', self::getTimestampAgo($time, 30, 15, 3, 155, 1), self::getTimestampAgo($time, 0, 0, 0, 0, 1)], + ['2 years ago', self::getTimestampAgo($time, 30, 15, 3, 35, 3), self::getTimestampAgo($time, 0, 0, 0, 0, 1)], // Test translations [$deL10N->t('today'), new \DateTime('Wed, 02 Oct 2013 12:00:00 +0000'), new \DateTime('Wed, 02 Oct 2013 23:59:59 +0000'), $deL10N], @@ -147,7 +150,7 @@ class DateTimeFormatterTest extends TestCase { $this->assertEquals((string)$expected, (string)$this->formatter->formatDateSpan($timestamp, $compare, $locale)); } - public function formatDateData() { + public static function formatDateData(): array { return [ [1102831200, 'December 12, 2004'], ]; @@ -160,7 +163,7 @@ class DateTimeFormatterTest extends TestCase { $this->assertEquals($expected, (string)$this->formatter->formatDate($timestamp)); } - public function formatDateTimeData() { + public static function formatDateTimeData(): array { return [ [1350129205, null, "October 13, 2012, 11:53:25\xE2\x80\xAFAM UTC"], [1350129205, new \DateTimeZone('Europe/Berlin'), "October 13, 2012, 1:53:25\xE2\x80\xAFPM GMT+2"], diff --git a/tests/lib/DirectEditing/ManagerTest.php b/tests/lib/DirectEditing/ManagerTest.php index e09a87e448e..1b38cfafaa6 100644 --- a/tests/lib/DirectEditing/ManagerTest.php +++ b/tests/lib/DirectEditing/ManagerTest.php @@ -22,6 +22,7 @@ use OCP\IUser; use OCP\IUserSession; use OCP\L10N\IFactory; use OCP\Security\ISecureRandom; +use OCP\Server; use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; @@ -124,7 +125,7 @@ class ManagerTest extends TestCase { $this->editor = new Editor(); $this->random = $this->createMock(ISecureRandom::class); - $this->connection = \OC::$server->getDatabaseConnection(); + $this->connection = Server::get(IDBConnection::class); $this->userSession = $this->createMock(IUserSession::class); $this->rootFolder = $this->createMock(IRootFolder::class); $this->userFolder = $this->createMock(Folder::class); diff --git a/tests/lib/EmojiHelperTest.php b/tests/lib/EmojiHelperTest.php index 9ad56b32472..517d8655e53 100644 --- a/tests/lib/EmojiHelperTest.php +++ b/tests/lib/EmojiHelperTest.php @@ -38,10 +38,7 @@ class EmojiHelperTest extends TestCase { $this->assertEquals($expected, $this->helper->doesPlatformSupportEmoji()); } - /** - * @return array - */ - public function doesPlatformSupportEmojiDataProvider(): array { + public static function doesPlatformSupportEmojiDataProvider(): array { return [ [true, true], [false, false], @@ -60,7 +57,7 @@ class EmojiHelperTest extends TestCase { $this->assertEquals($expected, $actual); } - public function isValidSingleEmojiDataProvider(): array { + public static function isValidSingleEmojiDataProvider(): array { return [ ['📱📠', false], ['a', false], diff --git a/tests/lib/Encryption/DecryptAllTest.php b/tests/lib/Encryption/DecryptAllTest.php index 7385ff03785..fc8600b9fc6 100644 --- a/tests/lib/Encryption/DecryptAllTest.php +++ b/tests/lib/Encryption/DecryptAllTest.php @@ -217,7 +217,7 @@ class DecryptAllTest extends TestCase { ]; $instance->expects($this->exactly(2)) ->method('decryptUsersFiles') - ->willReturnCallback(function ($user) use (&$calls) { + ->willReturnCallback(function ($user) use (&$calls): void { $expected = array_shift($calls); $this->assertEquals($expected, $user); }); @@ -297,7 +297,7 @@ class DecryptAllTest extends TestCase { ]; $instance->expects($this->exactly(2)) ->method('decryptFile') - ->willReturnCallback(function ($path) use (&$calls) { + ->willReturnCallback(function ($path) use (&$calls): void { $expected = array_shift($calls); $this->assertEquals($expected, $path); }); @@ -387,7 +387,7 @@ class DecryptAllTest extends TestCase { $this->view->expects($this->once()) ->method('copy') ->with($path, $path . '.decrypted.42') - ->willReturnCallback(function () { + ->willReturnCallback(function (): void { throw new DecryptionFailedException(); }); diff --git a/tests/lib/Encryption/EncryptionWrapperTest.php b/tests/lib/Encryption/EncryptionWrapperTest.php index 1ac7342a3d8..342a7214e44 100644 --- a/tests/lib/Encryption/EncryptionWrapperTest.php +++ b/tests/lib/Encryption/EncryptionWrapperTest.php @@ -9,7 +9,10 @@ namespace Test\Encryption; use OC\Encryption\EncryptionWrapper; use OC\Encryption\Manager; +use OC\Files\Storage\Wrapper\Encryption; use OC\Memcache\ArrayCache; +use OCA\Files_Trashbin\Storage; +use OCP\Files\Mount\IMountPoint; use OCP\Files\Storage\IDisableEncryptionStorage; use OCP\Files\Storage\IStorage; use Psr\Log\LoggerInterface; @@ -55,7 +58,7 @@ class EncryptionWrapperTest extends TestCase { ]); } - $mount = $this->getMockBuilder('OCP\Files\Mount\IMountPoint') + $mount = $this->getMockBuilder(IMountPoint::class) ->disableOriginalConstructor() ->getMock(); @@ -63,16 +66,16 @@ class EncryptionWrapperTest extends TestCase { $this->assertEquals( $expectedWrapped, - $returnedStorage->instanceOfStorage('OC\Files\Storage\Wrapper\Encryption'), + $returnedStorage->instanceOfStorage(Encryption::class), 'Asserted that the storage is (not) wrapped with encryption' ); } - public function provideWrapStorage() { + public static function provideWrapStorage(): array { return [ // Wrap when not wrapped or not wrapped with storage [true, []], - [true, ['OCA\Files_Trashbin\Storage']], + [true, [Storage::class]], // Do not wrap shared storages [false, [IDisableEncryptionStorage::class]], diff --git a/tests/lib/Encryption/Keys/StorageTest.php b/tests/lib/Encryption/Keys/StorageTest.php index bc79c5771ca..348b0ecf10d 100644 --- a/tests/lib/Encryption/Keys/StorageTest.php +++ b/tests/lib/Encryption/Keys/StorageTest.php @@ -589,7 +589,7 @@ class StorageTest extends TestCase { 'user1/files_encryption/backup/test.encryptionModule.1234567', ]; $this->view->expects($this->exactly(2))->method('mkdir') - ->willReturnCallback(function ($path) use (&$calls) { + ->willReturnCallback(function ($path) use (&$calls): void { $expected = array_shift($calls); $this->assertEquals($expected, $path); }); diff --git a/tests/lib/Encryption/ManagerTest.php b/tests/lib/Encryption/ManagerTest.php index 8dd602349b6..c268540d8cd 100644 --- a/tests/lib/Encryption/ManagerTest.php +++ b/tests/lib/Encryption/ManagerTest.php @@ -6,6 +6,8 @@ */ namespace Test\Encryption; +use OC\Encryption\Exceptions\ModuleAlreadyExistsException; +use OC\Encryption\Exceptions\ModuleDoesNotExistsException; use OC\Encryption\Manager; use OC\Encryption\Util; use OC\Files\View; @@ -88,7 +90,7 @@ class ManagerTest extends TestCase { * @depends testModuleRegistration */ public function testModuleReRegistration($manager): void { - $this->expectException(\OC\Encryption\Exceptions\ModuleAlreadyExistsException::class); + $this->expectException(ModuleAlreadyExistsException::class); $this->expectExceptionMessage('Id "ID0" already used by encryption module "TestDummyModule0"'); $this->addNewEncryptionModule($manager, 0); @@ -105,7 +107,7 @@ class ManagerTest extends TestCase { public function testGetEncryptionModuleUnknown(): void { - $this->expectException(\OC\Encryption\Exceptions\ModuleDoesNotExistsException::class); + $this->expectException(ModuleDoesNotExistsException::class); $this->expectExceptionMessage('Module with ID: unknown does not exist.'); $this->config->expects($this->any())->method('getAppValue')->willReturn(true); diff --git a/tests/lib/Encryption/UpdateTest.php b/tests/lib/Encryption/UpdateTest.php index 2627e18601d..4f3de2b495d 100644 --- a/tests/lib/Encryption/UpdateTest.php +++ b/tests/lib/Encryption/UpdateTest.php @@ -1,4 +1,7 @@ <?php + +declare(strict_types=1); + /** * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -10,61 +13,67 @@ namespace Test\Encryption; use OC\Encryption\File; use OC\Encryption\Update; use OC\Encryption\Util; -use OC\Files\Mount\Manager; use OC\Files\View; use OCP\Encryption\IEncryptionModule; +use OCP\Files\File as OCPFile; +use OCP\Files\Folder; +use OCP\IUser; +use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; use Test\TestCase; class UpdateTest extends TestCase { - /** @var \OC\Encryption\Update */ - private $update; - - /** @var string */ - private $uid; - - /** @var \OC\Files\View | \PHPUnit\Framework\MockObject\MockObject */ - private $view; - - /** @var Util | \PHPUnit\Framework\MockObject\MockObject */ - private $util; - - /** @var \OC\Files\Mount\Manager | \PHPUnit\Framework\MockObject\MockObject */ - private $mountManager; - - /** @var \OC\Encryption\Manager | \PHPUnit\Framework\MockObject\MockObject */ - private $encryptionManager; - - /** @var \OCP\Encryption\IEncryptionModule | \PHPUnit\Framework\MockObject\MockObject */ - private $encryptionModule; - - /** @var \OC\Encryption\File | \PHPUnit\Framework\MockObject\MockObject */ - private $fileHelper; - - /** @var \PHPUnit\Framework\MockObject\MockObject|LoggerInterface */ - private $logger; + private string $uid; + private View&MockObject $view; + private Util&MockObject $util; + private \OC\Encryption\Manager&MockObject $encryptionManager; + private IEncryptionModule&MockObject $encryptionModule; + private File&MockObject $fileHelper; + private LoggerInterface&MockObject $logger; protected function setUp(): void { parent::setUp(); $this->view = $this->createMock(View::class); $this->util = $this->createMock(Util::class); - $this->mountManager = $this->createMock(Manager::class); $this->encryptionManager = $this->createMock(\OC\Encryption\Manager::class); $this->fileHelper = $this->createMock(File::class); $this->encryptionModule = $this->createMock(IEncryptionModule::class); $this->logger = $this->createMock(LoggerInterface::class); $this->uid = 'testUser1'; + } - $this->update = new Update( - $this->view, - $this->util, - $this->mountManager, - $this->encryptionManager, - $this->fileHelper, - $this->logger, - $this->uid); + private function getUserMock(string $uid): IUser&MockObject { + $user = $this->createMock(IUser::class); + $user->expects(self::any()) + ->method('getUID') + ->willReturn($uid); + return $user; + } + + private function getFileMock(string $path, string $owner): OCPFile&MockObject { + $node = $this->createMock(OCPFile::class); + $node->expects(self::atLeastOnce()) + ->method('getPath') + ->willReturn($path); + $node->expects(self::any()) + ->method('getOwner') + ->willReturn($this->getUserMock($owner)); + + return $node; + } + + private function getFolderMock(string $path, string $owner): Folder&MockObject { + $node = $this->createMock(Folder::class); + $node->expects(self::atLeastOnce()) + ->method('getPath') + ->willReturn($path); + $node->expects(self::any()) + ->method('getOwner') + ->willReturn($this->getUserMock($owner)); + + return $node; } /** @@ -76,18 +85,21 @@ class UpdateTest extends TestCase { * @param integer $numberOfFiles */ public function testUpdate($path, $isDir, $allFiles, $numberOfFiles): void { + $updateMock = $this->getUpdateMock(['getOwnerPath']); + $updateMock->expects($this->once())->method('getOwnerPath') + ->willReturnCallback(fn (OCPFile|Folder $node) => '/user/' . $node->getPath()); + $this->encryptionManager->expects($this->once()) ->method('getEncryptionModule') ->willReturn($this->encryptionModule); - $this->view->expects($this->once()) - ->method('is_dir') - ->willReturn($isDir); - if ($isDir) { $this->util->expects($this->once()) ->method('getAllFiles') ->willReturn($allFiles); + $node = $this->getFolderMock($path, 'user'); + } else { + $node = $this->getFileMock($path, 'user'); } $this->fileHelper->expects($this->exactly($numberOfFiles)) @@ -98,15 +110,10 @@ class UpdateTest extends TestCase { ->method('update') ->willReturn(true); - $this->update->update($path); + $updateMock->update($node); } - /** - * data provider for testUpdate() - * - * @return array - */ - public function dataTestUpdate() { + public static function dataTestUpdate(): array { return [ ['/user/files/foo', true, ['/user/files/foo/file1.txt', '/user/files/foo/file1.txt'], 2], ['/user/files/test.txt', false, [], 1], @@ -118,102 +125,66 @@ class UpdateTest extends TestCase { * * @param string $source * @param string $target - * @param boolean $encryptionEnabled */ - public function testPostRename($source, $target, $encryptionEnabled): void { - $updateMock = $this->getUpdateMock(['update', 'getOwnerPath']); + public function testPostRename($source, $target): void { + $updateMock = $this->getUpdateMock(['update','getOwnerPath']); - $this->encryptionManager->expects($this->once()) - ->method('isEnabled') - ->willReturn($encryptionEnabled); + $sourceNode = $this->getFileMock($source, 'user'); + $targetNode = $this->getFileMock($target, 'user'); - if (dirname($source) === dirname($target) || $encryptionEnabled === false) { + if (dirname($source) === dirname($target)) { $updateMock->expects($this->never())->method('getOwnerPath'); $updateMock->expects($this->never())->method('update'); } else { - $updateMock->expects($this->once()) - ->method('getOwnerPath') - ->willReturnCallback(function ($path) use ($target) { - $this->assertSame( - $target, - $path, - 'update needs to be executed for the target destination'); - return ['owner', $path]; - }); - $updateMock->expects($this->once())->method('update'); + $updateMock->expects($this->once())->method('update') + ->willReturnCallback(fn (OCPFile|Folder $node) => $this->assertSame( + $target, + $node->getPath(), + 'update needs to be executed for the target destination' + )); } - $updateMock->postRename(['oldpath' => $source, 'newpath' => $target]); + $updateMock->postRename($sourceNode, $targetNode); } - /** - * test data for testPostRename() - * - * @return array - */ - public function dataTestPostRename() { + public static function dataTestPostRename(): array { return [ - ['/test.txt', '/testNew.txt', true], - ['/test.txt', '/testNew.txt', false], - ['/folder/test.txt', '/testNew.txt', true], - ['/folder/test.txt', '/testNew.txt', false], - ['/folder/test.txt', '/testNew.txt', true], - ['/test.txt', '/folder/testNew.txt', false], + ['/test.txt', '/testNew.txt'], + ['/folder/test.txt', '/testNew.txt'], + ['/test.txt', '/folder/testNew.txt'], ]; } - - /** - * @dataProvider dataTestPostRestore - * - * @param boolean $encryptionEnabled - */ - public function testPostRestore($encryptionEnabled): void { + public function testPostRestore(): void { $updateMock = $this->getUpdateMock(['update']); - $this->encryptionManager->expects($this->once()) - ->method('isEnabled') - ->willReturn($encryptionEnabled); + $updateMock->expects($this->once())->method('update') + ->willReturnCallback(fn (OCPFile|Folder $node) => $this->assertSame( + '/folder/test.txt', + $node->getPath(), + 'update needs to be executed for the target destination' + )); - if ($encryptionEnabled) { - $updateMock->expects($this->once())->method('update'); - } else { - $updateMock->expects($this->never())->method('update'); - } - - $updateMock->postRestore(['filePath' => '/folder/test.txt']); - } - - /** - * test data for testPostRestore() - * - * @return array - */ - public function dataTestPostRestore() { - return [ - [true], - [false], - ]; + $updateMock->postRestore($this->getFileMock('/folder/test.txt', 'user')); } /** * create mock of the update method * * @param array $methods methods which should be set - * @return \OC\Encryption\Update | \PHPUnit\Framework\MockObject\MockObject */ - protected function getUpdateMock($methods) { - return $this->getMockBuilder('\OC\Encryption\Update') + protected function getUpdateMock(array $methods): Update&MockObject { + return $this->getMockBuilder(Update::class) ->setConstructorArgs( [ - $this->view, $this->util, - $this->mountManager, $this->encryptionManager, $this->fileHelper, $this->logger, $this->uid ] - )->setMethods($methods)->getMock(); + ) + ->onlyMethods($methods) + ->getMock(); } } diff --git a/tests/lib/Encryption/UtilTest.php b/tests/lib/Encryption/UtilTest.php index 62ef809a867..6f637bdac40 100644 --- a/tests/lib/Encryption/UtilTest.php +++ b/tests/lib/Encryption/UtilTest.php @@ -6,6 +6,7 @@ */ namespace Test\Encryption; +use OC\Encryption\Exceptions\EncryptionHeaderKeyExistsException; use OC\Encryption\Util; use OC\Files\View; use OCP\Encryption\IEncryptionModule; @@ -20,7 +21,7 @@ class UtilTest extends TestCase { * * @see https://bugs.php.net/bug.php?id=21641 */ - protected int $headerSize = 8192; + protected static int $headerSize = 8192; /** @var \PHPUnit\Framework\MockObject\MockObject */ protected $view; @@ -61,7 +62,7 @@ class UtilTest extends TestCase { $this->assertEquals($expected, $id); } - public function providesHeadersForEncryptionModule() { + public static function providesHeadersForEncryptionModule(): array { return [ ['', []], ['', ['1']], @@ -80,18 +81,18 @@ class UtilTest extends TestCase { $this->assertEquals($expected, $result); } - public function providesHeaders() { + public static function providesHeaders(): array { return [ - [str_pad('HBEGIN:oc_encryption_module:0:HEND', $this->headerSize, '-', STR_PAD_RIGHT) + [str_pad('HBEGIN:oc_encryption_module:0:HEND', self::$headerSize, '-', STR_PAD_RIGHT) , [], '0'], - [str_pad('HBEGIN:oc_encryption_module:0:custom_header:foo:HEND', $this->headerSize, '-', STR_PAD_RIGHT) + [str_pad('HBEGIN:oc_encryption_module:0:custom_header:foo:HEND', self::$headerSize, '-', STR_PAD_RIGHT) , ['custom_header' => 'foo'], '0'], ]; } public function testCreateHeaderFailed(): void { - $this->expectException(\OC\Encryption\Exceptions\EncryptionHeaderKeyExistsException::class); + $this->expectException(EncryptionHeaderKeyExistsException::class); $header = ['header1' => 1, 'header2' => 2, 'oc_encryption_module' => 'foo']; @@ -120,7 +121,7 @@ class UtilTest extends TestCase { ); } - public function providePathsForTestIsExcluded() { + public static function providePathsForTestIsExcluded(): array { return [ ['/files_encryption', '', true], ['files_encryption/foo.txt', '', true], @@ -152,7 +153,7 @@ class UtilTest extends TestCase { ); } - public function dataTestIsFile() { + public static function dataTestIsFile(): array { return [ ['/user/files/test.txt', true], ['/user/files', true], @@ -175,7 +176,7 @@ class UtilTest extends TestCase { $this->util->stripPartialFileExtension($path)); } - public function dataTestStripPartialFileExtension() { + public static function dataTestStripPartialFileExtension(): array { return [ ['/foo/test.txt', '/foo/test.txt'], ['/foo/test.txt.part', '/foo/test.txt'], @@ -196,17 +197,17 @@ class UtilTest extends TestCase { } } - public function dataTestParseRawHeader() { + public static function dataTestParseRawHeader(): array { return [ - [str_pad('HBEGIN:oc_encryption_module:0:HEND', $this->headerSize, '-', STR_PAD_RIGHT) + [str_pad('HBEGIN:oc_encryption_module:0:HEND', self::$headerSize, '-', STR_PAD_RIGHT) , [Util::HEADER_ENCRYPTION_MODULE_KEY => '0']], - [str_pad('HBEGIN:oc_encryption_module:0:custom_header:foo:HEND', $this->headerSize, '-', STR_PAD_RIGHT) + [str_pad('HBEGIN:oc_encryption_module:0:custom_header:foo:HEND', self::$headerSize, '-', STR_PAD_RIGHT) , ['custom_header' => 'foo', Util::HEADER_ENCRYPTION_MODULE_KEY => '0']], - [str_pad('HelloWorld', $this->headerSize, '-', STR_PAD_RIGHT), []], + [str_pad('HelloWorld', self::$headerSize, '-', STR_PAD_RIGHT), []], ['', []], - [str_pad('HBEGIN:oc_encryption_module:0', $this->headerSize, '-', STR_PAD_RIGHT) + [str_pad('HBEGIN:oc_encryption_module:0', self::$headerSize, '-', STR_PAD_RIGHT) , []], - [str_pad('oc_encryption_module:0:HEND', $this->headerSize, '-', STR_PAD_RIGHT) + [str_pad('oc_encryption_module:0:HEND', self::$headerSize, '-', STR_PAD_RIGHT) , []], ]; } @@ -245,7 +246,7 @@ class UtilTest extends TestCase { ); } - public function dataTestGetFileKeyDir() { + public static function dataTestGetFileKeyDir(): array { return [ [false, '', '/user1/files_encryption/keys/foo/bar.txt/OC_DEFAULT_MODULE/'], [true, '', '/files_encryption/keys/foo/bar.txt/OC_DEFAULT_MODULE/'], diff --git a/tests/lib/ErrorHandlerTest.php b/tests/lib/ErrorHandlerTest.php index b45525e7962..00cf8e4c8db 100644 --- a/tests/lib/ErrorHandlerTest.php +++ b/tests/lib/ErrorHandlerTest.php @@ -16,10 +16,9 @@ use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; class ErrorHandlerTest extends TestCase { - /** @var MockObject */ - private LoggerInterface $logger; - + private LoggerInterface&MockObject $logger; private ErrorHandler $errorHandler; + private int $errorReporting; protected function setUp(): void { parent::setUp(); @@ -28,13 +27,20 @@ class ErrorHandlerTest extends TestCase { $this->errorHandler = new ErrorHandler( $this->logger ); + + $this->errorReporting = error_reporting(E_ALL); + } + + protected function tearDown(): void { + error_reporting($this->errorReporting); + parent::tearDown(); } /** * provide username, password combinations for testRemovePassword * @return array */ - public function passwordProvider() { + public static function passwordProvider(): array { return [ ['us:er', 'pass@word'], ['us:er', 'password'], diff --git a/tests/lib/Federation/CloudIdManagerTest.php b/tests/lib/Federation/CloudIdManagerTest.php index 7019cd202db..0bd0659b2f2 100644 --- a/tests/lib/Federation/CloudIdManagerTest.php +++ b/tests/lib/Federation/CloudIdManagerTest.php @@ -56,7 +56,7 @@ class CloudIdManagerTest extends TestCase { $this->overwriteService(ICloudIdManager::class, $this->cloudIdManager); } - public function dataGetDisplayNameFromContact(): array { + public static function dataGetDisplayNameFromContact(): array { return [ ['test1@example.tld', 'test', 'test'], ['test2@example.tld', null, null], @@ -84,7 +84,7 @@ class CloudIdManagerTest extends TestCase { $this->assertEquals($expected, $this->cloudIdManager->getDisplayNameFromContact($cloudId)); } - public function cloudIdProvider(): array { + public static function cloudIdProvider(): array { return [ ['test@example.com', 'test', 'example.com', 'test@example.com'], ['test@example.com/cloud', 'test', 'example.com/cloud', 'test@example.com/cloud'], @@ -122,7 +122,7 @@ class CloudIdManagerTest extends TestCase { $this->assertEquals($displayName . '@' . $noProtocolRemote, $cloudId->getDisplayId()); } - public function invalidCloudIdProvider(): array { + public static function invalidCloudIdProvider(): array { return [ ['example.com'], ['test:foo@example.com'], @@ -142,7 +142,7 @@ class CloudIdManagerTest extends TestCase { $this->cloudIdManager->resolveCloudId($cloudId); } - public function getCloudIdProvider(): array { + public static function getCloudIdProvider(): array { return [ ['test', 'example.com', 'test@example.com', null, 'https://example.com', 'https://example.com'], ['test', 'http://example.com', 'test@http://example.com', 'test@example.com'], diff --git a/tests/lib/Federation/CloudIdTest.php b/tests/lib/Federation/CloudIdTest.php index ca949d163c7..ec3cc15d6ff 100644 --- a/tests/lib/Federation/CloudIdTest.php +++ b/tests/lib/Federation/CloudIdTest.php @@ -28,7 +28,7 @@ class CloudIdTest extends TestCase { $this->overwriteService(ICloudIdManager::class, $this->cloudIdManager); } - public function dataGetDisplayCloudId(): array { + public static function dataGetDisplayCloudId(): array { return [ ['test@example.com', 'test', 'example.com', 'test@example.com'], ['test@http://example.com', 'test', 'http://example.com', 'test@example.com'], diff --git a/tests/lib/Files/Cache/CacheTest.php b/tests/lib/Files/Cache/CacheTest.php index 204f87d6a18..18670300850 100644 --- a/tests/lib/Files/Cache/CacheTest.php +++ b/tests/lib/Files/Cache/CacheTest.php @@ -11,13 +11,18 @@ use OC\Files\Cache\Cache; use OC\Files\Cache\CacheEntry; use OC\Files\Search\SearchComparison; use OC\Files\Search\SearchQuery; +use OC\Files\Storage\Temporary; +use OC\User\User; use OCP\EventDispatcher\IEventDispatcher; use OCP\Files\Cache\ICacheEntry; use OCP\Files\Search\ISearchComparison; use OCP\IDBConnection; +use OCP\ITagManager; use OCP\IUser; +use OCP\IUserManager; +use OCP\Server; -class LongId extends \OC\Files\Storage\Temporary { +class LongId extends Temporary { public function getId(): string { return 'long:' . str_repeat('foo', 50) . parent::getId(); } @@ -49,6 +54,25 @@ class CacheTest extends \Test\TestCase { */ protected $cache2; + protected function setUp(): void { + parent::setUp(); + + $this->storage = new Temporary([]); + $this->storage2 = new Temporary([]); + $this->cache = new Cache($this->storage); + $this->cache2 = new Cache($this->storage2); + $this->cache->insert('', ['size' => 0, 'mtime' => 0, 'mimetype' => ICacheEntry::DIRECTORY_MIMETYPE]); + $this->cache2->insert('', ['size' => 0, 'mtime' => 0, 'mimetype' => ICacheEntry::DIRECTORY_MIMETYPE]); + } + + protected function tearDown(): void { + if ($this->cache) { + $this->cache->clear(); + } + + parent::tearDown(); + } + public function testGetNumericId(): void { $this->assertNotNull($this->cache->getNumericStorageId()); } @@ -143,8 +167,8 @@ class CacheTest extends \Test\TestCase { public function testFolder($folder): void { if (strpos($folder, 'F09F9890')) { // 4 byte UTF doesn't work on mysql - $params = \OC::$server->get(\OC\DB\Connection::class)->getParams(); - if (\OC::$server->getDatabaseConnection()->getDatabaseProvider() === IDBConnection::PLATFORM_MYSQL && $params['charset'] !== 'utf8mb4') { + $params = Server::get(\OC\DB\Connection::class)->getParams(); + if (Server::get(IDBConnection::class)->getDatabaseProvider() === IDBConnection::PLATFORM_MYSQL && $params['charset'] !== 'utf8mb4') { $this->markTestSkipped('MySQL doesn\'t support 4 byte UTF-8'); } } @@ -208,7 +232,7 @@ class CacheTest extends \Test\TestCase { } } - public function folderDataProvider() { + public static function folderDataProvider(): array { return [ ['folder'], // that was too easy, try something harder @@ -292,16 +316,16 @@ class CacheTest extends \Test\TestCase { } public function testStatus(): void { - $this->assertEquals(\OC\Files\Cache\Cache::NOT_FOUND, $this->cache->getStatus('foo')); + $this->assertEquals(Cache::NOT_FOUND, $this->cache->getStatus('foo')); $this->cache->put('foo', ['size' => -1]); - $this->assertEquals(\OC\Files\Cache\Cache::PARTIAL, $this->cache->getStatus('foo')); + $this->assertEquals(Cache::PARTIAL, $this->cache->getStatus('foo')); $this->cache->put('foo', ['size' => -1, 'mtime' => 20, 'mimetype' => 'foo/file']); - $this->assertEquals(\OC\Files\Cache\Cache::SHALLOW, $this->cache->getStatus('foo')); + $this->assertEquals(Cache::SHALLOW, $this->cache->getStatus('foo')); $this->cache->put('foo', ['size' => 10]); - $this->assertEquals(\OC\Files\Cache\Cache::COMPLETE, $this->cache->getStatus('foo')); + $this->assertEquals(Cache::COMPLETE, $this->cache->getStatus('foo')); } - public function putWithAllKindOfQuotesData() { + public static function putWithAllKindOfQuotesData(): array { return [ ['`backtick`'], ['´forward´'], @@ -314,7 +338,7 @@ class CacheTest extends \Test\TestCase { * @param $fileName */ public function testPutWithAllKindOfQuotes($fileName): void { - $this->assertEquals(\OC\Files\Cache\Cache::NOT_FOUND, $this->cache->get($fileName)); + $this->assertEquals(Cache::NOT_FOUND, $this->cache->get($fileName)); $this->cache->put($fileName, ['size' => 20, 'mtime' => 25, 'mimetype' => 'foo/file', 'etag' => $fileName]); $cacheEntry = $this->cache->get($fileName); @@ -352,9 +376,9 @@ class CacheTest extends \Test\TestCase { public function testSearchQueryByTag(): void { $userId = static::getUniqueID('user'); - \OC::$server->getUserManager()->createUser($userId, $userId); + Server::get(IUserManager::class)->createUser($userId, $userId); static::loginAsUser($userId); - $user = new \OC\User\User($userId, null, \OC::$server->get(IEventDispatcher::class)); + $user = new User($userId, null, Server::get(IEventDispatcher::class)); $file1 = 'folder'; $file2 = 'folder/foobar'; @@ -374,7 +398,7 @@ class CacheTest extends \Test\TestCase { $id4 = $this->cache->put($file4, $fileData['foo2']); $id5 = $this->cache->put($file5, $fileData['foo3']); - $tagManager = \OC::$server->getTagManager()->load('files', [], false, $userId); + $tagManager = Server::get(ITagManager::class)->load('files', [], false, $userId); $this->assertTrue($tagManager->tagAs($id1, 'tag1')); $this->assertTrue($tagManager->tagAs($id1, 'tag2')); $this->assertTrue($tagManager->tagAs($id2, 'tag2')); @@ -399,7 +423,7 @@ class CacheTest extends \Test\TestCase { $tagManager->delete('tag2'); static::logout(); - $user = \OC::$server->getUserManager()->get($userId); + $user = Server::get(IUserManager::class)->get($userId); if ($user !== null) { try { $user->delete(); @@ -437,7 +461,7 @@ class CacheTest extends \Test\TestCase { new SearchComparison(ISearchComparison::COMPARE_GREATER_THAN_EQUAL, 'size', 100), 10, 0, [], $user))); } - public function movePathProvider() { + public static function movePathProvider(): array { return [ ['folder/foo', 'folder/foobar', ['1', '2']], ['folder/foo', 'foo', ['1', '2']], @@ -531,7 +555,7 @@ class CacheTest extends \Test\TestCase { if (strlen($storageId) > 64) { $storageId = md5($storageId); } - $this->assertEquals([$storageId, 'foo'], \OC\Files\Cache\Cache::getById($id)); + $this->assertEquals([$storageId, 'foo'], Cache::getById($id)); } public function testStorageMTime(): void { @@ -558,7 +582,7 @@ class CacheTest extends \Test\TestCase { $storageId = $storage->getId(); $data = ['size' => 1000, 'mtime' => 20, 'mimetype' => 'foo/file']; $id = $cache->put('foo', $data); - $this->assertEquals([md5($storageId), 'foo'], \OC\Files\Cache\Cache::getById($id)); + $this->assertEquals([md5($storageId), 'foo'], Cache::getById($id)); } /** @@ -575,7 +599,7 @@ class CacheTest extends \Test\TestCase { * @var \OC\Files\Cache\Cache | \PHPUnit\Framework\MockObject\MockObject $cacheMock */ $cacheMock = $this->getMockBuilder(Cache::class) - ->setMethods(['normalize']) + ->onlyMethods(['normalize']) ->setConstructorArgs([$this->storage]) ->getMock(); @@ -646,7 +670,7 @@ class CacheTest extends \Test\TestCase { $this->assertEquals(1, count($this->cache->getFolderContents('folder'))); } - public function bogusPathNamesProvider() { + public static function bogusPathNamesProvider(): array { return [ ['/bogus.txt', 'bogus.txt'], ['//bogus.txt', 'bogus.txt'], @@ -691,7 +715,7 @@ class CacheTest extends \Test\TestCase { $this->assertNotEquals($fileId, $fileId2); } - public function escapingProvider() { + public static function escapingProvider(): array { return [ ['foo'], ['o%'], @@ -807,23 +831,4 @@ class CacheTest extends \Test\TestCase { $this->cache->remove('sub'); } - - protected function tearDown(): void { - if ($this->cache) { - $this->cache->clear(); - } - - parent::tearDown(); - } - - protected function setUp(): void { - parent::setUp(); - - $this->storage = new \OC\Files\Storage\Temporary([]); - $this->storage2 = new \OC\Files\Storage\Temporary([]); - $this->cache = new \OC\Files\Cache\Cache($this->storage); - $this->cache2 = new \OC\Files\Cache\Cache($this->storage2); - $this->cache->insert('', ['size' => 0, 'mtime' => 0, 'mimetype' => ICacheEntry::DIRECTORY_MIMETYPE]); - $this->cache2->insert('', ['size' => 0, 'mtime' => 0, 'mimetype' => ICacheEntry::DIRECTORY_MIMETYPE]); - } } diff --git a/tests/lib/Files/Cache/HomeCacheTest.php b/tests/lib/Files/Cache/HomeCacheTest.php index ad069de1fef..5130ad2730a 100644 --- a/tests/lib/Files/Cache/HomeCacheTest.php +++ b/tests/lib/Files/Cache/HomeCacheTest.php @@ -7,24 +7,20 @@ namespace Test\Files\Cache; -class DummyUser extends \OC\User\User { - /** - * @var string $home - */ - private $home; - - /** - * @var string $uid - */ - private $uid; +use OC\Files\Storage\Home; +use OC\User\User; +use OCP\ITempManager; +use OCP\Server; +class DummyUser extends User { /** * @param string $uid * @param string $home */ - public function __construct($uid, $home) { - $this->home = $home; - $this->uid = $uid; + public function __construct( + private $uid, + private $home, + ) { } /** @@ -68,8 +64,8 @@ class HomeCacheTest extends \Test\TestCase { protected function setUp(): void { parent::setUp(); - $this->user = new DummyUser('foo', \OC::$server->getTempManager()->getTemporaryFolder()); - $this->storage = new \OC\Files\Storage\Home(['user' => $this->user]); + $this->user = new DummyUser('foo', Server::get(ITempManager::class)->getTemporaryFolder()); + $this->storage = new Home(['user' => $this->user]); $this->cache = $this->storage->getCache(); } diff --git a/tests/lib/Files/Cache/LocalRootScannerTest.php b/tests/lib/Files/Cache/LocalRootScannerTest.php index e683283b7e1..727da2ed698 100644 --- a/tests/lib/Files/Cache/LocalRootScannerTest.php +++ b/tests/lib/Files/Cache/LocalRootScannerTest.php @@ -9,6 +9,8 @@ declare(strict_types=1); namespace Test\Files\Cache; use OC\Files\Storage\LocalRootStorage; +use OCP\ITempManager; +use OCP\Server; use Test\TestCase; /** @@ -21,7 +23,7 @@ class LocalRootScannerTest extends TestCase { protected function setUp(): void { parent::setUp(); - $folder = \OC::$server->getTempManager()->getTemporaryFolder(); + $folder = Server::get(ITempManager::class)->getTemporaryFolder(); $this->storage = new LocalRootStorage(['datadir' => $folder]); } diff --git a/tests/lib/Files/Cache/MoveFromCacheTraitTest.php b/tests/lib/Files/Cache/MoveFromCacheTraitTest.php index e8a6c8acf32..fc36a10892a 100644 --- a/tests/lib/Files/Cache/MoveFromCacheTraitTest.php +++ b/tests/lib/Files/Cache/MoveFromCacheTraitTest.php @@ -7,10 +7,12 @@ namespace Test\Files\Cache; +use OC\Files\Cache\Cache; use OC\Files\Cache\MoveFromCacheTrait; +use OC\Files\Storage\Temporary; use OCP\Files\Cache\ICacheEntry; -class FallBackCrossCacheMoveCache extends \OC\Files\Cache\Cache { +class FallBackCrossCacheMoveCache extends Cache { use MoveFromCacheTrait; } @@ -23,8 +25,8 @@ class MoveFromCacheTraitTest extends CacheTest { protected function setUp(): void { parent::setUp(); - $this->storage = new \OC\Files\Storage\Temporary([]); - $this->storage2 = new \OC\Files\Storage\Temporary([]); + $this->storage = new Temporary([]); + $this->storage2 = new Temporary([]); $this->cache = new FallBackCrossCacheMoveCache($this->storage); $this->cache2 = new FallBackCrossCacheMoveCache($this->storage2); diff --git a/tests/lib/Files/Cache/ScannerTest.php b/tests/lib/Files/Cache/ScannerTest.php index d78b7100d43..0502cd3717a 100644 --- a/tests/lib/Files/Cache/ScannerTest.php +++ b/tests/lib/Files/Cache/ScannerTest.php @@ -14,6 +14,8 @@ use OC\Files\Cache\Scanner; use OC\Files\Storage\Storage; use OC\Files\Storage\Temporary; use OCP\Files\Cache\IScanner; +use OCP\IDBConnection; +use OCP\Server; use Test\TestCase; /** @@ -67,7 +69,7 @@ class ScannerTest extends TestCase { $data = "dummy file data\n"; $this->storage->file_put_contents('foo🙈.txt', $data); - if (OC::$server->getDatabaseConnection()->supports4ByteText()) { + if (Server::get(IDBConnection::class)->supports4ByteText()) { $this->assertNotNull($this->scanner->scanFile('foo🙈.txt')); $this->assertTrue($this->cache->inCache('foo🙈.txt'), true); @@ -337,7 +339,7 @@ class ScannerTest extends TestCase { $oldFolderId = $this->cache->getId('folder'); // delete the folder without removing the children - $query = OC::$server->getDatabaseConnection()->getQueryBuilder(); + $query = Server::get(IDBConnection::class)->getQueryBuilder(); $query->delete('filecache') ->where($query->expr()->eq('fileid', $query->createNamedParameter($oldFolderId))); $query->execute(); @@ -363,7 +365,7 @@ class ScannerTest extends TestCase { $oldFolderId = $this->cache->getId('folder'); // delete the folder without removing the children - $query = OC::$server->getDatabaseConnection()->getQueryBuilder(); + $query = Server::get(IDBConnection::class)->getQueryBuilder(); $query->delete('filecache') ->where($query->expr()->eq('fileid', $query->createNamedParameter($oldFolderId))); $query->execute(); @@ -394,7 +396,7 @@ class ScannerTest extends TestCase { ); } - public function dataTestIsPartialFile() { + public static function dataTestIsPartialFile(): array { return [ ['foo.txt.part', true], ['/sub/folder/foo.txt.part', true], diff --git a/tests/lib/Files/Cache/SearchBuilderTest.php b/tests/lib/Files/Cache/SearchBuilderTest.php index 17285d44209..957cf6c9f42 100644 --- a/tests/lib/Files/Cache/SearchBuilderTest.php +++ b/tests/lib/Files/Cache/SearchBuilderTest.php @@ -16,6 +16,8 @@ use OCP\Files\Search\ISearchBinaryOperator; use OCP\Files\Search\ISearchComparison; use OCP\Files\Search\ISearchOperator; use OCP\FilesMetadata\IFilesMetadataManager; +use OCP\IDBConnection; +use OCP\Server; use Test\TestCase; /** @@ -39,7 +41,7 @@ class SearchBuilderTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->builder = \OC::$server->getDatabaseConnection()->getQueryBuilder(); + $this->builder = Server::get(IDBConnection::class)->getQueryBuilder(); $this->mimetypeLoader = $this->createMock(IMimeTypeLoader::class); $this->filesMetadataManager = $this->createMock(IFilesMetadataManager::class); @@ -76,7 +78,7 @@ class SearchBuilderTest extends TestCase { protected function tearDown(): void { parent::tearDown(); - $builder = \OC::$server->getDatabaseConnection()->getQueryBuilder(); + $builder = Server::get(IDBConnection::class)->getQueryBuilder(); $builder->delete('filecache') ->where($builder->expr()->eq('storage', $builder->createNamedParameter($this->numericStorageId, IQueryBuilder::PARAM_INT))); @@ -109,7 +111,7 @@ class SearchBuilderTest extends TestCase { $data['mimetype'] = 1; } - $builder = \OC::$server->getDatabaseConnection()->getQueryBuilder(); + $builder = Server::get(IDBConnection::class)->getQueryBuilder(); $values = []; foreach ($data as $key => $value) { @@ -134,7 +136,7 @@ class SearchBuilderTest extends TestCase { return $rows; } - public function comparisonProvider() { + public static function comparisonProvider(): array { return [ [new SearchComparison(ISearchComparison::COMPARE_GREATER_THAN, 'mtime', 125), [1]], [new SearchComparison(ISearchComparison::COMPARE_LESS_THAN, 'mtime', 125), [0]], diff --git a/tests/lib/Files/Cache/UpdaterLegacyTest.php b/tests/lib/Files/Cache/UpdaterLegacyTest.php index 0f7e9d78d77..5d1abb46c0d 100644 --- a/tests/lib/Files/Cache/UpdaterLegacyTest.php +++ b/tests/lib/Files/Cache/UpdaterLegacyTest.php @@ -8,8 +8,11 @@ namespace Test\Files\Cache; use OC\Files\Filesystem as Filesystem; +use OC\Files\Storage\Temporary; use OC\Files\View; use OCP\Files\Mount\IMountManager; +use OCP\IUserManager; +use OCP\Server; /** * Class UpdaterLegacyTest @@ -39,7 +42,7 @@ class UpdaterLegacyTest extends \Test\TestCase { protected function setUp(): void { parent::setUp(); - $this->storage = new \OC\Files\Storage\Temporary([]); + $this->storage = new Temporary([]); $textData = "dummy file data\n"; $imgData = file_get_contents(\OC::$SERVERROOT . '/core/img/logo/logo.png'); $this->storage->mkdir('folder'); @@ -56,13 +59,13 @@ class UpdaterLegacyTest extends \Test\TestCase { self::$user = $this->getUniqueID(); } - \OC::$server->getUserManager()->createUser(self::$user, 'NotAnEasyPassword123456+'); + Server::get(IUserManager::class)->createUser(self::$user, 'NotAnEasyPassword123456+'); $this->loginAsUser(self::$user); Filesystem::init(self::$user, '/' . self::$user . '/files'); /** @var IMountManager $manager */ - $manager = \OC::$server->get(IMountManager::class); + $manager = Server::get(IMountManager::class); $manager->removeMount('/' . self::$user); Filesystem::mount($this->storage, [], '/' . self::$user . '/files'); @@ -76,7 +79,7 @@ class UpdaterLegacyTest extends \Test\TestCase { } $result = false; - $user = \OC::$server->getUserManager()->get(self::$user); + $user = Server::get(IUserManager::class)->get(self::$user); if ($user !== null) { $result = $user->delete(); } @@ -122,7 +125,7 @@ class UpdaterLegacyTest extends \Test\TestCase { } public function testWriteWithMountPoints(): void { - $storage2 = new \OC\Files\Storage\Temporary([]); + $storage2 = new Temporary([]); $storage2->getScanner()->scan(''); //initialize etags $cache2 = $storage2->getCache(); Filesystem::mount($storage2, [], '/' . self::$user . '/files/folder/substorage'); @@ -183,7 +186,7 @@ class UpdaterLegacyTest extends \Test\TestCase { } public function testDeleteWithMountPoints(): void { - $storage2 = new \OC\Files\Storage\Temporary([]); + $storage2 = new Temporary([]); $cache2 = $storage2->getCache(); Filesystem::mount($storage2, [], '/' . self::$user . '/files/folder/substorage'); Filesystem::file_put_contents('folder/substorage/foo.txt', 'asd'); @@ -239,7 +242,7 @@ class UpdaterLegacyTest extends \Test\TestCase { } public function testRenameWithMountPoints(): void { - $storage2 = new \OC\Files\Storage\Temporary([]); + $storage2 = new Temporary([]); $cache2 = $storage2->getCache(); Filesystem::mount($storage2, [], '/' . self::$user . '/files/folder/substorage'); Filesystem::file_put_contents('folder/substorage/foo.txt', 'asd'); diff --git a/tests/lib/Files/Cache/UpdaterTest.php b/tests/lib/Files/Cache/UpdaterTest.php index ab46bdd4141..bc4b39a5dc4 100644 --- a/tests/lib/Files/Cache/UpdaterTest.php +++ b/tests/lib/Files/Cache/UpdaterTest.php @@ -305,7 +305,7 @@ class UpdaterTest extends \Test\TestCase { } } - public function changeExtensionProvider(): array { + public static function changeExtensionProvider(): array { return [ [new Temporary()], [new ObjectStoreStorage(['objectstore' => new StorageObjectStore(new Temporary())])] diff --git a/tests/lib/Files/Cache/WatcherTest.php b/tests/lib/Files/Cache/WatcherTest.php index 7319aa9b68d..c086fb3206d 100644 --- a/tests/lib/Files/Cache/WatcherTest.php +++ b/tests/lib/Files/Cache/WatcherTest.php @@ -7,6 +7,9 @@ namespace Test\Files\Cache; +use OC\Files\Cache\Watcher; +use OC\Files\Storage\Temporary; + /** * Class WatcherTest * @@ -44,7 +47,7 @@ class WatcherTest extends \Test\TestCase { $storage = $this->getTestStorage(); $cache = $storage->getCache(); $updater = $storage->getWatcher(); - $updater->setPolicy(\OC\Files\Cache\Watcher::CHECK_ONCE); + $updater->setPolicy(Watcher::CHECK_ONCE); //set the mtime to the past so it can detect an mtime change $cache->put('', ['storage_mtime' => 10]); @@ -85,7 +88,7 @@ class WatcherTest extends \Test\TestCase { $storage = $this->getTestStorage(); $cache = $storage->getCache(); $updater = $storage->getWatcher(); - $updater->setPolicy(\OC\Files\Cache\Watcher::CHECK_ONCE); + $updater->setPolicy(Watcher::CHECK_ONCE); //set the mtime to the past so it can detect an mtime change $cache->put('', ['storage_mtime' => 10]); @@ -102,7 +105,7 @@ class WatcherTest extends \Test\TestCase { $storage = $this->getTestStorage(); $cache = $storage->getCache(); $updater = $storage->getWatcher(); - $updater->setPolicy(\OC\Files\Cache\Watcher::CHECK_ONCE); + $updater->setPolicy(Watcher::CHECK_ONCE); //set the mtime to the past so it can detect an mtime change $cache->put('foo.txt', ['storage_mtime' => 10]); @@ -124,7 +127,7 @@ class WatcherTest extends \Test\TestCase { //set the mtime to the past so it can detect an mtime change $cache->put('foo.txt', ['storage_mtime' => 10]); - $updater->setPolicy(\OC\Files\Cache\Watcher::CHECK_NEVER); + $updater->setPolicy(Watcher::CHECK_NEVER); $storage->file_put_contents('foo.txt', 'q'); $this->assertFalse($updater->checkUpdate('foo.txt')); @@ -142,7 +145,7 @@ class WatcherTest extends \Test\TestCase { //set the mtime to the past so it can detect an mtime change $cache->put('foo.txt', ['storage_mtime' => 10]); - $updater->setPolicy(\OC\Files\Cache\Watcher::CHECK_ONCE); + $updater->setPolicy(Watcher::CHECK_ONCE); $storage->file_put_contents('foo.txt', 'q'); $this->assertTrue($updater->checkUpdate('foo.txt')); @@ -160,7 +163,7 @@ class WatcherTest extends \Test\TestCase { //set the mtime to the past so it can detect an mtime change $cache->put('foo.txt', ['storage_mtime' => 10]); - $updater->setPolicy(\OC\Files\Cache\Watcher::CHECK_ALWAYS); + $updater->setPolicy(Watcher::CHECK_ALWAYS); $storage->file_put_contents('foo.txt', 'q'); $this->assertTrue($updater->checkUpdate('foo.txt')); @@ -175,7 +178,7 @@ class WatcherTest extends \Test\TestCase { * @return \OC\Files\Storage\Storage */ private function getTestStorage($scan = true) { - $storage = new \OC\Files\Storage\Temporary([]); + $storage = new Temporary([]); $textData = "dummy file data\n"; $imgData = file_get_contents(\OC::$SERVERROOT . '/core/img/logo/logo.png'); $storage->mkdir('folder'); diff --git a/tests/lib/Files/Cache/Wrapper/CacheJailTest.php b/tests/lib/Files/Cache/Wrapper/CacheJailTest.php index aed13c41ac0..4073f3b9bae 100644 --- a/tests/lib/Files/Cache/Wrapper/CacheJailTest.php +++ b/tests/lib/Files/Cache/Wrapper/CacheJailTest.php @@ -8,6 +8,7 @@ namespace Test\Files\Cache\Wrapper; use OC\Files\Cache\Wrapper\CacheJail; +use OC\Files\Cache\Wrapper\CacheWrapper; use OC\Files\Search\SearchComparison; use OC\Files\Search\SearchQuery; use OC\Files\Storage\Wrapper\Jail; @@ -34,7 +35,7 @@ class CacheJailTest extends CacheTest { parent::setUp(); $this->storage->mkdir('jail'); $this->sourceCache = $this->cache; - $this->cache = new \OC\Files\Cache\Wrapper\CacheJail($this->sourceCache, 'jail'); + $this->cache = new CacheJail($this->sourceCache, 'jail'); $this->cache->insert('', ['size' => 0, 'mtime' => 0, 'mimetype' => ICacheEntry::DIRECTORY_MIMETYPE]); } @@ -129,7 +130,7 @@ class CacheJailTest extends CacheTest { $this->assertEquals('bar', $path); // path from jailed '' of foo/bar is foo/bar - $this->cache = new \OC\Files\Cache\Wrapper\CacheJail($this->sourceCache, ''); + $this->cache = new CacheJail($this->sourceCache, ''); $path = $this->cache->getPathById($id); $this->assertEquals('jail/bar', $path); } @@ -199,7 +200,7 @@ class CacheJailTest extends CacheTest { $this->sourceCache->put($file2, $data1); $this->sourceCache->put($file3, $data1); - $nested = new \OC\Files\Cache\Wrapper\CacheJail($this->cache, 'bar'); + $nested = new CacheJail($this->cache, 'bar'); $result = $nested->search('%asd%'); $this->assertCount(1, $result); @@ -217,7 +218,7 @@ class CacheJailTest extends CacheTest { $this->sourceCache->put($file2, $data1); $this->sourceCache->put($file3, $data1); - $nested = new \OC\Files\Cache\Wrapper\CacheJail($this->sourceCache, ''); + $nested = new CacheJail($this->sourceCache, ''); $result = $nested->search('%asd%'); $this->assertCount(1, $result); @@ -252,4 +253,14 @@ class CacheJailTest extends CacheTest { $storage->getWatcher()->update('bar', ['mimetype' => 'text/plain']); $this->assertTrue($this->cache->inCache('bar')); } + + public function testUnJailedRoot(): void { + $jail1 = new CacheJail($this->sourceCache, 'foo'); + $jail2 = new CacheJail($jail1, 'bar'); + $this->assertEquals('foo/bar', $jail2->getGetUnjailedRoot()); + + $middleWrapper = new CacheWrapper($jail1); + $jail3 = new CacheJail($middleWrapper, 'bar'); + $this->assertEquals('foo/bar', $jail3->getGetUnjailedRoot()); + } } diff --git a/tests/lib/Files/Cache/Wrapper/CachePermissionsMaskTest.php b/tests/lib/Files/Cache/Wrapper/CachePermissionsMaskTest.php index afb5c6a5d4d..e4e14e7d5d0 100644 --- a/tests/lib/Files/Cache/Wrapper/CachePermissionsMaskTest.php +++ b/tests/lib/Files/Cache/Wrapper/CachePermissionsMaskTest.php @@ -7,6 +7,7 @@ namespace Test\Files\Cache\Wrapper; +use OC\Files\Cache\Wrapper\CachePermissionsMask; use OCP\Constants; use Test\Files\Cache\CacheTest; @@ -31,10 +32,10 @@ class CachePermissionsMaskTest extends CacheTest { } protected function getMaskedCached($mask) { - return new \OC\Files\Cache\Wrapper\CachePermissionsMask($this->sourceCache, $mask); + return new CachePermissionsMask($this->sourceCache, $mask); } - public function maskProvider() { + public static function maskProvider(): array { return [ [Constants::PERMISSION_ALL], [Constants::PERMISSION_ALL - Constants::PERMISSION_SHARE], diff --git a/tests/lib/Files/Config/UserMountCacheTest.php b/tests/lib/Files/Config/UserMountCacheTest.php index 1efc56c1908..55251e68110 100644 --- a/tests/lib/Files/Config/UserMountCacheTest.php +++ b/tests/lib/Files/Config/UserMountCacheTest.php @@ -9,6 +9,8 @@ namespace Test\Files\Config; use OC\DB\Exceptions\DbalException; use OC\DB\QueryBuilder\Literal; +use OC\Files\Cache\Cache; +use OC\Files\Config\UserMountCache; use OC\Files\Mount\MountPoint; use OC\Files\Storage\Storage; use OC\User\Manager; @@ -16,11 +18,15 @@ use OCP\Cache\CappedMemoryCache; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\Diagnostics\IEventLogger; use OCP\EventDispatcher\IEventDispatcher; +use OCP\Files\Config\Event\UserMountAddedEvent; +use OCP\Files\Config\Event\UserMountRemovedEvent; +use OCP\Files\Config\Event\UserMountUpdatedEvent; use OCP\Files\Config\ICachedMountInfo; use OCP\ICacheFactory; use OCP\IConfig; use OCP\IDBConnection; use OCP\IUserManager; +use OCP\Server; use Psr\Log\LoggerInterface; use Test\TestCase; use Test\Util\User\Dummy; @@ -29,28 +35,19 @@ use Test\Util\User\Dummy; * @group DB */ class UserMountCacheTest extends TestCase { - /** - * @var IDBConnection - */ - private $connection; - - /** - * @var IUserManager - */ - private $userManager; - - /** - * @var \OC\Files\Config\UserMountCache - */ - private $cache; - - private $fileIds = []; + private IDBConnection $connection; + private IUserManager $userManager; + private IEventDispatcher $eventDispatcher; + private UserMountCache $cache; + private array $fileIds = []; protected function setUp(): void { parent::setUp(); $this->fileIds = []; - $this->connection = \OC::$server->getDatabaseConnection(); + + $this->connection = Server::get(IDBConnection::class); + $config = $this->getMockBuilder(IConfig::class) ->disableOriginalConstructor() ->getMock(); @@ -62,13 +59,22 @@ class UserMountCacheTest extends TestCase { ->expects($this->any()) ->method('getAppValue') ->willReturnArgument(2); + $this->userManager = new Manager($config, $this->createMock(ICacheFactory::class), $this->createMock(IEventDispatcher::class), $this->createMock(LoggerInterface::class)); $userBackend = new Dummy(); $userBackend->createUser('u1', ''); $userBackend->createUser('u2', ''); $userBackend->createUser('u3', ''); $this->userManager->registerBackend($userBackend); - $this->cache = new \OC\Files\Config\UserMountCache($this->connection, $this->userManager, $this->createMock(LoggerInterface::class), $this->createMock(IEventLogger::class)); + + $this->eventDispatcher = $this->createMock(IEventDispatcher::class); + + $this->cache = new UserMountCache($this->connection, + $this->userManager, + $this->createMock(LoggerInterface::class), + $this->createMock(IEventLogger::class), + $this->eventDispatcher, + ); } protected function tearDown(): void { @@ -88,25 +94,19 @@ class UserMountCacheTest extends TestCase { private function getStorage($storageId, $rootInternalPath = '') { $rootId = $this->createCacheEntry($rootInternalPath, $storageId); - $storageCache = $this->getMockBuilder('\OC\Files\Cache\Storage') - ->disableOriginalConstructor() - ->getMock(); + $storageCache = $this->createMock(\OC\Files\Cache\Storage::class); $storageCache->expects($this->any()) ->method('getNumericId') ->willReturn($storageId); - $cache = $this->getMockBuilder('\OC\Files\Cache\Cache') - ->disableOriginalConstructor() - ->getMock(); + $cache = $this->createMock(Cache::class); $cache->expects($this->any()) ->method('getId') ->willReturn($rootId); $cache->method('getNumericStorageId') ->willReturn($storageId); - $storage = $this->getMockBuilder('\OC\Files\Storage\Storage') - ->disableOriginalConstructor() - ->getMock(); + $storage = $this->createMock(Storage::class); $storage->expects($this->any()) ->method('getStorageCache') ->willReturn($storageCache); @@ -126,6 +126,11 @@ class UserMountCacheTest extends TestCase { } public function testNewMounts(): void { + $this->eventDispatcher + ->expects($this->once()) + ->method('dispatchTyped') + ->with($this->callback(fn (UserMountAddedEvent $event) => $event->mountPoint->getMountPoint() === '/asd/')); + $user = $this->userManager->get('u1'); [$storage] = $this->getStorage(10); @@ -146,6 +151,11 @@ class UserMountCacheTest extends TestCase { } public function testSameMounts(): void { + $this->eventDispatcher + ->expects($this->once()) + ->method('dispatchTyped') + ->with($this->callback(fn (UserMountAddedEvent $event) => $event->mountPoint->getMountPoint() === '/asd/')); + $user = $this->userManager->get('u1'); [$storage] = $this->getStorage(10); @@ -170,6 +180,18 @@ class UserMountCacheTest extends TestCase { } public function testRemoveMounts(): void { + $operation = 0; + $this->eventDispatcher + ->expects($this->exactly(2)) + ->method('dispatchTyped') + ->with($this->callback(function (UserMountAddedEvent|UserMountRemovedEvent $event) use (&$operation) { + return match(++$operation) { + 1 => $event instanceof UserMountAddedEvent && $event->mountPoint->getMountPoint() === '/asd/', + 2 => $event instanceof UserMountRemovedEvent && $event->mountPoint->getMountPoint() === '/asd/', + default => false, + }; + })); + $user = $this->userManager->get('u1'); [$storage] = $this->getStorage(10); @@ -189,6 +211,19 @@ class UserMountCacheTest extends TestCase { } public function testChangeMounts(): void { + $operation = 0; + $this->eventDispatcher + ->expects($this->exactly(3)) + ->method('dispatchTyped') + ->with($this->callback(function (UserMountAddedEvent|UserMountRemovedEvent $event) use (&$operation) { + return match(++$operation) { + 1 => $event instanceof UserMountAddedEvent && $event->mountPoint->getMountPoint() === '/bar/', + 2 => $event instanceof UserMountAddedEvent && $event->mountPoint->getMountPoint() === '/foo/', + 3 => $event instanceof UserMountRemovedEvent && $event->mountPoint->getMountPoint() === '/bar/', + default => false, + }; + })); + $user = $this->userManager->get('u1'); [$storage] = $this->getStorage(10); @@ -212,6 +247,18 @@ class UserMountCacheTest extends TestCase { } public function testChangeMountId(): void { + $operation = 0; + $this->eventDispatcher + ->expects($this->exactly(2)) + ->method('dispatchTyped') + ->with($this->callback(function (UserMountAddedEvent|UserMountUpdatedEvent $event) use (&$operation) { + return match(++$operation) { + 1 => $event instanceof UserMountAddedEvent && $event->mountPoint->getMountPoint() === '/foo/', + 2 => $event instanceof UserMountUpdatedEvent && $event->oldMountPoint->getMountId() === null && $event->newMountPoint->getMountId() === 1, + default => false, + }; + })); + $user = $this->userManager->get('u1'); [$storage] = $this->getStorage(10); @@ -427,9 +474,9 @@ class UserMountCacheTest extends TestCase { $fileId = $this->createCacheEntry('/foo/bar', 2); - $mount1 = $this->getMockBuilder('\OC\Files\Mount\MountPoint') + $mount1 = $this->getMockBuilder(MountPoint::class) ->setConstructorArgs([$storage1, '/']) - ->setMethods(['getStorageRootId']) + ->onlyMethods(['getStorageRootId']) ->getMock(); $mount1->expects($this->any()) @@ -460,9 +507,9 @@ class UserMountCacheTest extends TestCase { $folderId = $this->createCacheEntry('/foo', 2); $fileId = $this->createCacheEntry('/bar/asd', 2); - $mount1 = $this->getMockBuilder('\OC\Files\Mount\MountPoint') + $mount1 = $this->getMockBuilder(MountPoint::class) ->setConstructorArgs([$storage1, '/foo/']) - ->setMethods(['getStorageRootId']) + ->onlyMethods(['getStorageRootId']) ->getMock(); $mount1->expects($this->any()) @@ -509,7 +556,7 @@ class UserMountCacheTest extends TestCase { $mount1 = $this->getMockBuilder(MountPoint::class) ->setConstructorArgs([$storage1, '/u1/']) - ->setMethods(['getStorageRootId', 'getNumericStorageId']) + ->onlyMethods(['getStorageRootId', 'getNumericStorageId']) ->getMock(); $mount1->expects($this->any()) diff --git a/tests/lib/Files/EtagTest.php b/tests/lib/Files/EtagTest.php index b0cdff16f4d..82ed0ceff96 100644 --- a/tests/lib/Files/EtagTest.php +++ b/tests/lib/Files/EtagTest.php @@ -8,8 +8,13 @@ namespace Test\Files; use OC\Files\Filesystem; +use OC\Files\Utils\Scanner; +use OC\Share\Share; use OCA\Files_Sharing\AppInfo\Application; use OCP\EventDispatcher\IEventDispatcher; +use OCP\IConfig; +use OCP\IDBConnection; +use OCP\ITempManager; use OCP\IUserManager; use OCP\Server; use Psr\Log\LoggerInterface; @@ -38,12 +43,12 @@ class EtagTest extends \Test\TestCase { // init files sharing new Application(); - \OC\Share\Share::registerBackend('file', 'OCA\Files_Sharing\ShareBackend\File'); - \OC\Share\Share::registerBackend('folder', 'OCA\Files_Sharing\ShareBackend\Folder', 'file'); + Share::registerBackend('file', 'OCA\Files_Sharing\ShareBackend\File'); + Share::registerBackend('folder', 'OCA\Files_Sharing\ShareBackend\Folder', 'file'); - $config = \OC::$server->getConfig(); + $config = Server::get(IConfig::class); $this->datadir = $config->getSystemValueString('datadirectory'); - $this->tmpDir = \OC::$server->getTempManager()->getTemporaryFolder(); + $this->tmpDir = Server::get(ITempManager::class)->getTemporaryFolder(); $config->setSystemValue('datadirectory', $this->tmpDir); $this->userBackend = new \Test\Util\User\Dummy(); @@ -51,7 +56,7 @@ class EtagTest extends \Test\TestCase { } protected function tearDown(): void { - \OC::$server->getConfig()->setSystemValue('datadirectory', $this->datadir); + Server::get(IConfig::class)->setSystemValue('datadirectory', $this->datadir); $this->logout(); parent::tearDown(); @@ -71,7 +76,7 @@ class EtagTest extends \Test\TestCase { $files = ['/foo.txt', '/folder/bar.txt', '/folder/subfolder', '/folder/subfolder/qwerty.txt']; $originalEtags = $this->getEtags($files); - $scanner = new \OC\Files\Utils\Scanner($user1, \OC::$server->getDatabaseConnection(), \OC::$server->query(IEventDispatcher::class), \OC::$server->get(LoggerInterface::class)); + $scanner = new Scanner($user1, Server::get(IDBConnection::class), Server::get(IEventDispatcher::class), Server::get(LoggerInterface::class)); $scanner->backgroundScan('/'); $newEtags = $this->getEtags($files); diff --git a/tests/lib/Files/FilenameValidatorTest.php b/tests/lib/Files/FilenameValidatorTest.php index c5361e2c648..a4951c2efd3 100644 --- a/tests/lib/Files/FilenameValidatorTest.php +++ b/tests/lib/Files/FilenameValidatorTest.php @@ -122,7 +122,7 @@ class FilenameValidatorTest extends TestCase { $this->assertEquals($exception === null, $validator->isFilenameValid($filename)); } - public function dataValidateFilename(): array { + public static function dataValidateFilename(): array { return [ 'valid name' => [ 'a: b.txt', ['.htaccess'], [], [], [], null @@ -202,7 +202,7 @@ class FilenameValidatorTest extends TestCase { $validator->validateFilename($filename); } - public function data4ByteUnicode(): array { + public static function data4ByteUnicode(): array { return [ ['plane 1 𐪅'], ['emoji 😶🌫️'], @@ -218,7 +218,7 @@ class FilenameValidatorTest extends TestCase { $validator->validateFilename($filename); } - public function dataInvalidAsciiCharacters(): array { + public static function dataInvalidAsciiCharacters(): array { return [ [\chr(0)], [\chr(1)], @@ -271,7 +271,7 @@ class FilenameValidatorTest extends TestCase { $this->assertEquals($expected, $validator->isForbidden($filename)); } - public function dataIsForbidden(): array { + public static function dataIsForbidden(): array { return [ 'valid name' => [ 'a: b.txt', ['.htaccess'], false @@ -409,7 +409,7 @@ class FilenameValidatorTest extends TestCase { $this->assertEquals($expected, $validator->sanitizeFilename($filename)); } - public function dataSanitizeFilename(): array { + public static function dataSanitizeFilename(): array { return [ 'valid name' => [ 'a * b.txt', ['.htaccess'], [], [], [], 'a * b.txt' @@ -438,7 +438,7 @@ class FilenameValidatorTest extends TestCase { '.thumbs.db', ['.htaccess'], ['.thumbs'], [], [], '.thumbs (renamed).db' ], 'invalid character' => [ - 'a: b.txt', ['.htaccess'], [], [], [':'], 'a b.txt', + 'a: b.txt', ['.htaccess'], [], [], [':'], 'a_ b.txt', ], 'invalid extension' => [ 'a: b.txt', ['.htaccess'], [], ['.txt'], [], 'a: b' @@ -492,13 +492,13 @@ class FilenameValidatorTest extends TestCase { public static function dataSanitizeFilenameCharacterReplacement(): array { return [ 'default' => [ - 'foo*bar', ['*'], null, 'foo bar' + 'foo*bar', ['*'], null, 'foo_bar' ], - 'default - space not allowed' => [ - 'foo*bar', ['*', ' '], null, 'foo_bar' + 'default - underscore not allowed' => [ + 'foo*bar', ['*', '_'], null, 'foo-bar' ], - 'default - space and underscore not allowed' => [ - 'foo*bar', ['*', ' ', '_'], null, 'foo-bar' + 'default - dash and underscore not allowed' => [ + 'foo*bar', ['*', '-', '_'], null, 'foo bar' ], 'default - no replacement' => [ 'foo*bar', ['*', ' ', '_', '-'], null, null diff --git a/tests/lib/Files/FilesystemTest.php b/tests/lib/Files/FilesystemTest.php index a920dc662da..9b5e24f8b74 100644 --- a/tests/lib/Files/FilesystemTest.php +++ b/tests/lib/Files/FilesystemTest.php @@ -7,23 +7,29 @@ namespace Test\Files; +use OC\Files\Filesystem; use OC\Files\Mount\MountPoint; use OC\Files\Storage\Temporary; +use OC\Files\View; use OC\User\NoUserException; +use OCP\Files; use OCP\Files\Config\IMountProvider; +use OCP\Files\Config\IMountProviderCollection; use OCP\Files\Storage\IStorageFactory; +use OCP\IConfig; +use OCP\ITempManager; use OCP\IUser; use OCP\IUserManager; +use OCP\IUserSession; use OCP\Server; class DummyMountProvider implements IMountProvider { - private $mounts = []; - /** * @param array $mounts */ - public function __construct(array $mounts) { - $this->mounts = $mounts; + public function __construct( + private array $mounts, + ) { } /** @@ -58,7 +64,7 @@ class FilesystemTest extends \Test\TestCase { * @return array */ private function getStorageData() { - $dir = \OC::$server->getTempManager()->getTemporaryFolder(); + $dir = Server::get(ITempManager::class)->getTemporaryFolder(); $this->tmpDirs[] = $dir; return ['datadir' => $dir]; } @@ -68,13 +74,13 @@ class FilesystemTest extends \Test\TestCase { $userBackend = new \Test\Util\User\Dummy(); $userBackend->createUser(self::TEST_FILESYSTEM_USER1, self::TEST_FILESYSTEM_USER1); $userBackend->createUser(self::TEST_FILESYSTEM_USER2, self::TEST_FILESYSTEM_USER2); - \OC::$server->getUserManager()->registerBackend($userBackend); + Server::get(IUserManager::class)->registerBackend($userBackend); $this->loginAsUser(); } protected function tearDown(): void { foreach ($this->tmpDirs as $dir) { - \OC_Helper::rmdirr($dir); + Files::rmdirr($dir); } $this->logout(); @@ -83,24 +89,24 @@ class FilesystemTest extends \Test\TestCase { } public function testMount(): void { - \OC\Files\Filesystem::mount('\OC\Files\Storage\Local', self::getStorageData(), '/'); - $this->assertEquals('/', \OC\Files\Filesystem::getMountPoint('/')); - $this->assertEquals('/', \OC\Files\Filesystem::getMountPoint('/some/folder')); - [, $internalPath] = \OC\Files\Filesystem::resolvePath('/'); + Filesystem::mount('\OC\Files\Storage\Local', self::getStorageData(), '/'); + $this->assertEquals('/', Filesystem::getMountPoint('/')); + $this->assertEquals('/', Filesystem::getMountPoint('/some/folder')); + [, $internalPath] = Filesystem::resolvePath('/'); $this->assertEquals('', $internalPath); - [, $internalPath] = \OC\Files\Filesystem::resolvePath('/some/folder'); + [, $internalPath] = Filesystem::resolvePath('/some/folder'); $this->assertEquals('some/folder', $internalPath); - \OC\Files\Filesystem::mount('\OC\Files\Storage\Local', self::getStorageData(), '/some'); - $this->assertEquals('/', \OC\Files\Filesystem::getMountPoint('/')); - $this->assertEquals('/some/', \OC\Files\Filesystem::getMountPoint('/some/folder')); - $this->assertEquals('/some/', \OC\Files\Filesystem::getMountPoint('/some/')); - $this->assertEquals('/some/', \OC\Files\Filesystem::getMountPoint('/some')); - [, $internalPath] = \OC\Files\Filesystem::resolvePath('/some/folder'); + Filesystem::mount('\OC\Files\Storage\Local', self::getStorageData(), '/some'); + $this->assertEquals('/', Filesystem::getMountPoint('/')); + $this->assertEquals('/some/', Filesystem::getMountPoint('/some/folder')); + $this->assertEquals('/some/', Filesystem::getMountPoint('/some/')); + $this->assertEquals('/some/', Filesystem::getMountPoint('/some')); + [, $internalPath] = Filesystem::resolvePath('/some/folder'); $this->assertEquals('folder', $internalPath); } - public function normalizePathData() { + public static function normalizePathData(): array { return [ ['/', ''], ['/', '/'], @@ -198,10 +204,10 @@ class FilesystemTest extends \Test\TestCase { * @dataProvider normalizePathData */ public function testNormalizePath($expected, $path, $stripTrailingSlash = true): void { - $this->assertEquals($expected, \OC\Files\Filesystem::normalizePath($path, $stripTrailingSlash)); + $this->assertEquals($expected, Filesystem::normalizePath($path, $stripTrailingSlash)); } - public function normalizePathKeepUnicodeData() { + public static function normalizePathKeepUnicodeData(): array { $nfdName = 'ümlaut'; $nfcName = 'ümlaut'; return [ @@ -216,18 +222,18 @@ class FilesystemTest extends \Test\TestCase { * @dataProvider normalizePathKeepUnicodeData */ public function testNormalizePathKeepUnicode($expected, $path, $keepUnicode = false): void { - $this->assertEquals($expected, \OC\Files\Filesystem::normalizePath($path, true, false, $keepUnicode)); + $this->assertEquals($expected, Filesystem::normalizePath($path, true, false, $keepUnicode)); } public function testNormalizePathKeepUnicodeCache(): void { $nfdName = 'ümlaut'; $nfcName = 'ümlaut'; // call in succession due to cache - $this->assertEquals('/' . $nfcName, \OC\Files\Filesystem::normalizePath($nfdName, true, false, false)); - $this->assertEquals('/' . $nfdName, \OC\Files\Filesystem::normalizePath($nfdName, true, false, true)); + $this->assertEquals('/' . $nfcName, Filesystem::normalizePath($nfdName, true, false, false)); + $this->assertEquals('/' . $nfdName, Filesystem::normalizePath($nfdName, true, false, true)); } - public function isValidPathData() { + public static function isValidPathData(): array { return [ ['/', true], ['/path', true], @@ -257,10 +263,10 @@ class FilesystemTest extends \Test\TestCase { * @dataProvider isValidPathData */ public function testIsValidPath($path, $expected): void { - $this->assertSame($expected, \OC\Files\Filesystem::isValidPath($path)); + $this->assertSame($expected, Filesystem::isValidPath($path)); } - public function isFileBlacklistedData() { + public static function isFileBlacklistedData(): array { return [ ['/etc/foo/bar/foo.txt', false], ['\etc\foo/bar\foo.txt', false], @@ -279,7 +285,7 @@ class FilesystemTest extends \Test\TestCase { * @dataProvider isFileBlacklistedData */ public function testIsFileBlacklisted($path, $expected): void { - $this->assertSame($expected, \OC\Files\Filesystem::isFileBlacklisted($path)); + $this->assertSame($expected, Filesystem::isFileBlacklisted($path)); } public function testNormalizePathUTF8(): void { @@ -287,36 +293,36 @@ class FilesystemTest extends \Test\TestCase { $this->markTestSkipped('UTF8 normalizer Patchwork was not found'); } - $this->assertEquals("/foo/bar\xC3\xBC", \OC\Files\Filesystem::normalizePath("/foo/baru\xCC\x88")); - $this->assertEquals("/foo/bar\xC3\xBC", \OC\Files\Filesystem::normalizePath("\\foo\\baru\xCC\x88")); + $this->assertEquals("/foo/bar\xC3\xBC", Filesystem::normalizePath("/foo/baru\xCC\x88")); + $this->assertEquals("/foo/bar\xC3\xBC", Filesystem::normalizePath("\\foo\\baru\xCC\x88")); } public function testHooks(): void { - if (\OC\Files\Filesystem::getView()) { + if (Filesystem::getView()) { $user = \OC_User::getUser(); } else { $user = self::TEST_FILESYSTEM_USER1; $backend = new \Test\Util\User\Dummy(); Server::get(IUserManager::class)->registerBackend($backend); $backend->createUser($user, $user); - $userObj = \OC::$server->getUserManager()->get($user); - \OC::$server->getUserSession()->setUser($userObj); - \OC\Files\Filesystem::init($user, '/' . $user . '/files'); + $userObj = Server::get(IUserManager::class)->get($user); + Server::get(IUserSession::class)->setUser($userObj); + Filesystem::init($user, '/' . $user . '/files'); } \OC_Hook::clear('OC_Filesystem'); \OC_Hook::connect('OC_Filesystem', 'post_write', $this, 'dummyHook'); - \OC\Files\Filesystem::mount('OC\Files\Storage\Temporary', [], '/'); + Filesystem::mount('OC\Files\Storage\Temporary', [], '/'); - $rootView = new \OC\Files\View(''); + $rootView = new View(''); $rootView->mkdir('/' . $user); $rootView->mkdir('/' . $user . '/files'); // \OC\Files\Filesystem::file_put_contents('/foo', 'foo'); - \OC\Files\Filesystem::mkdir('/bar'); + Filesystem::mkdir('/bar'); // \OC\Files\Filesystem::file_put_contents('/bar//foo', 'foo'); - $tmpFile = \OC::$server->getTempManager()->getTemporaryFile(); + $tmpFile = Server::get(ITempManager::class)->getTemporaryFile(); file_put_contents($tmpFile, 'foo'); $fh = fopen($tmpFile, 'r'); // \OC\Files\Filesystem::file_put_contents('/bar//foo', $fh); @@ -327,29 +333,29 @@ class FilesystemTest extends \Test\TestCase { * */ public function testLocalMountWhenUserDoesNotExist(): void { - $this->expectException(\OC\User\NoUserException::class); + $this->expectException(NoUserException::class); $userId = $this->getUniqueID('user_'); - \OC\Files\Filesystem::initMountPoints($userId); + Filesystem::initMountPoints($userId); } public function testNullUserThrows(): void { - $this->expectException(\OC\User\NoUserException::class); + $this->expectException(NoUserException::class); - \OC\Files\Filesystem::initMountPoints(null); + Filesystem::initMountPoints(null); } public function testNullUserThrowsTwice(): void { $thrown = 0; try { - \OC\Files\Filesystem::initMountPoints(null); + Filesystem::initMountPoints(null); } catch (NoUserException $e) { $thrown++; } try { - \OC\Files\Filesystem::initMountPoints(null); + Filesystem::initMountPoints(null); } catch (NoUserException $e) { $thrown++; } @@ -364,13 +370,13 @@ class FilesystemTest extends \Test\TestCase { $userId = $this->getUniqueID('user_'); try { - \OC\Files\Filesystem::initMountPoints($userId); + Filesystem::initMountPoints($userId); } catch (NoUserException $e) { $thrown++; } try { - \OC\Files\Filesystem::initMountPoints($userId); + Filesystem::initMountPoints($userId); } catch (NoUserException $e) { $thrown++; } @@ -384,11 +390,11 @@ class FilesystemTest extends \Test\TestCase { public function testHomeMount(): void { $userId = $this->getUniqueID('user_'); - \OC::$server->getUserManager()->createUser($userId, $userId); + Server::get(IUserManager::class)->createUser($userId, $userId); - \OC\Files\Filesystem::initMountPoints($userId); + Filesystem::initMountPoints($userId); - $homeMount = \OC\Files\Filesystem::getStorage('/' . $userId . '/'); + $homeMount = Filesystem::getStorage('/' . $userId . '/'); $this->assertTrue($homeMount->instanceOfStorage('\OCP\Files\IHomeStorage')); if ($homeMount->instanceOfStorage('\OC\Files\ObjectStore\HomeObjectStoreStorage')) { @@ -397,7 +403,7 @@ class FilesystemTest extends \Test\TestCase { $this->assertEquals('home::' . $userId, $homeMount->getId()); } - $user = \OC::$server->getUserManager()->get($userId); + $user = Server::get(IUserManager::class)->get($userId); if ($user !== null) { $user->delete(); } @@ -405,7 +411,7 @@ class FilesystemTest extends \Test\TestCase { public function dummyHook($arguments) { $path = $arguments['path']; - $this->assertEquals($path, \OC\Files\Filesystem::normalizePath($path)); //the path passed to the hook should already be normalized + $this->assertEquals($path, Filesystem::normalizePath($path)); //the path passed to the hook should already be normalized } /** @@ -413,22 +419,22 @@ class FilesystemTest extends \Test\TestCase { */ public function testMountDefaultCacheDir(): void { $userId = $this->getUniqueID('user_'); - $config = \OC::$server->getConfig(); + $config = Server::get(IConfig::class); $oldCachePath = $config->getSystemValueString('cache_path', ''); // no cache path configured $config->setSystemValue('cache_path', ''); - \OC::$server->getUserManager()->createUser($userId, $userId); - \OC\Files\Filesystem::initMountPoints($userId); + Server::get(IUserManager::class)->createUser($userId, $userId); + Filesystem::initMountPoints($userId); $this->assertEquals( '/' . $userId . '/', - \OC\Files\Filesystem::getMountPoint('/' . $userId . '/cache') + Filesystem::getMountPoint('/' . $userId . '/cache') ); - [$storage, $internalPath] = \OC\Files\Filesystem::resolvePath('/' . $userId . '/cache'); + [$storage, $internalPath] = Filesystem::resolvePath('/' . $userId . '/cache'); $this->assertTrue($storage->instanceOfStorage('\OCP\Files\IHomeStorage')); $this->assertEquals('cache', $internalPath); - $user = \OC::$server->getUserManager()->get($userId); + $user = Server::get(IUserManager::class)->get($userId); if ($user !== null) { $user->delete(); } @@ -443,23 +449,23 @@ class FilesystemTest extends \Test\TestCase { public function testMountExternalCacheDir(): void { $userId = $this->getUniqueID('user_'); - $config = \OC::$server->getConfig(); + $config = Server::get(IConfig::class); $oldCachePath = $config->getSystemValueString('cache_path', ''); // set cache path to temp dir - $cachePath = \OC::$server->getTempManager()->getTemporaryFolder() . '/extcache'; + $cachePath = Server::get(ITempManager::class)->getTemporaryFolder() . '/extcache'; $config->setSystemValue('cache_path', $cachePath); - \OC::$server->getUserManager()->createUser($userId, $userId); - \OC\Files\Filesystem::initMountPoints($userId); + Server::get(IUserManager::class)->createUser($userId, $userId); + Filesystem::initMountPoints($userId); $this->assertEquals( '/' . $userId . '/cache/', - \OC\Files\Filesystem::getMountPoint('/' . $userId . '/cache') + Filesystem::getMountPoint('/' . $userId . '/cache') ); - [$storage, $internalPath] = \OC\Files\Filesystem::resolvePath('/' . $userId . '/cache'); + [$storage, $internalPath] = Filesystem::resolvePath('/' . $userId . '/cache'); $this->assertTrue($storage->instanceOfStorage('\OC\Files\Storage\Local')); $this->assertEquals('', $internalPath); - $user = \OC::$server->getUserManager()->get($userId); + $user = Server::get(IUserManager::class)->get($userId); if ($user !== null) { $user->delete(); } @@ -468,11 +474,11 @@ class FilesystemTest extends \Test\TestCase { } public function testRegisterMountProviderAfterSetup(): void { - \OC\Files\Filesystem::initMountPoints(self::TEST_FILESYSTEM_USER2); - $this->assertEquals('/', \OC\Files\Filesystem::getMountPoint('/foo/bar')); + Filesystem::initMountPoints(self::TEST_FILESYSTEM_USER2); + $this->assertEquals('/', Filesystem::getMountPoint('/foo/bar')); $mount = new MountPoint(new Temporary([]), '/foo/bar'); $mountProvider = new DummyMountProvider([self::TEST_FILESYSTEM_USER2 => [$mount]]); - \OC::$server->getMountProviderCollection()->registerProvider($mountProvider); - $this->assertEquals('/foo/bar/', \OC\Files\Filesystem::getMountPoint('/foo/bar')); + Server::get(IMountProviderCollection::class)->registerProvider($mountProvider); + $this->assertEquals('/foo/bar/', Filesystem::getMountPoint('/foo/bar')); } } diff --git a/tests/lib/Files/Mount/ManagerTest.php b/tests/lib/Files/Mount/ManagerTest.php index 12338c18dbd..b2ddf2d8ef4 100644 --- a/tests/lib/Files/Mount/ManagerTest.php +++ b/tests/lib/Files/Mount/ManagerTest.php @@ -7,6 +7,7 @@ namespace Test\Files\Mount; +use OC\Files\Mount\MountPoint; use OC\Files\SetupManagerFactory; use OC\Files\Storage\Temporary; @@ -28,33 +29,33 @@ class ManagerTest extends \Test\TestCase { } public function testFind(): void { - $rootMount = new \OC\Files\Mount\MountPoint(new Temporary([]), '/'); + $rootMount = new MountPoint(new Temporary([]), '/'); $this->manager->addMount($rootMount); $this->assertEquals($rootMount, $this->manager->find('/')); $this->assertEquals($rootMount, $this->manager->find('/foo/bar')); $storage = new Temporary([]); - $mount1 = new \OC\Files\Mount\MountPoint($storage, '/foo'); + $mount1 = new MountPoint($storage, '/foo'); $this->manager->addMount($mount1); $this->assertEquals($rootMount, $this->manager->find('/')); $this->assertEquals($mount1, $this->manager->find('/foo/bar')); $this->assertEquals(1, count($this->manager->findIn('/'))); - $mount2 = new \OC\Files\Mount\MountPoint(new Temporary([]), '/bar'); + $mount2 = new MountPoint(new Temporary([]), '/bar'); $this->manager->addMount($mount2); $this->assertEquals(2, count($this->manager->findIn('/'))); $id = $mount1->getStorageId(); $this->assertEquals([$mount1], $this->manager->findByStorageId($id)); - $mount3 = new \OC\Files\Mount\MountPoint($storage, '/foo/bar'); + $mount3 = new MountPoint($storage, '/foo/bar'); $this->manager->addMount($mount3); $this->assertEquals([$mount1, $mount3], $this->manager->findByStorageId($id)); } public function testLong(): void { $storage = new LongId([]); - $mount = new \OC\Files\Mount\MountPoint($storage, '/foo'); + $mount = new MountPoint($storage, '/foo'); $this->manager->addMount($mount); $id = $mount->getStorageId(); diff --git a/tests/lib/Files/Mount/MountPointTest.php b/tests/lib/Files/Mount/MountPointTest.php index 96987c9f5eb..af66a9028eb 100644 --- a/tests/lib/Files/Mount/MountPointTest.php +++ b/tests/lib/Files/Mount/MountPointTest.php @@ -7,6 +7,7 @@ namespace Test\Files\Mount; +use OC\Files\Mount\MountPoint; use OC\Files\Storage\StorageFactory; use OC\Lockdown\Filesystem\NullStorage; use OCP\Files\Storage\IStorage; @@ -23,7 +24,7 @@ class MountPointTest extends \Test\TestCase { ->method('wrap') ->willReturn($storage); - $mountPoint = new \OC\Files\Mount\MountPoint( + $mountPoint = new MountPoint( // just use this because a real class is needed NullStorage::class, '/mountpoint', @@ -43,14 +44,14 @@ class MountPointTest extends \Test\TestCase { $loader = $this->createMock(StorageFactory::class); $loader->expects($this->once()) ->method('wrap') - ->will($this->throwException(new \Exception('Test storage init exception'))); + ->willThrowException(new \Exception('Test storage init exception')); $called = false; - $wrapper = function ($mountPoint, $storage) use ($called) { + $wrapper = function ($mountPoint, $storage) use ($called): void { $called = true; }; - $mountPoint = new \OC\Files\Mount\MountPoint( + $mountPoint = new MountPoint( // just use this because a real class is needed NullStorage::class, '/mountpoint', diff --git a/tests/lib/Files/Mount/MountTest.php b/tests/lib/Files/Mount/MountTest.php index 76d70cdd214..7be7fc67cd6 100644 --- a/tests/lib/Files/Mount/MountTest.php +++ b/tests/lib/Files/Mount/MountTest.php @@ -7,6 +7,7 @@ namespace Test\Files\Mount; +use OC\Files\Mount\MountPoint; use OC\Files\Storage\StorageFactory; use OC\Files\Storage\Wrapper\Wrapper; @@ -15,12 +16,12 @@ class MountTest extends \Test\TestCase { $storage = $this->getMockBuilder('\OC\Files\Storage\Temporary') ->disableOriginalConstructor() ->getMock(); - $mount = new \OC\Files\Mount\MountPoint($storage, '/foo'); + $mount = new MountPoint($storage, '/foo'); $this->assertInstanceOf('\OC\Files\Storage\Temporary', $mount->getStorage()); } public function testFromStorageClassname(): void { - $mount = new \OC\Files\Mount\MountPoint('\OC\Files\Storage\Temporary', '/foo'); + $mount = new MountPoint('\OC\Files\Storage\Temporary', '/foo'); $this->assertInstanceOf('\OC\Files\Storage\Temporary', $mount->getStorage()); } @@ -38,7 +39,7 @@ class MountTest extends \Test\TestCase { $storage = $this->getMockBuilder('\OC\Files\Storage\Temporary') ->disableOriginalConstructor() ->getMock(); - $mount = new \OC\Files\Mount\MountPoint($storage, '/foo', [], $loader); + $mount = new MountPoint($storage, '/foo', [], $loader); $this->assertInstanceOf('\OC\Files\Storage\Wrapper\Wrapper', $mount->getStorage()); } } diff --git a/tests/lib/Files/Mount/ObjectHomeMountProviderTest.php b/tests/lib/Files/Mount/ObjectHomeMountProviderTest.php index 3daf82461cb..c0b49813c93 100644 --- a/tests/lib/Files/Mount/ObjectHomeMountProviderTest.php +++ b/tests/lib/Files/Mount/ObjectHomeMountProviderTest.php @@ -7,6 +7,9 @@ namespace Test\Files\Mount; use OC\Files\Mount\ObjectHomeMountProvider; +use OC\Files\ObjectStore\PrimaryObjectStoreConfig; +use OCP\App\IAppManager; +use OCP\Files\ObjectStore\IObjectStore; use OCP\Files\Storage\IStorageFactory; use OCP\IConfig; use OCP\IUser; @@ -31,51 +34,54 @@ class ObjectHomeMountProviderTest extends \Test\TestCase { $this->user = $this->createMock(IUser::class); $this->loader = $this->createMock(IStorageFactory::class); - $this->provider = new ObjectHomeMountProvider($this->config); + $objectStoreConfig = new PrimaryObjectStoreConfig($this->config, $this->createMock(IAppManager::class)); + $this->provider = new ObjectHomeMountProvider($objectStoreConfig); } public function testSingleBucket(): void { - $this->config->expects($this->once()) - ->method('getSystemValue') - ->with($this->equalTo('objectstore'), '') - ->willReturn([ - 'class' => 'Test\Files\Mount\FakeObjectStore', - ]); - - $this->user->expects($this->never())->method($this->anything()); - $this->loader->expects($this->never())->method($this->anything()); + $this->config->method('getSystemValue') + ->willReturnCallback(function ($key, $default) { + if ($key === 'objectstore') { + return [ + 'class' => 'Test\Files\Mount\FakeObjectStore', + 'arguments' => [ + 'foo' => 'bar' + ], + ]; + } else { + return $default; + } + }); - $config = $this->invokePrivate($this->provider, 'getSingleBucketObjectStoreConfig', [$this->user, $this->loader]); + $mount = $this->provider->getHomeMountForUser($this->user, $this->loader); + $arguments = $this->invokePrivate($mount, 'arguments'); - $this->assertArrayHasKey('class', $config); - $this->assertEquals($config['class'], 'Test\Files\Mount\FakeObjectStore'); - $this->assertArrayHasKey('arguments', $config); - $this->assertArrayHasKey('user', $config['arguments']); - $this->assertSame($this->user, $config['arguments']['user']); - $this->assertArrayHasKey('objectstore', $config['arguments']); - $this->assertInstanceOf('Test\Files\Mount\FakeObjectStore', $config['arguments']['objectstore']); + $objectStore = $arguments['objectstore']; + $this->assertInstanceOf(FakeObjectStore::class, $objectStore); + $this->assertEquals(['foo' => 'bar', 'multibucket' => false], $objectStore->getArguments()); } public function testMultiBucket(): void { - $this->config->expects($this->exactly(2)) - ->method('getSystemValue') - ->with($this->equalTo('objectstore_multibucket'), '') - ->willReturn([ - 'class' => 'Test\Files\Mount\FakeObjectStore', - ]); + $this->config->method('getSystemValue') + ->willReturnCallback(function ($key, $default) { + if ($key === 'objectstore_multibucket') { + return [ + 'class' => 'Test\Files\Mount\FakeObjectStore', + 'arguments' => [ + 'foo' => 'bar' + ], + ]; + } else { + return $default; + } + }); $this->user->method('getUID') ->willReturn('uid'); $this->loader->expects($this->never())->method($this->anything()); - $this->config->expects($this->once()) - ->method('getUserValue') - ->with( - $this->equalTo('uid'), - $this->equalTo('homeobjectstore'), - $this->equalTo('bucket'), - $this->equalTo(null) - )->willReturn(null); + $this->config->method('getUserValue') + ->willReturn(null); $this->config->expects($this->once()) ->method('setUserValue') @@ -87,42 +93,37 @@ class ObjectHomeMountProviderTest extends \Test\TestCase { $this->equalTo(null) ); - $config = $this->invokePrivate($this->provider, 'getMultiBucketObjectStoreConfig', [$this->user, $this->loader]); + $mount = $this->provider->getHomeMountForUser($this->user, $this->loader); + $arguments = $this->invokePrivate($mount, 'arguments'); - $this->assertArrayHasKey('class', $config); - $this->assertEquals($config['class'], 'Test\Files\Mount\FakeObjectStore'); - $this->assertArrayHasKey('arguments', $config); - $this->assertArrayHasKey('user', $config['arguments']); - $this->assertSame($this->user, $config['arguments']['user']); - $this->assertArrayHasKey('objectstore', $config['arguments']); - $this->assertInstanceOf('Test\Files\Mount\FakeObjectStore', $config['arguments']['objectstore']); - $this->assertArrayHasKey('bucket', $config['arguments']); - $this->assertEquals('49', $config['arguments']['bucket']); + $objectStore = $arguments['objectstore']; + $this->assertInstanceOf(FakeObjectStore::class, $objectStore); + $this->assertEquals(['foo' => 'bar', 'bucket' => 49, 'multibucket' => true], $objectStore->getArguments()); } public function testMultiBucketWithPrefix(): void { - $this->config->expects($this->exactly(2)) - ->method('getSystemValue') - ->with('objectstore_multibucket') - ->willReturn([ - 'class' => 'Test\Files\Mount\FakeObjectStore', - 'arguments' => [ - 'bucket' => 'myBucketPrefix', - ], - ]); + $this->config->method('getSystemValue') + ->willReturnCallback(function ($key, $default) { + if ($key === 'objectstore_multibucket') { + return [ + 'class' => 'Test\Files\Mount\FakeObjectStore', + 'arguments' => [ + 'foo' => 'bar', + 'bucket' => 'myBucketPrefix', + ], + ]; + } else { + return $default; + } + }); $this->user->method('getUID') ->willReturn('uid'); $this->loader->expects($this->never())->method($this->anything()); - $this->config->expects($this->once()) + $this->config ->method('getUserValue') - ->with( - $this->equalTo('uid'), - $this->equalTo('homeobjectstore'), - $this->equalTo('bucket'), - $this->equalTo(null) - )->willReturn(null); + ->willReturn(null); $this->config->expects($this->once()) ->method('setUserValue') @@ -134,66 +135,70 @@ class ObjectHomeMountProviderTest extends \Test\TestCase { $this->equalTo(null) ); - $config = $this->invokePrivate($this->provider, 'getMultiBucketObjectStoreConfig', [$this->user, $this->loader]); + $mount = $this->provider->getHomeMountForUser($this->user, $this->loader); + $arguments = $this->invokePrivate($mount, 'arguments'); - $this->assertArrayHasKey('class', $config); - $this->assertEquals($config['class'], 'Test\Files\Mount\FakeObjectStore'); - $this->assertArrayHasKey('arguments', $config); - $this->assertArrayHasKey('user', $config['arguments']); - $this->assertSame($this->user, $config['arguments']['user']); - $this->assertArrayHasKey('objectstore', $config['arguments']); - $this->assertInstanceOf('Test\Files\Mount\FakeObjectStore', $config['arguments']['objectstore']); - $this->assertArrayHasKey('bucket', $config['arguments']); - $this->assertEquals('myBucketPrefix49', $config['arguments']['bucket']); + $objectStore = $arguments['objectstore']; + $this->assertInstanceOf(FakeObjectStore::class, $objectStore); + $this->assertEquals(['foo' => 'bar', 'bucket' => 'myBucketPrefix49', 'multibucket' => true], $objectStore->getArguments()); } public function testMultiBucketBucketAlreadySet(): void { - $this->config->expects($this->once()) - ->method('getSystemValue') - ->with('objectstore_multibucket') - ->willReturn([ - 'class' => 'Test\Files\Mount\FakeObjectStore', - 'arguments' => [ - 'bucket' => 'myBucketPrefix', - ], - ]); + $this->config->method('getSystemValue') + ->willReturnCallback(function ($key, $default) { + if ($key === 'objectstore_multibucket') { + return [ + 'class' => 'Test\Files\Mount\FakeObjectStore', + 'arguments' => [ + 'foo' => 'bar', + 'bucket' => 'myBucketPrefix', + ], + ]; + } else { + return $default; + } + }); $this->user->method('getUID') ->willReturn('uid'); $this->loader->expects($this->never())->method($this->anything()); - $this->config->expects($this->once()) + $this->config ->method('getUserValue') - ->with( - $this->equalTo('uid'), - $this->equalTo('homeobjectstore'), - $this->equalTo('bucket'), - $this->equalTo(null) - )->willReturn('awesomeBucket1'); + ->willReturnCallback(function ($uid, $app, $key, $default) { + if ($uid === 'uid' && $app === 'homeobjectstore' && $key === 'bucket') { + return 'awesomeBucket1'; + } else { + return $default; + } + }); $this->config->expects($this->never()) ->method('setUserValue'); - $config = $this->invokePrivate($this->provider, 'getMultiBucketObjectStoreConfig', [$this->user, $this->loader]); + $mount = $this->provider->getHomeMountForUser($this->user, $this->loader); + $arguments = $this->invokePrivate($mount, 'arguments'); - $this->assertArrayHasKey('class', $config); - $this->assertEquals($config['class'], 'Test\Files\Mount\FakeObjectStore'); - $this->assertArrayHasKey('arguments', $config); - $this->assertArrayHasKey('user', $config['arguments']); - $this->assertSame($this->user, $config['arguments']['user']); - $this->assertArrayHasKey('objectstore', $config['arguments']); - $this->assertInstanceOf('Test\Files\Mount\FakeObjectStore', $config['arguments']['objectstore']); - $this->assertArrayHasKey('bucket', $config['arguments']); - $this->assertEquals('awesomeBucket1', $config['arguments']['bucket']); + $objectStore = $arguments['objectstore']; + $this->assertInstanceOf(FakeObjectStore::class, $objectStore); + $this->assertEquals(['foo' => 'bar', 'bucket' => 'awesomeBucket1', 'multibucket' => true], $objectStore->getArguments()); } public function testMultiBucketConfigFirst(): void { - $this->config->expects($this->exactly(2)) - ->method('getSystemValue') - ->with('objectstore_multibucket') - ->willReturn([ - 'class' => 'Test\Files\Mount\FakeObjectStore', - ]); + $this->config->method('getSystemValue') + ->willReturnCallback(function ($key, $default) { + if ($key === 'objectstore_multibucket') { + return [ + 'class' => 'Test\Files\Mount\FakeObjectStore', + 'arguments' => [ + 'foo' => 'bar', + 'bucket' => 'myBucketPrefix', + ], + ]; + } else { + return $default; + } + }); $this->user->method('getUID') ->willReturn('uid'); @@ -204,11 +209,15 @@ class ObjectHomeMountProviderTest extends \Test\TestCase { } public function testMultiBucketConfigFirstFallBackSingle(): void { - $this->config->expects($this->exactly(2)) + $this->config ->method('getSystemValue')->willReturnMap([ - ['objectstore_multibucket', '', ''], - ['objectstore', '', [ + ['objectstore_multibucket', null, null], + ['objectstore', null, [ 'class' => 'Test\Files\Mount\FakeObjectStore', + 'arguments' => [ + 'foo' => 'bar', + 'bucket' => 'myBucketPrefix', + ], ]], ]); @@ -221,23 +230,41 @@ class ObjectHomeMountProviderTest extends \Test\TestCase { } public function testNoObjectStore(): void { - $this->config->expects($this->exactly(2)) - ->method('getSystemValue') - ->willReturn(''); + $this->config->method('getSystemValue') + ->willReturnCallback(function ($key, $default) { + return $default; + }); $mount = $this->provider->getHomeMountForUser($this->user, $this->loader); $this->assertNull($mount); } } -class FakeObjectStore { - private $arguments; - - public function __construct(array $arguments) { - $this->arguments = $arguments; +class FakeObjectStore implements IObjectStore { + public function __construct( + private array $arguments, + ) { } public function getArguments() { return $this->arguments; } + + public function getStorageId() { + } + + public function readObject($urn) { + } + + public function writeObject($urn, $stream, ?string $mimetype = null) { + } + + public function deleteObject($urn) { + } + + public function objectExists($urn) { + } + + public function copyObject($from, $to) { + } } diff --git a/tests/lib/Files/Mount/RootMountProviderTest.php b/tests/lib/Files/Mount/RootMountProviderTest.php index 2613cfd4b7b..bf29bfa070a 100644 --- a/tests/lib/Files/Mount/RootMountProviderTest.php +++ b/tests/lib/Files/Mount/RootMountProviderTest.php @@ -10,11 +10,12 @@ namespace Test\Files\Mount; use OC\Files\Mount\RootMountProvider; use OC\Files\ObjectStore\ObjectStoreStorage; +use OC\Files\ObjectStore\PrimaryObjectStoreConfig; use OC\Files\ObjectStore\S3; use OC\Files\Storage\LocalRootStorage; use OC\Files\Storage\StorageFactory; +use OCP\App\IAppManager; use OCP\IConfig; -use Psr\Log\LoggerInterface; use Test\TestCase; /** @@ -40,8 +41,8 @@ class RootMountProviderTest extends TestCase { private function getProvider(array $systemConfig): RootMountProvider { $config = $this->getConfig($systemConfig); - $provider = new RootMountProvider($config, $this->createMock(LoggerInterface::class)); - return $provider; + $objectStoreConfig = new PrimaryObjectStoreConfig($config, $this->createMock(IAppManager::class)); + return new RootMountProvider($objectStoreConfig, $config); } public function testLocal(): void { diff --git a/tests/lib/Files/Node/FileTest.php b/tests/lib/Files/Node/FileTest.php index a67c9433663..f3d893d5af2 100644 --- a/tests/lib/Files/Node/FileTest.php +++ b/tests/lib/Files/Node/FileTest.php @@ -7,6 +7,11 @@ namespace Test\Files\Node; +use OC\Files\Node\File; +use OC\Files\Node\Root; +use OCP\Constants; +use OCP\Files\NotPermittedException; + /** * Class FileTest * @@ -14,12 +19,12 @@ namespace Test\Files\Node; * * @package Test\Files\Node */ -class FileTest extends NodeTest { +class FileTest extends NodeTestCase { protected function createTestNode($root, $view, $path, array $data = [], $internalPath = '', $storage = null) { if ($data || $internalPath || $storage) { - return new \OC\Files\Node\File($root, $view, $path, $this->getFileInfo($data, $internalPath, $storage)); + return new File($root, $view, $path, $this->getFileInfo($data, $internalPath, $storage)); } else { - return new \OC\Files\Node\File($root, $view, $path); + return new File($root, $view, $path); } } @@ -37,11 +42,11 @@ class FileTest extends NodeTest { public function testGetContent(): void { /** @var \OC\Files\Node\Root|\PHPUnit\Framework\MockObject\MockObject $root */ - $root = $this->getMockBuilder('\OC\Files\Node\Root') + $root = $this->getMockBuilder(Root::class) ->setConstructorArgs([$this->manager, $this->view, $this->user, $this->userMountCache, $this->logger, $this->userManager, $this->eventDispatcher, $this->cacheFactory]) ->getMock(); - $hook = function ($file) { + $hook = function ($file): void { throw new \Exception('Hooks are not supposed to be called'); }; @@ -56,18 +61,18 @@ class FileTest extends NodeTest { $this->view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_READ])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_READ])); - $node = new \OC\Files\Node\File($root, $this->view, '/bar/foo'); + $node = new File($root, $this->view, '/bar/foo'); $this->assertEquals('bar', $node->getContent()); } public function testGetContentNotPermitted(): void { - $this->expectException(\OCP\Files\NotPermittedException::class); + $this->expectException(NotPermittedException::class); /** @var \OC\Files\Node\Root|\PHPUnit\Framework\MockObject\MockObject $root */ - $root = $this->getMockBuilder('\OC\Files\Node\Root') + $root = $this->getMockBuilder(Root::class) ->setConstructorArgs([$this->manager, $this->view, $this->user, $this->userMountCache, $this->logger, $this->userManager, $this->eventDispatcher, $this->cacheFactory]) ->getMock(); @@ -80,13 +85,13 @@ class FileTest extends NodeTest { ->with('/bar/foo') ->willReturn($this->getFileInfo(['permissions' => 0])); - $node = new \OC\Files\Node\File($root, $this->view, '/bar/foo'); + $node = new File($root, $this->view, '/bar/foo'); $node->getContent(); } public function testPutContent(): void { /** @var \OC\Files\Node\Root|\PHPUnit\Framework\MockObject\MockObject $root */ - $root = $this->getMockBuilder('\OC\Files\Node\Root') + $root = $this->getMockBuilder(Root::class) ->setConstructorArgs([$this->manager, $this->view, $this->user, $this->userMountCache, $this->logger, $this->userManager, $this->eventDispatcher, $this->cacheFactory]) ->getMock(); @@ -97,38 +102,38 @@ class FileTest extends NodeTest { $this->view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_ALL])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_ALL])); $this->view->expects($this->once()) ->method('file_put_contents') ->with('/bar/foo', 'bar') ->willReturn(true); - $node = new \OC\Files\Node\File($root, $this->view, '/bar/foo'); + $node = new File($root, $this->view, '/bar/foo'); $node->putContent('bar'); } public function testPutContentNotPermitted(): void { - $this->expectException(\OCP\Files\NotPermittedException::class); + $this->expectException(NotPermittedException::class); /** @var \OC\Files\Node\Root|\PHPUnit\Framework\MockObject\MockObject $root */ - $root = $this->getMockBuilder('\OC\Files\Node\Root') + $root = $this->getMockBuilder(Root::class) ->setConstructorArgs([$this->manager, $this->view, $this->user, $this->userMountCache, $this->logger, $this->userManager, $this->eventDispatcher, $this->cacheFactory]) ->getMock(); $this->view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_READ])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_READ])); - $node = new \OC\Files\Node\File($root, $this->view, '/bar/foo'); + $node = new File($root, $this->view, '/bar/foo'); $node->putContent('bar'); } public function testGetMimeType(): void { /** @var \OC\Files\Node\Root|\PHPUnit\Framework\MockObject\MockObject $root */ - $root = $this->getMockBuilder('\OC\Files\Node\Root') + $root = $this->getMockBuilder(Root::class) ->setConstructorArgs([$this->manager, $this->view, $this->user, $this->userMountCache, $this->logger, $this->userManager, $this->eventDispatcher, $this->cacheFactory]) ->getMock(); @@ -137,7 +142,7 @@ class FileTest extends NodeTest { ->with('/bar/foo') ->willReturn($this->getFileInfo(['mimetype' => 'text/plain'])); - $node = new \OC\Files\Node\File($root, $this->view, '/bar/foo'); + $node = new File($root, $this->view, '/bar/foo'); $this->assertEquals('text/plain', $node->getMimeType()); } @@ -146,7 +151,7 @@ class FileTest extends NodeTest { fwrite($stream, 'bar'); rewind($stream); - $root = new \OC\Files\Node\Root( + $root = new Root( $this->manager, $this->view, $this->user, @@ -157,7 +162,7 @@ class FileTest extends NodeTest { $this->cacheFactory, ); - $hook = function ($file) { + $hook = function ($file): void { throw new \Exception('Hooks are not supposed to be called'); }; @@ -172,9 +177,9 @@ class FileTest extends NodeTest { $this->view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_ALL])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_ALL])); - $node = new \OC\Files\Node\File($root, $this->view, '/bar/foo'); + $node = new File($root, $this->view, '/bar/foo'); $fh = $node->fopen('r'); $this->assertEquals($stream, $fh); $this->assertEquals('bar', fread($fh, 3)); @@ -183,7 +188,7 @@ class FileTest extends NodeTest { public function testFOpenWrite(): void { $stream = fopen('php://memory', 'w+'); - $root = new \OC\Files\Node\Root( + $root = new Root( $this->manager, $this->view, $this->user, @@ -194,7 +199,7 @@ class FileTest extends NodeTest { $this->cacheFactory, ); $hooksCalled = 0; - $hook = function ($file) use (&$hooksCalled) { + $hook = function ($file) use (&$hooksCalled): void { $hooksCalled++; }; @@ -209,9 +214,9 @@ class FileTest extends NodeTest { $this->view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_ALL])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_ALL])); - $node = new \OC\Files\Node\File($root, $this->view, '/bar/foo'); + $node = new File($root, $this->view, '/bar/foo'); $fh = $node->fopen('w'); $this->assertEquals($stream, $fh); fwrite($fh, 'bar'); @@ -222,9 +227,9 @@ class FileTest extends NodeTest { public function testFOpenReadNotPermitted(): void { - $this->expectException(\OCP\Files\NotPermittedException::class); + $this->expectException(NotPermittedException::class); - $root = new \OC\Files\Node\Root( + $root = new Root( $this->manager, $this->view, $this->user, @@ -234,7 +239,7 @@ class FileTest extends NodeTest { $this->eventDispatcher, $this->cacheFactory, ); - $hook = function ($file) { + $hook = function ($file): void { throw new \Exception('Hooks are not supposed to be called'); }; @@ -243,15 +248,15 @@ class FileTest extends NodeTest { ->with('/bar/foo') ->willReturn($this->getFileInfo(['permissions' => 0])); - $node = new \OC\Files\Node\File($root, $this->view, '/bar/foo'); + $node = new File($root, $this->view, '/bar/foo'); $node->fopen('r'); } public function testFOpenReadWriteNoReadPermissions(): void { - $this->expectException(\OCP\Files\NotPermittedException::class); + $this->expectException(NotPermittedException::class); - $root = new \OC\Files\Node\Root( + $root = new Root( $this->manager, $this->view, $this->user, @@ -261,24 +266,24 @@ class FileTest extends NodeTest { $this->eventDispatcher, $this->cacheFactory, ); - $hook = function () { + $hook = function (): void { throw new \Exception('Hooks are not supposed to be called'); }; $this->view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_UPDATE])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_UPDATE])); - $node = new \OC\Files\Node\File($root, $this->view, '/bar/foo'); + $node = new File($root, $this->view, '/bar/foo'); $node->fopen('w'); } public function testFOpenReadWriteNoWritePermissions(): void { - $this->expectException(\OCP\Files\NotPermittedException::class); + $this->expectException(NotPermittedException::class); - $root = new \OC\Files\Node\Root( + $root = new Root( $this->manager, $this->view, $this->user, @@ -288,16 +293,16 @@ class FileTest extends NodeTest { $this->eventDispatcher, $this->cacheFactory, ); - $hook = function () { + $hook = function (): void { throw new \Exception('Hooks are not supposed to be called'); }; $this->view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_READ])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_READ])); - $node = new \OC\Files\Node\File($root, $this->view, '/bar/foo'); + $node = new File($root, $this->view, '/bar/foo'); $node->fopen('w'); } } diff --git a/tests/lib/Files/Node/FolderTest.php b/tests/lib/Files/Node/FolderTest.php index e3edf202f8e..53e8f07a0d3 100644 --- a/tests/lib/Files/Node/FolderTest.php +++ b/tests/lib/Files/Node/FolderTest.php @@ -21,12 +21,15 @@ use OC\Files\Search\SearchBinaryOperator; use OC\Files\Search\SearchComparison; use OC\Files\Search\SearchOrder; use OC\Files\Search\SearchQuery; +use OC\Files\Storage\Storage; use OC\Files\Storage\Temporary; use OC\Files\Storage\Wrapper\Jail; +use OCP\Constants; use OCP\Files\Cache\ICacheEntry; use OCP\Files\IRootFolder; use OCP\Files\Mount\IMountPoint; use OCP\Files\NotFoundException; +use OCP\Files\NotPermittedException; use OCP\Files\Search\ISearchBinaryOperator; use OCP\Files\Search\ISearchComparison; use OCP\Files\Search\ISearchOrder; @@ -40,7 +43,7 @@ use PHPUnit\Framework\MockObject\MockObject; * * @package Test\Files\Node */ -class FolderTest extends NodeTest { +class FolderTest extends NodeTestCase { protected function createTestNode($root, $view, $path, array $data = [], $internalPath = '', $storage = null) { $view->expects($this->any()) ->method('getRoot') @@ -150,7 +153,7 @@ class FolderTest extends NodeTest { $root->method('get') ->with('/bar/foo/asd') - ->will($this->throwException(new NotFoundException())); + ->willThrowException(new NotFoundException()); $node = new Folder($root, $view, '/bar/foo'); $this->assertFalse($node->nodeExists('asd')); @@ -168,7 +171,7 @@ class FolderTest extends NodeTest { $view->method('getFileInfo') ->with('/bar/foo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_ALL])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_ALL])); $view->method('mkdir') ->with('/bar/foo/asd') @@ -192,7 +195,7 @@ class FolderTest extends NodeTest { $view->method('getFileInfo') ->with('/foobar') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_ALL])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_ALL])); $view->method('mkdir') ->with('/foobar/asd/sdf') @@ -206,7 +209,7 @@ class FolderTest extends NodeTest { public function testNewFolderNotPermitted(): void { - $this->expectException(\OCP\Files\NotPermittedException::class); + $this->expectException(NotPermittedException::class); $manager = $this->createMock(Manager::class); $view = $this->getRootViewMock(); @@ -218,7 +221,7 @@ class FolderTest extends NodeTest { $view->method('getFileInfo') ->with('/bar/foo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_READ])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_READ])); $node = new Folder($root, $view, '/bar/foo'); $node->newFolder('asd'); @@ -236,21 +239,21 @@ class FolderTest extends NodeTest { $view->method('getFileInfo') ->with('/bar/foo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_ALL])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_ALL])); $view->method('touch') ->with('/bar/foo/asd') ->willReturn(true); $node = new Folder($root, $view, '/bar/foo'); - $child = new \OC\Files\Node\File($root, $view, '/bar/foo/asd', null, $node); + $child = new File($root, $view, '/bar/foo/asd', null, $node); $result = $node->newFile('asd'); $this->assertEquals($child, $result); } public function testNewFileNotPermitted(): void { - $this->expectException(\OCP\Files\NotPermittedException::class); + $this->expectException(NotPermittedException::class); $manager = $this->createMock(Manager::class); $view = $this->getRootViewMock(); @@ -262,7 +265,7 @@ class FolderTest extends NodeTest { $view->method('getFileInfo') ->with('/bar/foo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_READ])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_READ])); $node = new Folder($root, $view, '/bar/foo'); $node->newFile('asd'); @@ -337,7 +340,7 @@ class FolderTest extends NodeTest { $manager = $this->createMock(Manager::class); $view = $this->getRootViewMock(); $root = $this->getMockBuilder(Root::class) - ->setMethods(['getUser', 'getMountsIn', 'getMount']) + ->onlyMethods(['getUser', 'getMountsIn', 'getMount']) ->setConstructorArgs([$manager, $view, $this->user, $this->userMountCache, $this->logger, $this->userManager, $this->eventDispatcher, $this->cacheFactory]) ->getMock(); $root->expects($this->any()) @@ -499,10 +502,10 @@ class FolderTest extends NodeTest { $manager = $this->createMock(Manager::class); $view = $this->getRootViewMock(); $root = $this->getMockBuilder(Root::class) - ->setMethods(['getMountsIn', 'getMount']) + ->onlyMethods(['getMountsIn', 'getMount']) ->setConstructorArgs([$manager, $view, $this->user, $this->userMountCache, $this->logger, $this->userManager, $this->eventDispatcher, $this->cacheFactory]) ->getMock(); - $storage = $this->createMock(\OC\Files\Storage\Storage::class); + $storage = $this->createMock(Storage::class); $mount = new MountPoint($storage, '/bar'); $storage->method('getId')->willReturn(''); $cache = $this->getMockBuilder(Cache::class)->setConstructorArgs([$storage])->getMock(); @@ -548,10 +551,10 @@ class FolderTest extends NodeTest { $manager = $this->createMock(Manager::class); $view = $this->getRootViewMock(); $root = $this->getMockBuilder(Root::class) - ->setMethods(['getMountsIn', 'getMount']) + ->onlyMethods(['getMountsIn', 'getMount']) ->setConstructorArgs([$manager, $view, $this->user, $this->userMountCache, $this->logger, $this->userManager, $this->eventDispatcher, $this->cacheFactory]) ->getMock(); - $storage = $this->createMock(\OC\Files\Storage\Storage::class); + $storage = $this->createMock(Storage::class); $mount = new MountPoint($storage, '/bar'); $storage->method('getId')->willReturn(''); $cache = $this->getMockBuilder(Cache::class)->setConstructorArgs([$storage])->getMock(); @@ -593,10 +596,10 @@ class FolderTest extends NodeTest { $manager = $this->createMock(Manager::class); $view = $this->getRootViewMock(); $root = $this->getMockBuilder(Root::class) - ->setMethods(['getMountsIn', 'getMount']) + ->onlyMethods(['getMountsIn', 'getMount']) ->setConstructorArgs([$manager, $view, $this->user, $this->userMountCache, $this->logger, $this->userManager, $this->eventDispatcher, $this->cacheFactory]) ->getMock(); - $storage = $this->createMock(\OC\Files\Storage\Storage::class); + $storage = $this->createMock(Storage::class); $mount = new MountPoint($storage, '/bar'); $storage->method('getId')->willReturn(''); $cache = $this->getMockBuilder(Cache::class)->setConstructorArgs([$storage])->getMock(); @@ -637,10 +640,10 @@ class FolderTest extends NodeTest { $manager = $this->createMock(Manager::class); $view = $this->getRootViewMock(); $root = $this->getMockBuilder(Root::class) - ->setMethods(['getMountsIn', 'getMount']) + ->onlyMethods(['getMountsIn', 'getMount']) ->setConstructorArgs([$manager, $view, $this->user, $this->userMountCache, $this->logger, $this->userManager, $this->eventDispatcher, $this->cacheFactory]) ->getMock(); - $storage = $this->createMock(\OC\Files\Storage\Storage::class); + $storage = $this->createMock(Storage::class); $mount1 = new MountPoint($storage, '/bar'); $mount2 = new MountPoint($storage, '/bar/foo/asd'); $storage->method('getId')->willReturn(''); @@ -681,7 +684,7 @@ class FolderTest extends NodeTest { $this->assertEquals('/bar/foo/asd/foo/qwerty', $result[1]->getPath()); } - public function uniqueNameProvider() { + public static function uniqueNameProvider(): array { return [ // input, existing, expected ['foo', [], 'foo'], @@ -698,7 +701,7 @@ class FolderTest extends NodeTest { $folderPath = '/bar/foo'; $view = $this->getRootViewMock(); $root = $this->getMockBuilder(Root::class) - ->setMethods(['getUser', 'getMountsIn', 'getMount']) + ->onlyMethods(['getUser', 'getMountsIn', 'getMount']) ->setConstructorArgs([$manager, $view, $this->user, $this->userMountCache, $this->logger, $this->userManager, $this->eventDispatcher, $this->cacheFactory]) ->getMock(); @@ -723,7 +726,7 @@ class FolderTest extends NodeTest { $view = $this->getRootViewMock(); /** @var \PHPUnit\Framework\MockObject\MockObject|\OC\Files\Node\Root $root */ $root = $this->getMockBuilder(Root::class) - ->setMethods(['getUser', 'getMountsIn', 'getMount']) + ->onlyMethods(['getUser', 'getMountsIn', 'getMount']) ->setConstructorArgs([$manager, $view, $this->user, $this->userMountCache, $this->logger, $this->userManager, $this->eventDispatcher, $this->cacheFactory]) ->getMock(); /** @var \PHPUnit\Framework\MockObject\MockObject|\OC\Files\FileInfo $folderInfo */ @@ -753,14 +756,14 @@ class FolderTest extends NodeTest { 'mtime' => $baseTime, 'mimetype' => 'text/plain', 'size' => 3, - 'permissions' => \OCP\Constants::PERMISSION_ALL, + 'permissions' => Constants::PERMISSION_ALL, ]); $id2 = $cache->put('bar/foo/old.txt', [ 'storage_mtime' => $baseTime - 100, 'mtime' => $baseTime - 100, 'mimetype' => 'text/plain', 'size' => 3, - 'permissions' => \OCP\Constants::PERMISSION_READ, + 'permissions' => Constants::PERMISSION_READ, ]); $cache->put('bar/asd/outside.txt', [ 'storage_mtime' => $baseTime, @@ -773,7 +776,7 @@ class FolderTest extends NodeTest { 'mtime' => $baseTime - 600, 'mimetype' => 'text/plain', 'size' => 3, - 'permissions' => \OCP\Constants::PERMISSION_ALL, + 'permissions' => Constants::PERMISSION_ALL, ]); $node = new Folder($root, $view, $folderPath, $folderInfo); @@ -792,7 +795,7 @@ class FolderTest extends NodeTest { $view = $this->getRootViewMock(); /** @var \PHPUnit\Framework\MockObject\MockObject|\OC\Files\Node\Root $root */ $root = $this->getMockBuilder(Root::class) - ->setMethods(['getUser', 'getMountsIn', 'getMount']) + ->onlyMethods(['getUser', 'getMountsIn', 'getMount']) ->setConstructorArgs([$manager, $view, $this->user, $this->userMountCache, $this->logger, $this->userManager, $this->eventDispatcher, $this->cacheFactory]) ->getMock(); /** @var \PHPUnit\Framework\MockObject\MockObject|\OC\Files\FileInfo $folderInfo */ @@ -830,7 +833,7 @@ class FolderTest extends NodeTest { 'mimetype' => 'text/plain', 'size' => 3, 'parent' => $id1, - 'permissions' => \OCP\Constants::PERMISSION_ALL, + 'permissions' => Constants::PERMISSION_ALL, ]); $id3 = $cache->put('bar/foo/folder/asd.txt', [ 'storage_mtime' => $baseTime - 100, @@ -838,7 +841,7 @@ class FolderTest extends NodeTest { 'mimetype' => 'text/plain', 'size' => 3, 'parent' => $id1, - 'permissions' => \OCP\Constants::PERMISSION_ALL, + 'permissions' => Constants::PERMISSION_ALL, ]); $node = new Folder($root, $view, $folderPath, $folderInfo); @@ -859,7 +862,7 @@ class FolderTest extends NodeTest { $view = $this->getRootViewMock(); /** @var \PHPUnit\Framework\MockObject\MockObject|\OC\Files\Node\Root $root */ $root = $this->getMockBuilder(Root::class) - ->setMethods(['getUser', 'getMountsIn', 'getMount']) + ->onlyMethods(['getUser', 'getMountsIn', 'getMount']) ->setConstructorArgs([$manager, $view, $this->user, $this->userMountCache, $this->logger, $this->userManager, $this->eventDispatcher, $this->cacheFactory]) ->getMock(); /** @var \PHPUnit\Framework\MockObject\MockObject|\OC\Files\FileInfo $folderInfo */ @@ -891,7 +894,7 @@ class FolderTest extends NodeTest { 'mtime' => $baseTime, 'mimetype' => 'text/plain', 'size' => 3, - 'permissions' => \OCP\Constants::PERMISSION_ALL, + 'permissions' => Constants::PERMISSION_ALL, ]); $cache->put('outside.txt', [ @@ -910,7 +913,7 @@ class FolderTest extends NodeTest { $this->assertEquals([$id1], $ids); } - public function offsetLimitProvider() { + public static function offsetLimitProvider(): array { return [ [0, 10, ['/bar/foo/foo1', '/bar/foo/foo2', '/bar/foo/foo3', '/bar/foo/foo4', '/bar/foo/sub1/foo5', '/bar/foo/sub1/foo6', '/bar/foo/sub2/foo7', '/bar/foo/sub2/foo8'], []], [0, 5, ['/bar/foo/foo1', '/bar/foo/foo2', '/bar/foo/foo3', '/bar/foo/foo4', '/bar/foo/sub1/foo5'], []], diff --git a/tests/lib/Files/Node/HookConnectorTest.php b/tests/lib/Files/Node/HookConnectorTest.php index 1a3337b9ddc..0b7d26fd24d 100644 --- a/tests/lib/Files/Node/HookConnectorTest.php +++ b/tests/lib/Files/Node/HookConnectorTest.php @@ -15,6 +15,7 @@ use OC\Files\View; use OC\Memcache\ArrayCache; use OCP\EventDispatcher\GenericEvent as APIGenericEvent; use OCP\EventDispatcher\IEventDispatcher; +use OCP\Files\Config\IUserMountCache; use OCP\Files\Events\Node\AbstractNodeEvent; use OCP\Files\Events\Node\AbstractNodesEvent; use OCP\Files\Events\Node\BeforeNodeCopiedEvent; @@ -32,6 +33,7 @@ use OCP\Files\Events\Node\NodeWrittenEvent; use OCP\Files\Node; use OCP\ICacheFactory; use OCP\IUserManager; +use OCP\Server; use Psr\Log\LoggerInterface; use Symfony\Component\EventDispatcher\GenericEvent; use Test\TestCase; @@ -79,15 +81,15 @@ class HookConnectorTest extends TestCase { $this->root = new Root( Filesystem::getMountManager(), $this->view, - \OC::$server->getUserManager()->get($this->userId), - \OC::$server->getUserMountCache(), + Server::get(IUserManager::class)->get($this->userId), + Server::get(IUserMountCache::class), $this->createMock(LoggerInterface::class), $this->createMock(IUserManager::class), $this->createMock(IEventDispatcher::class), $cacheFactory, ); - $this->eventDispatcher = \OC::$server->query(IEventDispatcher::class); - $this->logger = \OC::$server->query(LoggerInterface::class); + $this->eventDispatcher = Server::get(IEventDispatcher::class); + $this->logger = Server::get(LoggerInterface::class); } protected function tearDown(): void { @@ -96,51 +98,51 @@ class HookConnectorTest extends TestCase { \OC_Util::tearDownFS(); } - public function viewToNodeProvider() { + public static function viewToNodeProvider(): array { return [ - [function () { + [function (): void { Filesystem::file_put_contents('test.txt', 'asd'); }, 'preWrite', '\OCP\Files::preWrite', BeforeNodeWrittenEvent::class], - [function () { + [function (): void { Filesystem::file_put_contents('test.txt', 'asd'); }, 'postWrite', '\OCP\Files::postWrite', NodeWrittenEvent::class], - [function () { + [function (): void { Filesystem::file_put_contents('test.txt', 'asd'); }, 'preCreate', '\OCP\Files::preCreate', BeforeNodeCreatedEvent::class], - [function () { + [function (): void { Filesystem::file_put_contents('test.txt', 'asd'); }, 'postCreate', '\OCP\Files::postCreate', NodeCreatedEvent::class], - [function () { + [function (): void { Filesystem::mkdir('test.txt'); }, 'preCreate', '\OCP\Files::preCreate', BeforeNodeCreatedEvent::class], - [function () { + [function (): void { Filesystem::mkdir('test.txt'); }, 'postCreate', '\OCP\Files::postCreate', NodeCreatedEvent::class], - [function () { + [function (): void { Filesystem::touch('test.txt'); }, 'preTouch', '\OCP\Files::preTouch', BeforeNodeTouchedEvent::class], - [function () { + [function (): void { Filesystem::touch('test.txt'); }, 'postTouch', '\OCP\Files::postTouch', NodeTouchedEvent::class], - [function () { + [function (): void { Filesystem::touch('test.txt'); }, 'preCreate', '\OCP\Files::preCreate', BeforeNodeCreatedEvent::class], - [function () { + [function (): void { Filesystem::touch('test.txt'); }, 'postCreate', '\OCP\Files::postCreate', NodeCreatedEvent::class], - [function () { + [function (): void { Filesystem::file_put_contents('test.txt', 'asd'); Filesystem::unlink('test.txt'); }, 'preDelete', '\OCP\Files::preDelete', BeforeNodeDeletedEvent::class], - [function () { + [function (): void { Filesystem::file_put_contents('test.txt', 'asd'); Filesystem::unlink('test.txt'); }, 'postDelete', '\OCP\Files::postDelete', NodeDeletedEvent::class], - [function () { + [function (): void { Filesystem::mkdir('test.txt'); Filesystem::rmdir('test.txt'); }, 'preDelete', '\OCP\Files::preDelete', BeforeNodeDeletedEvent::class], - [function () { + [function (): void { Filesystem::mkdir('test.txt'); Filesystem::rmdir('test.txt'); }, 'postDelete', '\OCP\Files::postDelete', NodeDeletedEvent::class], @@ -159,7 +161,7 @@ class HookConnectorTest extends TestCase { /** @var Node $hookNode */ $hookNode = null; - $this->root->listen('\OC\Files', $expectedHook, function ($node) use (&$hookNode, &$hookCalled) { + $this->root->listen('\OC\Files', $expectedHook, function ($node) use (&$hookNode, &$hookCalled): void { $hookCalled = true; $hookNode = $node; }); @@ -167,7 +169,7 @@ class HookConnectorTest extends TestCase { $dispatcherCalled = false; /** @var Node $dispatcherNode */ $dispatcherNode = null; - $this->eventDispatcher->addListener($expectedLegacyEvent, function ($event) use (&$dispatcherCalled, &$dispatcherNode) { + $this->eventDispatcher->addListener($expectedLegacyEvent, function ($event) use (&$dispatcherCalled, &$dispatcherNode): void { /** @var GenericEvent|APIGenericEvent $event */ $dispatcherCalled = true; $dispatcherNode = $event->getSubject(); @@ -175,7 +177,7 @@ class HookConnectorTest extends TestCase { $newDispatcherCalled = false; $newDispatcherNode = null; - $this->eventDispatcher->addListener($expectedEvent, function ($event) use ($expectedEvent, &$newDispatcherCalled, &$newDispatcherNode) { + $this->eventDispatcher->addListener($expectedEvent, function ($event) use ($expectedEvent, &$newDispatcherCalled, &$newDispatcherNode): void { if ($event instanceof $expectedEvent) { /** @var AbstractNodeEvent $event */ $newDispatcherCalled = true; @@ -195,21 +197,21 @@ class HookConnectorTest extends TestCase { $this->assertEquals('/' . $this->userId . '/files/test.txt', $newDispatcherNode->getPath()); } - public function viewToNodeProviderCopyRename() { + public static function viewToNodeProviderCopyRename(): array { return [ - [function () { + [function (): void { Filesystem::file_put_contents('source', 'asd'); Filesystem::rename('source', 'target'); }, 'preRename', '\OCP\Files::preRename', BeforeNodeRenamedEvent::class], - [function () { + [function (): void { Filesystem::file_put_contents('source', 'asd'); Filesystem::rename('source', 'target'); }, 'postRename', '\OCP\Files::postRename', NodeRenamedEvent::class], - [function () { + [function (): void { Filesystem::file_put_contents('source', 'asd'); Filesystem::copy('source', 'target'); }, 'preCopy', '\OCP\Files::preCopy', BeforeNodeCopiedEvent::class], - [function () { + [function (): void { Filesystem::file_put_contents('source', 'asd'); Filesystem::copy('source', 'target'); }, 'postCopy', '\OCP\Files::postCopy', NodeCopiedEvent::class], @@ -230,7 +232,7 @@ class HookConnectorTest extends TestCase { /** @var Node $hookTargetNode */ $hookTargetNode = null; - $this->root->listen('\OC\Files', $expectedHook, function ($sourceNode, $targetNode) use (&$hookCalled, &$hookSourceNode, &$hookTargetNode) { + $this->root->listen('\OC\Files', $expectedHook, function ($sourceNode, $targetNode) use (&$hookCalled, &$hookSourceNode, &$hookTargetNode): void { $hookCalled = true; $hookSourceNode = $sourceNode; $hookTargetNode = $targetNode; @@ -241,7 +243,7 @@ class HookConnectorTest extends TestCase { $dispatcherSourceNode = null; /** @var Node $dispatcherTargetNode */ $dispatcherTargetNode = null; - $this->eventDispatcher->addListener($expectedLegacyEvent, function ($event) use (&$dispatcherSourceNode, &$dispatcherTargetNode, &$dispatcherCalled) { + $this->eventDispatcher->addListener($expectedLegacyEvent, function ($event) use (&$dispatcherSourceNode, &$dispatcherTargetNode, &$dispatcherCalled): void { /** @var GenericEvent|APIGenericEvent $event */ $dispatcherCalled = true; [$dispatcherSourceNode, $dispatcherTargetNode] = $event->getSubject(); @@ -252,7 +254,7 @@ class HookConnectorTest extends TestCase { $newDispatcherSourceNode = null; /** @var Node $dispatcherTargetNode */ $newDispatcherTargetNode = null; - $this->eventDispatcher->addListener($expectedEvent, function ($event) use ($expectedEvent, &$newDispatcherSourceNode, &$newDispatcherTargetNode, &$newDispatcherCalled) { + $this->eventDispatcher->addListener($expectedEvent, function ($event) use ($expectedEvent, &$newDispatcherSourceNode, &$newDispatcherTargetNode, &$newDispatcherCalled): void { if ($event instanceof $expectedEvent) { /** @var AbstractNodesEvent$event */ $newDispatcherCalled = true; @@ -283,7 +285,7 @@ class HookConnectorTest extends TestCase { /** @var Node $hookNode */ $hookNode = null; - $this->root->listen('\OC\Files', 'postDelete', function ($node) use (&$hookNode, &$hookCalled) { + $this->root->listen('\OC\Files', 'postDelete', function ($node) use (&$hookNode, &$hookCalled): void { $hookCalled = true; $hookNode = $node; }); @@ -291,7 +293,7 @@ class HookConnectorTest extends TestCase { $dispatcherCalled = false; /** @var Node $dispatcherNode */ $dispatcherNode = null; - $this->eventDispatcher->addListener('\OCP\Files::postDelete', function ($event) use (&$dispatcherCalled, &$dispatcherNode) { + $this->eventDispatcher->addListener('\OCP\Files::postDelete', function ($event) use (&$dispatcherCalled, &$dispatcherNode): void { /** @var GenericEvent|APIGenericEvent $event */ $dispatcherCalled = true; $dispatcherNode = $event->getSubject(); @@ -300,7 +302,7 @@ class HookConnectorTest extends TestCase { $newDispatcherCalled = false; /** @var Node $dispatcherNode */ $newDispatcherNode = null; - $this->eventDispatcher->addListener(NodeDeletedEvent::class, function ($event) use (&$newDispatcherCalled, &$newDispatcherNode) { + $this->eventDispatcher->addListener(NodeDeletedEvent::class, function ($event) use (&$newDispatcherCalled, &$newDispatcherNode): void { if ($event instanceof NodeDeletedEvent) { /** @var AbstractNodeEvent $event */ $newDispatcherCalled = true; diff --git a/tests/lib/Files/Node/IntegrationTest.php b/tests/lib/Files/Node/IntegrationTest.php index c90a6115f2a..6bd956326e9 100644 --- a/tests/lib/Files/Node/IntegrationTest.php +++ b/tests/lib/Files/Node/IntegrationTest.php @@ -16,6 +16,7 @@ use OCP\Files\Config\IUserMountCache; use OCP\Files\Mount\IMountManager; use OCP\ICacheFactory; use OCP\IUserManager; +use OCP\Server; use Psr\Log\LoggerInterface; use Test\Traits\UserTrait; @@ -47,7 +48,7 @@ class IntegrationTest extends \Test\TestCase { protected function setUp(): void { parent::setUp(); - $manager = \OCP\Server::get(IMountManager::class); + $manager = Server::get(IMountManager::class); \OC_Hook::clear('OC_Filesystem'); @@ -64,7 +65,7 @@ class IntegrationTest extends \Test\TestCase { $manager, $this->view, $user, - \OCP\Server::get(IUserMountCache::class), + Server::get(IUserMountCache::class), $this->createMock(LoggerInterface::class), $this->createMock(IUserManager::class), $this->createMock(IEventDispatcher::class), diff --git a/tests/lib/Files/Node/NodeTest.php b/tests/lib/Files/Node/NodeTestCase.php index db87aa925d3..6da4e1e9317 100644 --- a/tests/lib/Files/Node/NodeTest.php +++ b/tests/lib/Files/Node/NodeTestCase.php @@ -9,13 +9,19 @@ namespace Test\Files\Node; use OC\Files\FileInfo; use OC\Files\Mount\Manager; +use OC\Files\Node\File; +use OC\Files\Node\Folder; +use OC\Files\Node\Root; use OC\Files\View; use OC\Memcache\ArrayCache; +use OCP\Constants; use OCP\EventDispatcher\IEventDispatcher; +use OCP\Files\InvalidPathException; use OCP\Files\IRootFolder; use OCP\Files\Mount\IMountPoint; use OCP\Files\Node; use OCP\Files\NotFoundException; +use OCP\Files\NotPermittedException; use OCP\Files\Storage\IStorage; use OCP\ICacheFactory; use OCP\IUser; @@ -27,7 +33,7 @@ use Psr\Log\LoggerInterface; * * @package Test\Files\Node */ -abstract class NodeTest extends \Test\TestCase { +abstract class NodeTestCase extends \Test\TestCase { /** @var \OC\User\User */ protected $user; /** @var \OC\Files\Mount\Manager */ @@ -71,7 +77,7 @@ abstract class NodeTest extends \Test\TestCase { ->willReturnCallback(function () { return new ArrayCache(); }); - $this->root = $this->getMockBuilder('\OC\Files\Node\Root') + $this->root = $this->getMockBuilder(Root::class) ->setConstructorArgs([$this->manager, $this->view, $this->user, $this->userMountCache, $this->logger, $this->userManager, $this->eventDispatcher, $this->cacheFactory]) ->getMock(); } @@ -138,7 +144,7 @@ abstract class NodeTest extends \Test\TestCase { $this->view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_ALL])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_ALL])); $this->view->expects($this->once()) ->method($this->getViewDeleteMethod()) @@ -155,7 +161,7 @@ abstract class NodeTest extends \Test\TestCase { /** * @param \OC\Files\Node\File $node */ - $preListener = function ($node) use (&$test, &$hooksRun) { + $preListener = function ($node) use (&$test, &$hooksRun): void { $test->assertInstanceOf($this->getNodeClass(), $node); $test->assertEquals('foo', $node->getInternalPath()); $test->assertEquals('/bar/foo', $node->getPath()); @@ -166,7 +172,7 @@ abstract class NodeTest extends \Test\TestCase { /** * @param \OC\Files\Node\File $node */ - $postListener = function ($node) use (&$test, &$hooksRun) { + $postListener = function ($node) use (&$test, &$hooksRun): void { $test->assertInstanceOf($this->getNonExistingNodeClass(), $node); $test->assertEquals('foo', $node->getInternalPath()); $test->assertEquals('/bar/foo', $node->getPath()); @@ -175,7 +181,7 @@ abstract class NodeTest extends \Test\TestCase { $hooksRun++; }; - $root = new \OC\Files\Node\Root( + $root = new Root( $this->manager, $this->view, $this->user, @@ -192,7 +198,7 @@ abstract class NodeTest extends \Test\TestCase { $this->view->expects($this->any()) ->method('getFileInfo') ->with('/bar/foo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_ALL, 'fileid' => 1, 'mimetype' => 'text/plain'], 'foo')); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_ALL, 'fileid' => 1, 'mimetype' => 'text/plain'], 'foo')); $this->view->expects($this->once()) ->method($this->getViewDeleteMethod()) @@ -206,7 +212,7 @@ abstract class NodeTest extends \Test\TestCase { public function testDeleteNotPermitted(): void { - $this->expectException(\OCP\Files\NotPermittedException::class); + $this->expectException(NotPermittedException::class); $this->root->expects($this->any()) ->method('getUser') @@ -215,7 +221,7 @@ abstract class NodeTest extends \Test\TestCase { $this->view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_READ])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_READ])); $node = $this->createTestNode($this->root, $this->view, '/bar/foo'); $node->delete(); @@ -396,7 +402,7 @@ abstract class NodeTest extends \Test\TestCase { $this->view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_ALL])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_ALL])); $node = $this->createTestNode($this->root, $this->view, '/bar/foo'); $node->touch(100); @@ -409,7 +415,7 @@ abstract class NodeTest extends \Test\TestCase { /** * @param \OC\Files\Node\File $node */ - $preListener = function ($node) use (&$test, &$hooksRun) { + $preListener = function ($node) use (&$test, &$hooksRun): void { $test->assertEquals('foo', $node->getInternalPath()); $test->assertEquals('/bar/foo', $node->getPath()); $hooksRun++; @@ -418,13 +424,13 @@ abstract class NodeTest extends \Test\TestCase { /** * @param \OC\Files\Node\File $node */ - $postListener = function ($node) use (&$test, &$hooksRun) { + $postListener = function ($node) use (&$test, &$hooksRun): void { $test->assertEquals('foo', $node->getInternalPath()); $test->assertEquals('/bar/foo', $node->getPath()); $hooksRun++; }; - $root = new \OC\Files\Node\Root( + $root = new Root( $this->manager, $this->view, $this->user, @@ -445,7 +451,7 @@ abstract class NodeTest extends \Test\TestCase { $this->view->expects($this->any()) ->method('getFileInfo') ->with('/bar/foo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_ALL], 'foo')); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_ALL], 'foo')); $node = $this->createTestNode($root, $this->view, '/bar/foo'); $node->touch(100); @@ -454,7 +460,7 @@ abstract class NodeTest extends \Test\TestCase { public function testTouchNotPermitted(): void { - $this->expectException(\OCP\Files\NotPermittedException::class); + $this->expectException(NotPermittedException::class); $this->root->expects($this->any()) ->method('getUser') @@ -463,7 +469,7 @@ abstract class NodeTest extends \Test\TestCase { $this->view->expects($this->any()) ->method('getFileInfo') ->with('/bar/foo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_READ])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_READ])); $node = $this->createTestNode($this->root, $this->view, '/bar/foo'); $node->touch(100); @@ -471,7 +477,7 @@ abstract class NodeTest extends \Test\TestCase { public function testInvalidPath(): void { - $this->expectException(\OCP\Files\InvalidPathException::class); + $this->expectException(InvalidPathException::class); $node = $this->createTestNode($this->root, $this->view, '/../foo'); $node->getFileInfo(); @@ -485,10 +491,10 @@ abstract class NodeTest extends \Test\TestCase { $this->view->expects($this->any()) ->method('getFileInfo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_ALL, 'fileid' => 3])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_ALL, 'fileid' => 3])); $node = $this->createTestNode($this->root, $this->view, '/bar/foo'); - $parentNode = new \OC\Files\Node\Folder($this->root, $this->view, '/bar'); + $parentNode = new Folder($this->root, $this->view, '/bar'); $newNode = $this->createTestNode($this->root, $this->view, '/bar/asd'); $this->root->method('get') @@ -504,7 +510,7 @@ abstract class NodeTest extends \Test\TestCase { public function testCopyNotPermitted(): void { - $this->expectException(\OCP\Files\NotPermittedException::class); + $this->expectException(NotPermittedException::class); /** * @var \OC\Files\Storage\Storage | \PHPUnit\Framework\MockObject\MockObject $storage @@ -519,10 +525,10 @@ abstract class NodeTest extends \Test\TestCase { $this->view->expects($this->any()) ->method('getFileInfo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_READ, 'fileid' => 3])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_READ, 'fileid' => 3])); $node = $this->createTestNode($this->root, $this->view, '/bar/foo'); - $parentNode = new \OC\Files\Node\Folder($this->root, $this->view, '/bar'); + $parentNode = new Folder($this->root, $this->view, '/bar'); $this->root->expects($this->once()) ->method('get') @@ -535,7 +541,7 @@ abstract class NodeTest extends \Test\TestCase { public function testCopyNoParent(): void { - $this->expectException(\OCP\Files\NotFoundException::class); + $this->expectException(NotFoundException::class); $this->view->expects($this->never()) ->method('copy'); @@ -545,20 +551,20 @@ abstract class NodeTest extends \Test\TestCase { $this->root->expects($this->once()) ->method('get') ->with('/bar/asd') - ->will($this->throwException(new NotFoundException())); + ->willThrowException(new NotFoundException()); $node->copy('/bar/asd/foo'); } public function testCopyParentIsFile(): void { - $this->expectException(\OCP\Files\NotPermittedException::class); + $this->expectException(NotPermittedException::class); $this->view->expects($this->never()) ->method('copy'); $node = $this->createTestNode($this->root, $this->view, '/bar/foo'); - $parentNode = new \OC\Files\Node\File($this->root, $this->view, '/bar'); + $parentNode = new File($this->root, $this->view, '/bar'); $this->root->expects($this->once()) ->method('get') @@ -577,10 +583,10 @@ abstract class NodeTest extends \Test\TestCase { $this->view->expects($this->any()) ->method('getFileInfo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_ALL, 'fileid' => 1])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_ALL, 'fileid' => 1])); $node = $this->createTestNode($this->root, $this->view, '/bar/foo'); - $parentNode = new \OC\Files\Node\Folder($this->root, $this->view, '/bar'); + $parentNode = new Folder($this->root, $this->view, '/bar'); $this->root->expects($this->any()) ->method('get') @@ -592,7 +598,7 @@ abstract class NodeTest extends \Test\TestCase { $this->assertEquals('/bar/asd', $node->getPath()); } - public function moveOrCopyProvider() { + public static function moveOrCopyProvider(): array { return [ ['move', 'rename', 'preRename', 'postRename'], ['copy', 'copy', 'preCopy', 'postCopy'], @@ -608,9 +614,9 @@ abstract class NodeTest extends \Test\TestCase { */ public function testMoveCopyHooks($operationMethod, $viewMethod, $preHookName, $postHookName): void { /** @var IRootFolder|\PHPUnit\Framework\MockObject\MockObject $root */ - $root = $this->getMockBuilder('\OC\Files\Node\Root') + $root = $this->getMockBuilder(Root::class) ->setConstructorArgs([$this->manager, $this->view, $this->user, $this->userMountCache, $this->logger, $this->userManager, $this->eventDispatcher, $this->cacheFactory]) - ->setMethods(['get']) + ->onlyMethods(['get']) ->getMock(); $this->view->expects($this->any()) @@ -620,13 +626,13 @@ abstract class NodeTest extends \Test\TestCase { $this->view->expects($this->any()) ->method('getFileInfo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_ALL, 'fileid' => 1])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_ALL, 'fileid' => 1])); /** * @var \OC\Files\Node\File|\PHPUnit\Framework\MockObject\MockObject $node */ $node = $this->createTestNode($root, $this->view, '/bar/foo'); - $parentNode = new \OC\Files\Node\Folder($root, $this->view, '/bar'); + $parentNode = new Folder($root, $this->view, '/bar'); $targetTestNode = $this->createTestNode($root, $this->view, '/bar/asd'); $root->expects($this->any()) @@ -635,7 +641,7 @@ abstract class NodeTest extends \Test\TestCase { $hooksRun = 0; - $preListener = function (Node $sourceNode, Node $targetNode) use (&$hooksRun, $node) { + $preListener = function (Node $sourceNode, Node $targetNode) use (&$hooksRun, $node): void { $this->assertSame($node, $sourceNode); $this->assertInstanceOf($this->getNodeClass(), $sourceNode); $this->assertInstanceOf($this->getNonExistingNodeClass(), $targetNode); @@ -643,7 +649,7 @@ abstract class NodeTest extends \Test\TestCase { $hooksRun++; }; - $postListener = function (Node $sourceNode, Node $targetNode) use (&$hooksRun, $node, $targetTestNode) { + $postListener = function (Node $sourceNode, Node $targetNode) use (&$hooksRun, $node, $targetTestNode): void { $this->assertSame($node, $sourceNode); $this->assertNotSame($node, $targetNode); $this->assertSame($targetTestNode, $targetNode); @@ -652,13 +658,13 @@ abstract class NodeTest extends \Test\TestCase { $hooksRun++; }; - $preWriteListener = function (Node $targetNode) use (&$hooksRun) { + $preWriteListener = function (Node $targetNode) use (&$hooksRun): void { $this->assertInstanceOf($this->getNonExistingNodeClass(), $targetNode); $this->assertEquals('/bar/asd', $targetNode->getPath()); $hooksRun++; }; - $postWriteListener = function (Node $targetNode) use (&$hooksRun, $targetTestNode) { + $postWriteListener = function (Node $targetNode) use (&$hooksRun, $targetTestNode): void { $this->assertSame($targetTestNode, $targetNode); $hooksRun++; }; @@ -675,17 +681,17 @@ abstract class NodeTest extends \Test\TestCase { public function testMoveNotPermitted(): void { - $this->expectException(\OCP\Files\NotPermittedException::class); + $this->expectException(NotPermittedException::class); $this->view->expects($this->any()) ->method('getFileInfo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_READ])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_READ])); $this->view->expects($this->never()) ->method('rename'); $node = $this->createTestNode($this->root, $this->view, '/bar/foo'); - $parentNode = new \OC\Files\Node\Folder($this->root, $this->view, '/bar'); + $parentNode = new Folder($this->root, $this->view, '/bar'); $this->root->expects($this->once()) ->method('get') @@ -697,7 +703,7 @@ abstract class NodeTest extends \Test\TestCase { public function testMoveNoParent(): void { - $this->expectException(\OCP\Files\NotFoundException::class); + $this->expectException(NotFoundException::class); /** * @var \OC\Files\Storage\Storage | \PHPUnit\Framework\MockObject\MockObject $storage @@ -712,20 +718,20 @@ abstract class NodeTest extends \Test\TestCase { $this->root->expects($this->once()) ->method('get') ->with('/bar') - ->will($this->throwException(new NotFoundException())); + ->willThrowException(new NotFoundException()); $node->move('/bar/asd'); } public function testMoveParentIsFile(): void { - $this->expectException(\OCP\Files\NotPermittedException::class); + $this->expectException(NotPermittedException::class); $this->view->expects($this->never()) ->method('rename'); $node = $this->createTestNode($this->root, $this->view, '/bar/foo'); - $parentNode = new \OC\Files\Node\File($this->root, $this->view, '/bar'); + $parentNode = new File($this->root, $this->view, '/bar'); $this->root->expects($this->once()) ->method('get') @@ -737,7 +743,7 @@ abstract class NodeTest extends \Test\TestCase { public function testMoveFailed(): void { - $this->expectException(\OCP\Files\NotPermittedException::class); + $this->expectException(NotPermittedException::class); $this->view->expects($this->any()) ->method('rename') @@ -746,10 +752,10 @@ abstract class NodeTest extends \Test\TestCase { $this->view->expects($this->any()) ->method('getFileInfo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_ALL, 'fileid' => 1])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_ALL, 'fileid' => 1])); $node = $this->createTestNode($this->root, $this->view, '/bar/foo'); - $parentNode = new \OC\Files\Node\Folder($this->root, $this->view, '/bar'); + $parentNode = new Folder($this->root, $this->view, '/bar'); $this->root->expects($this->any()) ->method('get') @@ -760,7 +766,7 @@ abstract class NodeTest extends \Test\TestCase { public function testCopyFailed(): void { - $this->expectException(\OCP\Files\NotPermittedException::class); + $this->expectException(NotPermittedException::class); $this->view->expects($this->any()) ->method('copy') @@ -769,10 +775,10 @@ abstract class NodeTest extends \Test\TestCase { $this->view->expects($this->any()) ->method('getFileInfo') - ->willReturn($this->getFileInfo(['permissions' => \OCP\Constants::PERMISSION_ALL, 'fileid' => 1])); + ->willReturn($this->getFileInfo(['permissions' => Constants::PERMISSION_ALL, 'fileid' => 1])); $node = $this->createTestNode($this->root, $this->view, '/bar/foo'); - $parentNode = new \OC\Files\Node\Folder($this->root, $this->view, '/bar'); + $parentNode = new Folder($this->root, $this->view, '/bar'); $this->root->expects($this->any()) ->method('get') diff --git a/tests/lib/Files/Node/RootTest.php b/tests/lib/Files/Node/RootTest.php index f2ef1a0e3ee..979ed1c6dcb 100644 --- a/tests/lib/Files/Node/RootTest.php +++ b/tests/lib/Files/Node/RootTest.php @@ -10,10 +10,14 @@ namespace Test\Files\Node; use OC\Files\FileInfo; use OC\Files\Mount\Manager; use OC\Files\Node\Folder; +use OC\Files\Node\Root; use OC\Files\View; use OC\Memcache\ArrayCache; +use OC\User\NoUserException; use OCP\Cache\CappedMemoryCache; use OCP\EventDispatcher\IEventDispatcher; +use OCP\Files\NotFoundException; +use OCP\Files\NotPermittedException; use OCP\ICacheFactory; use OCP\IUser; use OCP\IUserManager; @@ -83,7 +87,7 @@ class RootTest extends \Test\TestCase { ->disableOriginalConstructor() ->getMock(); $view = $this->getRootViewMock(); - $root = new \OC\Files\Node\Root( + $root = new Root( $this->manager, $view, $this->user, @@ -107,7 +111,7 @@ class RootTest extends \Test\TestCase { public function testGetNotFound(): void { - $this->expectException(\OCP\Files\NotFoundException::class); + $this->expectException(NotFoundException::class); /** * @var \OC\Files\Storage\Storage $storage @@ -116,7 +120,7 @@ class RootTest extends \Test\TestCase { ->disableOriginalConstructor() ->getMock(); $view = $this->getRootViewMock(); - $root = new \OC\Files\Node\Root( + $root = new Root( $this->manager, $view, $this->user, @@ -138,10 +142,10 @@ class RootTest extends \Test\TestCase { public function testGetInvalidPath(): void { - $this->expectException(\OCP\Files\NotPermittedException::class); + $this->expectException(NotPermittedException::class); $view = $this->getRootViewMock(); - $root = new \OC\Files\Node\Root( + $root = new Root( $this->manager, $view, $this->user, @@ -157,10 +161,10 @@ class RootTest extends \Test\TestCase { public function testGetNoStorages(): void { - $this->expectException(\OCP\Files\NotFoundException::class); + $this->expectException(NotFoundException::class); $view = $this->getRootViewMock(); - $root = new \OC\Files\Node\Root( + $root = new Root( $this->manager, $view, $this->user, @@ -175,7 +179,7 @@ class RootTest extends \Test\TestCase { } public function testGetUserFolder(): void { - $root = new \OC\Files\Node\Root( + $root = new Root( $this->manager, $this->getRootViewMock(), $this->user, @@ -214,10 +218,10 @@ class RootTest extends \Test\TestCase { public function testGetUserFolderWithNoUserObj(): void { - $this->expectException(\OC\User\NoUserException::class); + $this->expectException(NoUserException::class); $this->expectExceptionMessage('Backends provided no user object'); - $root = new \OC\Files\Node\Root( + $root = new Root( $this->createMock(Manager::class), $this->getRootViewMock(), null, diff --git a/tests/lib/Files/ObjectStore/AzureTest.php b/tests/lib/Files/ObjectStore/AzureTest.php index c82ed988434..3c07f69f65d 100644 --- a/tests/lib/Files/ObjectStore/AzureTest.php +++ b/tests/lib/Files/ObjectStore/AzureTest.php @@ -7,13 +7,15 @@ namespace Test\Files\ObjectStore; use OC\Files\ObjectStore\Azure; +use OCP\IConfig; +use OCP\Server; /** * @group PRIMARY-azure */ -class AzureTest extends ObjectStoreTest { +class AzureTest extends ObjectStoreTestCase { protected function getInstance() { - $config = \OC::$server->getConfig()->getSystemValue('objectstore'); + $config = Server::get(IConfig::class)->getSystemValue('objectstore'); if (!is_array($config) || $config['class'] !== 'OC\\Files\\ObjectStore\\Azure') { $this->markTestSkipped('objectstore not configured for azure'); } diff --git a/tests/lib/Files/ObjectStore/LocalTest.php b/tests/lib/Files/ObjectStore/LocalTest.php index 99c5b61534f..3b561c01049 100644 --- a/tests/lib/Files/ObjectStore/LocalTest.php +++ b/tests/lib/Files/ObjectStore/LocalTest.php @@ -9,7 +9,7 @@ namespace Test\Files\ObjectStore; use OC\Files\ObjectStore\StorageObjectStore; use OC\Files\Storage\Temporary; -class LocalTest extends ObjectStoreTest { +class LocalTest extends ObjectStoreTestCase { /** * @return \OCP\Files\ObjectStore\IObjectStore */ diff --git a/tests/lib/Files/ObjectStore/MapperTest.php b/tests/lib/Files/ObjectStore/MapperTest.php index 15a2d497fc3..77416eae09a 100644 --- a/tests/lib/Files/ObjectStore/MapperTest.php +++ b/tests/lib/Files/ObjectStore/MapperTest.php @@ -29,7 +29,7 @@ class MapperTest extends \Test\TestCase { $this->mapper = new Mapper($this->user, $this->config); } - public function dataGetBucket() { + public static function dataGetBucket(): array { return [ ['user', 64, 0, '17'], ['USER', 64, 0, '0'], diff --git a/tests/lib/Files/ObjectStore/ObjectStoreStorageTest.php b/tests/lib/Files/ObjectStore/ObjectStoreStorageTest.php index 3dbdc3afc27..cca75d4f35e 100644 --- a/tests/lib/Files/ObjectStore/ObjectStoreStorageTest.php +++ b/tests/lib/Files/ObjectStore/ObjectStoreStorageTest.php @@ -10,6 +10,7 @@ namespace Test\Files\ObjectStore; use OC\Files\ObjectStore\StorageObjectStore; use OC\Files\Storage\Temporary; use OC\Files\Storage\Wrapper\Jail; +use OCP\Constants; use OCP\Files\ObjectStore\IObjectStore; use Test\Files\Storage\Storage; @@ -231,13 +232,13 @@ class ObjectStoreStorageTest extends Storage { $this->instance->file_put_contents('test.txt', 'foo'); $this->assertTrue($cache->inCache('test.txt')); - $cache->update($cache->getId('test.txt'), ['permissions' => \OCP\Constants::PERMISSION_READ]); - $this->assertEquals(\OCP\Constants::PERMISSION_READ, $this->instance->getPermissions('test.txt')); + $cache->update($cache->getId('test.txt'), ['permissions' => Constants::PERMISSION_READ]); + $this->assertEquals(Constants::PERMISSION_READ, $this->instance->getPermissions('test.txt')); $this->assertTrue($this->instance->copy('test.txt', 'new.txt')); $this->assertTrue($cache->inCache('new.txt')); - $this->assertEquals(\OCP\Constants::PERMISSION_READ, $this->instance->getPermissions('new.txt')); + $this->assertEquals(Constants::PERMISSION_READ, $this->instance->getPermissions('new.txt')); } /** @@ -254,12 +255,25 @@ class ObjectStoreStorageTest extends Storage { $instance->file_put_contents('test.txt', 'foo'); $this->assertTrue($cache->inCache('test.txt')); - $cache->update($cache->getId('test.txt'), ['permissions' => \OCP\Constants::PERMISSION_READ]); - $this->assertEquals(\OCP\Constants::PERMISSION_READ, $instance->getPermissions('test.txt')); + $cache->update($cache->getId('test.txt'), ['permissions' => Constants::PERMISSION_READ]); + $this->assertEquals(Constants::PERMISSION_READ, $instance->getPermissions('test.txt')); $this->assertTrue($instance->copy('test.txt', 'new.txt')); $this->assertTrue($cache->inCache('new.txt')); - $this->assertEquals(\OCP\Constants::PERMISSION_ALL, $instance->getPermissions('new.txt')); + $this->assertEquals(Constants::PERMISSION_ALL, $instance->getPermissions('new.txt')); + } + + public function testCopyFolderSize(): void { + $cache = $this->instance->getCache(); + + $this->instance->mkdir('source'); + $this->instance->file_put_contents('source/test.txt', 'foo'); + $this->instance->getUpdater()->update('source/test.txt'); + $this->assertEquals(3, $cache->get('source')->getSize()); + + $this->assertTrue($this->instance->copy('source', 'target')); + + $this->assertEquals(3, $cache->get('target')->getSize()); } } diff --git a/tests/lib/Files/ObjectStore/ObjectStoreStoragesDifferentBucketTest.php b/tests/lib/Files/ObjectStore/ObjectStoreStoragesDifferentBucketTest.php index a0e18a5557b..a1befd4e79d 100644 --- a/tests/lib/Files/ObjectStore/ObjectStoreStoragesDifferentBucketTest.php +++ b/tests/lib/Files/ObjectStore/ObjectStoreStoragesDifferentBucketTest.php @@ -9,12 +9,12 @@ namespace Test\Files\ObjectStore; use OC\Files\ObjectStore\StorageObjectStore; use OC\Files\Storage\Temporary; -use Test\Files\Storage\StoragesTest; +use Test\Files\Storage\StoragesTestCase; /** * @group DB */ -class ObjectStoreStoragesDifferentBucketTest extends StoragesTest { +class ObjectStoreStoragesDifferentBucketTest extends StoragesTestCase { /** * @var \OCP\Files\ObjectStore\IObjectStore */ diff --git a/tests/lib/Files/ObjectStore/ObjectStoreStoragesSameBucketTest.php b/tests/lib/Files/ObjectStore/ObjectStoreStoragesSameBucketTest.php index 19a1f4b7bc5..5505ee1dac1 100644 --- a/tests/lib/Files/ObjectStore/ObjectStoreStoragesSameBucketTest.php +++ b/tests/lib/Files/ObjectStore/ObjectStoreStoragesSameBucketTest.php @@ -9,12 +9,12 @@ namespace Test\Files\ObjectStore; use OC\Files\ObjectStore\StorageObjectStore; use OC\Files\Storage\Temporary; -use Test\Files\Storage\StoragesTest; +use Test\Files\Storage\StoragesTestCase; /** * @group DB */ -class ObjectStoreStoragesSameBucketTest extends StoragesTest { +class ObjectStoreStoragesSameBucketTest extends StoragesTestCase { /** * @var \OCP\Files\ObjectStore\IObjectStore */ diff --git a/tests/lib/Files/ObjectStore/ObjectStoreTest.php b/tests/lib/Files/ObjectStore/ObjectStoreTestCase.php index 4a4f85dfb91..ecbfd9a37e6 100644 --- a/tests/lib/Files/ObjectStore/ObjectStoreTest.php +++ b/tests/lib/Files/ObjectStore/ObjectStoreTestCase.php @@ -9,10 +9,12 @@ namespace Test\Files\ObjectStore; use Test\TestCase; -abstract class ObjectStoreTest extends TestCase { +abstract class ObjectStoreTestCase extends TestCase { /** @var string[] */ private $cleanup = []; + private $instance = null; + /** * @return \OCP\Files\ObjectStore\IObjectStore */ @@ -22,13 +24,20 @@ abstract class ObjectStoreTest extends TestCase { $this->cleanup[] = $urn; } - public function tearDown(): void { - parent::tearDown(); + public function setUp(): void { + parent::setUp(); - $instance = $this->getInstance(); - foreach ($this->cleanup as $urn) { - $instance->deleteObject($urn); + $this->instance = $this->getInstance(); + } + + public function tearDown(): void { + if ($this->instance) { + foreach ($this->cleanup as $urn) { + $this->instance->deleteObject($urn); + } } + + parent::tearDown(); } protected function stringToStream($data) { diff --git a/tests/lib/Files/ObjectStore/S3Test.php b/tests/lib/Files/ObjectStore/S3Test.php index 1501f575f9a..d3c282d0427 100644 --- a/tests/lib/Files/ObjectStore/S3Test.php +++ b/tests/lib/Files/ObjectStore/S3Test.php @@ -8,6 +8,8 @@ namespace Test\Files\ObjectStore; use Icewind\Streams\Wrapper; use OC\Files\ObjectStore\S3; +use OCP\IConfig; +use OCP\Server; class MultiPartUploadS3 extends S3 { public function writeObject($urn, $stream, ?string $mimetype = null) { @@ -44,7 +46,7 @@ class NonSeekableStream extends Wrapper { /** * @group PRIMARY-s3 */ -class S3Test extends ObjectStoreTest { +class S3Test extends ObjectStoreTestCase { public function setUp(): void { parent::setUp(); $s3 = $this->getInstance(); @@ -52,7 +54,7 @@ class S3Test extends ObjectStoreTest { } protected function getInstance() { - $config = \OC::$server->getConfig()->getSystemValue('objectstore'); + $config = Server::get(IConfig::class)->getSystemValue('objectstore'); if (!is_array($config) || $config['class'] !== S3::class) { $this->markTestSkipped('objectstore not configured for s3'); } @@ -126,7 +128,7 @@ class S3Test extends ObjectStoreTest { } /** File size to upload in bytes */ - public function dataFileSizes() { + public static function dataFileSizes(): array { return [ [1000000], [2000000], [5242879], [5242880], [5242881], [10000000] ]; diff --git a/tests/lib/Files/ObjectStore/SwiftTest.php b/tests/lib/Files/ObjectStore/SwiftTest.php index 8a34d25e57b..2321d8eafda 100644 --- a/tests/lib/Files/ObjectStore/SwiftTest.php +++ b/tests/lib/Files/ObjectStore/SwiftTest.php @@ -8,16 +8,18 @@ namespace Test\Files\ObjectStore; use OC\Files\ObjectStore\Swift; +use OCP\IConfig; +use OCP\Server; /** * @group PRIMARY-swift */ -class SwiftTest extends ObjectStoreTest { +class SwiftTest extends ObjectStoreTestCase { /** * @return \OCP\Files\ObjectStore\IObjectStore */ protected function getInstance() { - $config = \OC::$server->getConfig()->getSystemValue('objectstore'); + $config = Server::get(IConfig::class)->getSystemValue('objectstore'); if (!is_array($config) || $config['class'] !== 'OC\\Files\\ObjectStore\\Swift') { $this->markTestSkipped('objectstore not configured for swift'); } diff --git a/tests/lib/Files/PathVerificationTest.php b/tests/lib/Files/PathVerificationTest.php index fcbe0a6957f..8e4dfd1bb1e 100644 --- a/tests/lib/Files/PathVerificationTest.php +++ b/tests/lib/Files/PathVerificationTest.php @@ -10,6 +10,8 @@ namespace Test\Files; use OC\Files\Storage\Local; use OC\Files\View; use OCP\Files\InvalidPathException; +use OCP\IDBConnection; +use OCP\Server; /** * Class PathVerificationTest @@ -31,7 +33,7 @@ class PathVerificationTest extends \Test\TestCase { public function testPathVerificationFileNameTooLong(): void { - $this->expectException(\OCP\Files\InvalidPathException::class); + $this->expectException(InvalidPathException::class); $this->expectExceptionMessage('Filename is too long'); $fileName = str_repeat('a', 500); @@ -43,13 +45,13 @@ class PathVerificationTest extends \Test\TestCase { * @dataProvider providesEmptyFiles */ public function testPathVerificationEmptyFileName($fileName): void { - $this->expectException(\OCP\Files\InvalidPathException::class); + $this->expectException(InvalidPathException::class); $this->expectExceptionMessage('Empty filename is not allowed'); $this->view->verifyPath('', $fileName); } - public function providesEmptyFiles() { + public static function providesEmptyFiles(): array { return [ [''], [' '], @@ -60,13 +62,13 @@ class PathVerificationTest extends \Test\TestCase { * @dataProvider providesDotFiles */ public function testPathVerificationDotFiles($fileName): void { - $this->expectException(\OCP\Files\InvalidPathException::class); + $this->expectException(InvalidPathException::class); $this->expectExceptionMessage('Dot files are not allowed'); $this->view->verifyPath('', $fileName); } - public function providesDotFiles() { + public static function providesDotFiles(): array { return [ ['.'], ['..'], @@ -83,7 +85,7 @@ class PathVerificationTest extends \Test\TestCase { * @dataProvider providesAstralPlane */ public function testPathVerificationAstralPlane($fileName): void { - $connection = \OC::$server->getDatabaseConnection(); + $connection = Server::get(IDBConnection::class); if (!$connection->supports4ByteText()) { $this->expectException(InvalidPathException::class); @@ -95,7 +97,7 @@ class PathVerificationTest extends \Test\TestCase { $this->view->verifyPath('', $fileName); } - public function providesAstralPlane() { + public static function providesAstralPlane(): array { return [ // this is the monkey emoji - http://en.wikipedia.org/w/index.php?title=%F0%9F%90%B5&redirect=no ['🐵'], @@ -117,7 +119,7 @@ class PathVerificationTest extends \Test\TestCase { $this->addToAssertionCount(1); } - public function providesValidPosixPaths() { + public static function providesValidPosixPaths(): array { return [ ['simple'], ['simple.txt'], diff --git a/tests/lib/Files/Storage/CommonTest.php b/tests/lib/Files/Storage/CommonTest.php index b51b35be8f9..d6904665904 100644 --- a/tests/lib/Files/Storage/CommonTest.php +++ b/tests/lib/Files/Storage/CommonTest.php @@ -9,10 +9,12 @@ namespace Test\Files\Storage; use OC\Files\Storage\Wrapper\Jail; use OC\Files\Storage\Wrapper\Wrapper; +use OCP\Files; use OCP\Files\IFilenameValidator; use OCP\Files\InvalidCharacterInPathException; use OCP\Files\InvalidPathException; use OCP\ITempManager; +use OCP\Server; use PHPUnit\Framework\MockObject\MockObject; /** @@ -32,12 +34,12 @@ class CommonTest extends Storage { $this->filenameValidator = $this->createMock(IFilenameValidator::class); $this->overwriteService(IFilenameValidator::class, $this->filenameValidator); - $this->tmpDir = \OCP\Server::get(ITempManager::class)->getTemporaryFolder(); + $this->tmpDir = Server::get(ITempManager::class)->getTemporaryFolder(); $this->instance = new \OC\Files\Storage\CommonTest(['datadir' => $this->tmpDir]); } protected function tearDown(): void { - \OC_Helper::rmdirr($this->tmpDir); + Files::rmdirr($this->tmpDir); $this->restoreService(IFilenameValidator::class); parent::tearDown(); } diff --git a/tests/lib/Files/Storage/CopyDirectoryTest.php b/tests/lib/Files/Storage/CopyDirectoryTest.php index e434c6b787f..054101510b7 100644 --- a/tests/lib/Files/Storage/CopyDirectoryTest.php +++ b/tests/lib/Files/Storage/CopyDirectoryTest.php @@ -7,6 +7,7 @@ namespace Test\Files\Storage; +use OC\Files\Storage\PolyFill\CopyDirectory; use OC\Files\Storage\Temporary; class StorageNoRecursiveCopy extends Temporary { @@ -19,7 +20,7 @@ class StorageNoRecursiveCopy extends Temporary { } class CopyDirectoryStorage extends StorageNoRecursiveCopy { - use \OC\Files\Storage\PolyFill\CopyDirectory; + use CopyDirectory; } /** diff --git a/tests/lib/Files/Storage/HomeTest.php b/tests/lib/Files/Storage/HomeTest.php index b6d0f1aa85a..f459ff5c23b 100644 --- a/tests/lib/Files/Storage/HomeTest.php +++ b/tests/lib/Files/Storage/HomeTest.php @@ -7,20 +7,21 @@ namespace Test\Files\Storage; +use OC\Files\Storage\Home; use OC\User\User; +use OCP\Files; +use OCP\ITempManager; +use OCP\Server; class DummyUser extends User { - private $home; - - private $uid; - /** * @param string $uid * @param string $home */ - public function __construct($uid, $home) { - $this->uid = $uid; - $this->home = $home; + public function __construct( + private $uid, + private $home, + ) { } public function getHome() { @@ -55,14 +56,14 @@ class HomeTest extends Storage { protected function setUp(): void { parent::setUp(); - $this->tmpDir = \OC::$server->getTempManager()->getTemporaryFolder(); + $this->tmpDir = Server::get(ITempManager::class)->getTemporaryFolder(); $this->userId = $this->getUniqueID('user_'); $this->user = new DummyUser($this->userId, $this->tmpDir); - $this->instance = new \OC\Files\Storage\Home(['user' => $this->user]); + $this->instance = new Home(['user' => $this->user]); } protected function tearDown(): void { - \OC_Helper::rmdirr($this->tmpDir); + Files::rmdirr($this->tmpDir); parent::tearDown(); } diff --git a/tests/lib/Files/Storage/LocalTest.php b/tests/lib/Files/Storage/LocalTest.php index 65bc538ef17..e3953b7bde5 100644 --- a/tests/lib/Files/Storage/LocalTest.php +++ b/tests/lib/Files/Storage/LocalTest.php @@ -7,7 +7,13 @@ namespace Test\Files\Storage; +use OC\Files\Storage\Local; use OC\Files\Storage\Wrapper\Jail; +use OCP\Files; +use OCP\Files\ForbiddenException; +use OCP\Files\StorageNotAvailableException; +use OCP\ITempManager; +use OCP\Server; /** * Class LocalTest @@ -25,12 +31,12 @@ class LocalTest extends Storage { protected function setUp(): void { parent::setUp(); - $this->tmpDir = \OC::$server->getTempManager()->getTemporaryFolder(); - $this->instance = new \OC\Files\Storage\Local(['datadir' => $this->tmpDir]); + $this->tmpDir = Server::get(ITempManager::class)->getTemporaryFolder(); + $this->instance = new Local(['datadir' => $this->tmpDir]); } protected function tearDown(): void { - \OC_Helper::rmdirr($this->tmpDir); + Files::rmdirr($this->tmpDir); parent::tearDown(); } @@ -54,19 +60,19 @@ class LocalTest extends Storage { public function testInvalidArgumentsEmptyArray(): void { $this->expectException(\InvalidArgumentException::class); - new \OC\Files\Storage\Local([]); + new Local([]); } public function testInvalidArgumentsNoArray(): void { $this->expectException(\InvalidArgumentException::class); - new \OC\Files\Storage\Local([]); + new Local([]); } public function testDisallowSymlinksOutsideDatadir(): void { - $this->expectException(\OCP\Files\ForbiddenException::class); + $this->expectException(ForbiddenException::class); $subDir1 = $this->tmpDir . 'sub1'; $subDir2 = $this->tmpDir . 'sub2'; @@ -76,7 +82,7 @@ class LocalTest extends Storage { symlink($subDir2, $sym); - $storage = new \OC\Files\Storage\Local(['datadir' => $subDir1]); + $storage = new Local(['datadir' => $subDir1]); $storage->file_put_contents('sym/foo', 'bar'); } @@ -90,7 +96,7 @@ class LocalTest extends Storage { symlink($subDir2, $sym); - $storage = new \OC\Files\Storage\Local(['datadir' => $subDir1]); + $storage = new Local(['datadir' => $subDir1]); $storage->file_put_contents('sym/foo', 'bar'); $this->addToAssertionCount(1); @@ -128,12 +134,12 @@ class LocalTest extends Storage { } public function testUnavailableExternal(): void { - $this->expectException(\OCP\Files\StorageNotAvailableException::class); - $this->instance = new \OC\Files\Storage\Local(['datadir' => $this->tmpDir . '/unexist', 'isExternal' => true]); + $this->expectException(StorageNotAvailableException::class); + $this->instance = new Local(['datadir' => $this->tmpDir . '/unexist', 'isExternal' => true]); } public function testUnavailableNonExternal(): void { - $this->instance = new \OC\Files\Storage\Local(['datadir' => $this->tmpDir . '/unexist']); + $this->instance = new Local(['datadir' => $this->tmpDir . '/unexist']); // no exception thrown $this->assertNotNull($this->instance); } diff --git a/tests/lib/Files/Storage/Storage.php b/tests/lib/Files/Storage/Storage.php index 36d70965848..3e239d005b7 100644 --- a/tests/lib/Files/Storage/Storage.php +++ b/tests/lib/Files/Storage/Storage.php @@ -8,6 +8,7 @@ namespace Test\Files\Storage; use OC\Files\Cache\Watcher; +use OC\Files\Storage\Wrapper\Wrapper; use OCP\Files\Storage\IStorage; use OCP\Files\Storage\IWriteStreamStorage; @@ -108,7 +109,7 @@ abstract class Storage extends \Test\TestCase { $this->assertEquals([], $content); } - public function fileNameProvider() { + public static function fileNameProvider(): array { return [ ['file.txt'], [' file.txt'], @@ -119,7 +120,7 @@ abstract class Storage extends \Test\TestCase { ]; } - public function directoryProvider() { + public static function directoryProvider(): array { return [ ['folder'], [' folder'], @@ -130,7 +131,7 @@ abstract class Storage extends \Test\TestCase { ]; } - public function loremFileProvider() { + public static function loremFileProvider(): array { $root = \OC::$SERVERROOT . '/tests/data/'; return [ // small file @@ -179,7 +180,7 @@ abstract class Storage extends \Test\TestCase { } - public function copyAndMoveProvider() { + public static function copyAndMoveProvider(): array { return [ ['/source.txt', '/target.txt'], ['/source.txt', '/target with space.txt'], @@ -327,7 +328,7 @@ abstract class Storage extends \Test\TestCase { * no change. */ public function testCheckUpdate(): void { - if ($this->instance instanceof \OC\Files\Storage\Wrapper\Wrapper) { + if ($this->instance instanceof Wrapper) { $this->markTestSkipped('Cannot test update check on wrappers'); } $textFile = \OC::$SERVERROOT . '/tests/data/lorem.txt'; @@ -414,7 +415,7 @@ abstract class Storage extends \Test\TestCase { $this->assertFalse($this->instance->file_exists('folder')); } - public function hashProvider() { + public static function hashProvider(): array { return [ ['Foobar', 'md5'], ['Foobar', 'sha1'], @@ -557,7 +558,7 @@ abstract class Storage extends \Test\TestCase { $this->instance->copy('source', 'target'); - $this->assertFalse($this->instance->file_exists('target/test2.txt')); + $this->assertFalse($this->instance->file_exists('target/test2.txt'), 'File target/test2.txt should no longer exist, but does'); $this->assertEquals('foo', $this->instance->file_get_contents('target/test1.txt')); } diff --git a/tests/lib/Files/Storage/StorageFactoryTest.php b/tests/lib/Files/Storage/StorageFactoryTest.php index 83e8a7bf6eb..2bdc3592631 100644 --- a/tests/lib/Files/Storage/StorageFactoryTest.php +++ b/tests/lib/Files/Storage/StorageFactoryTest.php @@ -8,6 +8,7 @@ namespace Test\Files\Storage; use OC\Files\Mount\MountPoint; +use OC\Files\Storage\StorageFactory; use OC\Files\Storage\Wrapper\Wrapper; use OCP\Files\Mount\IMountPoint; use OCP\Files\Storage\IStorage; @@ -26,7 +27,7 @@ class DummyWrapper extends Wrapper { class StorageFactoryTest extends TestCase { public function testSimpleWrapper(): void { - $instance = new \OC\Files\Storage\StorageFactory(); + $instance = new StorageFactory(); $mount = new MountPoint('\OC\Files\Storage\Temporary', '/foo', [[]], $instance); $instance->addStorageWrapper('dummy', function ($mountPoint, IStorage $storage, IMountPoint $mount) { $this->assertInstanceOf('\OC\Files\Storage\Temporary', $storage); @@ -39,7 +40,7 @@ class StorageFactoryTest extends TestCase { } public function testRemoveWrapper(): void { - $instance = new \OC\Files\Storage\StorageFactory(); + $instance = new StorageFactory(); $mount = new MountPoint('\OC\Files\Storage\Temporary', '/foo', [[]], $instance); $instance->addStorageWrapper('dummy', function ($mountPoint, IStorage $storage) { return new DummyWrapper(['storage' => $storage]); @@ -50,7 +51,7 @@ class StorageFactoryTest extends TestCase { } public function testWrapperPriority(): void { - $instance = new \OC\Files\Storage\StorageFactory(); + $instance = new StorageFactory(); $mount = new MountPoint('\OC\Files\Storage\Temporary', '/foo', [[]], $instance); $instance->addStorageWrapper('dummy1', function ($mountPoint, IStorage $storage) { return new DummyWrapper(['storage' => $storage, 'data' => 1]); diff --git a/tests/lib/Files/Storage/StoragesTest.php b/tests/lib/Files/Storage/StoragesTestCase.php index 3f8198d331d..18fe78a93d1 100644 --- a/tests/lib/Files/Storage/StoragesTest.php +++ b/tests/lib/Files/Storage/StoragesTestCase.php @@ -9,7 +9,7 @@ namespace Test\Files\Storage; use Test\TestCase; -abstract class StoragesTest extends TestCase { +abstract class StoragesTestCase extends TestCase { /** * @var \OC\Files\Storage\Storage */ diff --git a/tests/lib/Files/Storage/Wrapper/AvailabilityTest.php b/tests/lib/Files/Storage/Wrapper/AvailabilityTest.php index 29277772358..8e2ead4a423 100644 --- a/tests/lib/Files/Storage/Wrapper/AvailabilityTest.php +++ b/tests/lib/Files/Storage/Wrapper/AvailabilityTest.php @@ -53,7 +53,7 @@ class AvailabilityTest extends \Test\TestCase { * */ public function testUnavailable(): void { - $this->expectException(\OCP\Files\StorageNotAvailableException::class); + $this->expectException(StorageNotAvailableException::class); $this->storage->expects($this->once()) ->method('getAvailability') @@ -82,7 +82,7 @@ class AvailabilityTest extends \Test\TestCase { ]; $this->storage->expects($this->exactly(2)) ->method('setAvailability') - ->willReturnCallback(function ($value) use (&$calls) { + ->willReturnCallback(function ($value) use (&$calls): void { $expected = array_shift($calls); $this->assertEquals($expected, $value); }); @@ -97,7 +97,7 @@ class AvailabilityTest extends \Test\TestCase { * */ public function testAvailableThrowStorageNotAvailable(): void { - $this->expectException(\OCP\Files\StorageNotAvailableException::class); + $this->expectException(StorageNotAvailableException::class); $this->storage->expects($this->once()) ->method('getAvailability') @@ -106,7 +106,7 @@ class AvailabilityTest extends \Test\TestCase { ->method('test'); $this->storage->expects($this->once()) ->method('mkdir') - ->will($this->throwException(new StorageNotAvailableException())); + ->willThrowException(new StorageNotAvailableException()); $this->storageCache->expects($this->once()) ->method('setAvailability') ->with($this->equalTo(false)); @@ -148,7 +148,7 @@ class AvailabilityTest extends \Test\TestCase { ->method('test'); $this->storage->expects($this->once()) ->method('mkdir') - ->will($this->throwException(new \Exception())); + ->willThrowException(new \Exception()); $this->storage->expects($this->never()) ->method('setAvailability'); diff --git a/tests/lib/Files/Storage/Wrapper/EncodingTest.php b/tests/lib/Files/Storage/Wrapper/EncodingTest.php index d8b03a891c2..2d29e2d0952 100644 --- a/tests/lib/Files/Storage/Wrapper/EncodingTest.php +++ b/tests/lib/Files/Storage/Wrapper/EncodingTest.php @@ -7,6 +7,9 @@ namespace Test\Files\Storage\Wrapper; +use OC\Files\Storage\Temporary; +use OC\Files\Storage\Wrapper\Encoding; + class EncodingTest extends \Test\Files\Storage\Storage { public const NFD_NAME = 'ümlaut'; public const NFC_NAME = 'ümlaut'; @@ -18,8 +21,8 @@ class EncodingTest extends \Test\Files\Storage\Storage { protected function setUp(): void { parent::setUp(); - $this->sourceStorage = new \OC\Files\Storage\Temporary([]); - $this->instance = new \OC\Files\Storage\Wrapper\Encoding([ + $this->sourceStorage = new Temporary([]); + $this->instance = new Encoding([ 'storage' => $this->sourceStorage ]); } @@ -29,25 +32,25 @@ class EncodingTest extends \Test\Files\Storage\Storage { parent::tearDown(); } - public function directoryProvider() { + public static function directoryProvider(): array { $a = parent::directoryProvider(); $a[] = [self::NFC_NAME]; return $a; } - public function fileNameProvider() { + public static function fileNameProvider(): array { $a = parent::fileNameProvider(); $a[] = [self::NFD_NAME . '.txt']; return $a; } - public function copyAndMoveProvider() { + public static function copyAndMoveProvider(): array { $a = parent::copyAndMoveProvider(); $a[] = [self::NFD_NAME . '.txt', self::NFC_NAME . '-renamed.txt']; return $a; } - public function accessNameProvider() { + public static function accessNameProvider(): array { return [ [self::NFD_NAME], [self::NFC_NAME], @@ -110,7 +113,7 @@ class EncodingTest extends \Test\Files\Storage\Storage { $this->assertEquals('nfc', $this->instance->file_get_contents(self::NFC_NAME)); } - public function encodedDirectoriesProvider() { + public static function encodedDirectoriesProvider(): array { return [ [self::NFD_NAME, self::NFC_NAME], [self::NFD_NAME . '/' . self::NFD_NAME, self::NFC_NAME . '/' . self::NFC_NAME], @@ -150,7 +153,7 @@ class EncodingTest extends \Test\Files\Storage\Storage { $this->assertEquals('barbaric', $this->instance->file_get_contents('//' . self::NFC_NAME)); } - public function sourceAndTargetDirectoryProvider() { + public static function sourceAndTargetDirectoryProvider(): array { return [ [self::NFC_NAME . '1', self::NFC_NAME . '2'], [self::NFD_NAME . '1', self::NFC_NAME . '2'], diff --git a/tests/lib/Files/Storage/Wrapper/EncryptionTest.php b/tests/lib/Files/Storage/Wrapper/EncryptionTest.php index bb3df36dec2..8065854ec50 100644 --- a/tests/lib/Files/Storage/Wrapper/EncryptionTest.php +++ b/tests/lib/Files/Storage/Wrapper/EncryptionTest.php @@ -8,10 +8,8 @@ namespace Test\Files\Storage\Wrapper; use Exception; -use OC; use OC\Encryption\Exceptions\ModuleDoesNotExistsException; use OC\Encryption\File; -use OC\Encryption\Update; use OC\Encryption\Util; use OC\Files\Cache\Cache; use OC\Files\Cache\CacheEntry; @@ -29,6 +27,8 @@ use OCP\Files\Cache\ICache; use OCP\Files\Mount\IMountPoint; use OCP\ICacheFactory; use OCP\IConfig; +use OCP\ITempManager; +use OCP\Server; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; use Test\Files\Storage\Storage; @@ -46,7 +46,6 @@ class EncryptionTest extends Storage { private Util&MockObject $util; private \OC\Encryption\Manager&MockObject $encryptionManager; private IEncryptionModule&MockObject $encryptionModule; - private Update&MockObject $update; private Cache&MockObject $cache; private LoggerInterface&MockObject $logger; private File&MockObject $file; @@ -62,9 +61,9 @@ class EncryptionTest extends Storage { parent::setUp(); $mockModule = $this->buildMockModule(); - $this->encryptionManager = $this->getMockBuilder('\OC\Encryption\Manager') + $this->encryptionManager = $this->getMockBuilder(\OC\Encryption\Manager::class) ->disableOriginalConstructor() - ->setMethods(['getEncryptionModule', 'isEnabled']) + ->onlyMethods(['getEncryptionModule', 'isEnabled']) ->getMock(); $this->encryptionManager->expects($this->any()) ->method('getEncryptionModule') @@ -78,8 +77,8 @@ class EncryptionTest extends Storage { ->disableOriginalConstructor() ->getMock(); - $this->util = $this->getMockBuilder('\OC\Encryption\Util') - ->setMethods(['getUidAndFilename', 'isFile', 'isExcluded', 'stripPartialFileExtension']) + $this->util = $this->getMockBuilder(Util::class) + ->onlyMethods(['getUidAndFilename', 'isFile', 'isExcluded', 'stripPartialFileExtension']) ->setConstructorArgs([new View(), new Manager( $this->config, $this->createMock(ICacheFactory::class), @@ -98,9 +97,9 @@ class EncryptionTest extends Storage { return $path; }); - $this->file = $this->getMockBuilder('\OC\Encryption\File') + $this->file = $this->getMockBuilder(File::class) ->disableOriginalConstructor() - ->setMethods(['getAccessList']) + ->onlyMethods(['getAccessList']) ->getMock(); $this->file->expects($this->any())->method('getAccessList')->willReturn([]); @@ -108,15 +107,11 @@ class EncryptionTest extends Storage { $this->sourceStorage = new Temporary([]); - $this->keyStore = $this->getMockBuilder('\OC\Encryption\Keys\Storage') - ->disableOriginalConstructor()->getMock(); - - $this->update = $this->getMockBuilder('\OC\Encryption\Update') - ->disableOriginalConstructor()->getMock(); + $this->keyStore = $this->createMock(\OC\Encryption\Keys\Storage::class); - $this->mount = $this->getMockBuilder('\OC\Files\Mount\MountPoint') + $this->mount = $this->getMockBuilder(MountPoint::class) ->disableOriginalConstructor() - ->setMethods(['getOption']) + ->onlyMethods(['getOption']) ->getMock(); $this->mount->expects($this->any())->method('getOption')->willReturnCallback(function ($option, $default) { if ($option === 'encrypt' && $default === true) { @@ -155,12 +150,11 @@ class EncryptionTest extends Storage { $this->file, null, $this->keyStore, - $this->update, $this->mountManager, $this->arrayCache ] ) - ->setMethods(['getMetaData', 'getCache', 'getEncryptionModule']) + ->onlyMethods(['getMetaData', 'getCache', 'getEncryptionModule']) ->getMock(); $this->instance->expects($this->any()) @@ -181,7 +175,7 @@ class EncryptionTest extends Storage { protected function buildMockModule(): IEncryptionModule&MockObject { $this->encryptionModule = $this->getMockBuilder('\OCP\Encryption\IEncryptionModule') ->disableOriginalConstructor() - ->setMethods(['getId', 'getDisplayName', 'begin', 'end', 'encrypt', 'decrypt', 'update', 'shouldEncrypt', 'getUnencryptedBlockSize', 'isReadable', 'encryptAll', 'prepareDecryptAll', 'isReadyForUser', 'needDetailedAccessList']) + ->onlyMethods(['getId', 'getDisplayName', 'begin', 'end', 'encrypt', 'decrypt', 'update', 'shouldEncrypt', 'getUnencryptedBlockSize', 'isReadable', 'encryptAll', 'prepareDecryptAll', 'isReadyForUser', 'needDetailedAccessList']) ->getMock(); $this->encryptionModule->expects($this->any())->method('getId')->willReturn('UNIT_TEST_MODULE'); @@ -237,12 +231,11 @@ class EncryptionTest extends Storage { $this->file, null, $this->keyStore, - $this->update, $this->mountManager, $this->arrayCache, ] ) - ->setMethods(['getCache', 'verifyUnencryptedSize']) + ->onlyMethods(['getCache', 'verifyUnencryptedSize']) ->getMock(); if ($unencryptedSizeSet) { @@ -285,7 +278,7 @@ class EncryptionTest extends Storage { } } - public function dataTestGetMetaData() { + public static function dataTestGetMetaData(): array { return [ ['/test.txt', ['size' => 42, 'encrypted' => 2, 'encryptedVersion' => 2, 'fileid' => 1], true, true, 12, ['size' => 12, 'encrypted' => true, 'encryptedVersion' => 2]], ['/test.txt', null, true, true, 12, null], @@ -316,12 +309,11 @@ class EncryptionTest extends Storage { $this->file, null, $this->keyStore, - $this->update, $this->mountManager, $this->arrayCache, ] ) - ->setMethods(['getCache', 'verifyUnencryptedSize']) + ->onlyMethods(['getCache', 'verifyUnencryptedSize']) ->getMock(); $this->instance->expects($this->any())->method('getCache')->willReturn($cache); @@ -361,12 +353,11 @@ class EncryptionTest extends Storage { $this->file, null, $this->keyStore, - $this->update, $this->mountManager, $this->arrayCache, ] ) - ->setMethods(['fixUnencryptedSize']) + ->onlyMethods(['fixUnencryptedSize']) ->getMock(); $sourceStorage->expects($this->once())->method('filesize')->willReturn($encryptedSize); @@ -389,7 +380,7 @@ class EncryptionTest extends Storage { ); } - public function dataTestVerifyUnencryptedSize() { + public static function dataTestVerifyUnencryptedSize(): array { return [ [120, 80, false, 80], [120, 120, false, 80], @@ -444,7 +435,7 @@ class EncryptionTest extends Storage { * * @return array */ - public function dataTestCopyAndRename() { + public static function dataTestCopyAndRename(): array { return [ ['source', 'target', true, false, false], ['source', 'target', true, true, false], @@ -491,7 +482,6 @@ class EncryptionTest extends Storage { $this->file, null, $this->keyStore, - $this->update, $this->mountManager, $this->arrayCache, ); @@ -506,7 +496,7 @@ class EncryptionTest extends Storage { $encryptionStorage->rmdir($path); } - public function dataTestRmdir() { + public static function dataTestRmdir(): array { return [ ['/file.txt', true, true, true], ['/file.txt', false, true, true], @@ -541,7 +531,7 @@ class EncryptionTest extends Storage { ); } - public function dataTestCopyKeys() { + public static function dataTestCopyKeys(): array { return [ [true, false], [false, true], @@ -598,12 +588,11 @@ class EncryptionTest extends Storage { $this->file, null, $this->keyStore, - $this->update, $this->mountManager, $this->arrayCache, ] ) - ->setMethods(['getCache', 'readFirstBlock']) + ->onlyMethods(['getCache', 'readFirstBlock']) ->getMock(); $instance->method('getCache')->willReturn($cache); @@ -629,7 +618,7 @@ class EncryptionTest extends Storage { $this->invokePrivate($instance, 'getHeader', [$path]); } - public function dataTestGetHeader() { + public static function dataTestGetHeader(): array { return [ ['/foo/bar.txt', false, '/foo/bar.txt'], ['/foo/bar.txt.part', false, '/foo/bar.txt'], @@ -646,7 +635,7 @@ class EncryptionTest extends Storage { * @dataProvider dataTestGetHeaderAddLegacyModule */ public function testGetHeaderAddLegacyModule($header, $isEncrypted, $strippedPathExists, $expected): void { - $sourceStorage = $this->getMockBuilder('\OC\Files\Storage\Storage') + $sourceStorage = $this->getMockBuilder(\OC\Files\Storage\Storage::class) ->disableOriginalConstructor()->getMock(); $sourceStorage->expects($this->once()) @@ -654,7 +643,7 @@ class EncryptionTest extends Storage { ->with('test.txt') ->willReturn($strippedPathExists); - $util = $this->getMockBuilder('\OC\Encryption\Util') + $util = $this->getMockBuilder(Util::class) ->onlyMethods(['stripPartialFileExtension', 'parseRawHeader']) ->setConstructorArgs([new View(), new Manager( $this->config, @@ -669,8 +658,7 @@ class EncryptionTest extends Storage { return $path; }); - $cache = $this->getMockBuilder('\OC\Files\Cache\Cache') - ->disableOriginalConstructor()->getMock(); + $cache = $this->createMock(Cache::class); $cache->expects($this->any()) ->method('get') ->willReturnCallback(function ($path) use ($isEncrypted) { @@ -692,12 +680,11 @@ class EncryptionTest extends Storage { $this->file, null, $this->keyStore, - $this->update, $this->mountManager, $this->arrayCache, ] ) - ->setMethods(['readFirstBlock', 'getCache']) + ->onlyMethods(['readFirstBlock', 'getCache']) ->getMock(); $instance->method('readFirstBlock')->willReturn(''); @@ -713,7 +700,7 @@ class EncryptionTest extends Storage { } } - public function dataTestGetHeaderAddLegacyModule() { + public static function dataTestGetHeaderAddLegacyModule(): array { return [ [['cipher' => 'AES-128'], true, true, ['cipher' => 'AES-128', Util::HEADER_ENCRYPTION_MODULE_KEY => 'OC_DEFAULT_MODULE']], [[], true, false, []], @@ -722,7 +709,7 @@ class EncryptionTest extends Storage { ]; } - public function dataCopyBetweenStorage() { + public static function dataCopyBetweenStorage(): array { return [ [true, true, true], [true, false, false], @@ -740,7 +727,7 @@ class EncryptionTest extends Storage { $storage2->expects($this->any()) ->method('fopen') ->willReturnCallback(function ($path, $mode) { - $temp = OC::$server->getTempManager(); + $temp = Server::get(ITempManager::class); return fopen($temp->getTemporaryFile(), $mode); }); $storage2->method('getId') @@ -789,7 +776,7 @@ class EncryptionTest extends Storage { $storage2->expects($this->any()) ->method('fopen') ->willReturnCallback(function ($path, $mode) { - $temp = OC::$server->getTempManager(); + $temp = Server::get(ITempManager::class); return fopen($temp->getTemporaryFile(), $mode); }); $storage2->method('getId') @@ -867,12 +854,11 @@ class EncryptionTest extends Storage { $this->file, null, $this->keyStore, - $this->update, $this->mountManager, $this->arrayCache ] ) - ->setMethods(['updateUnencryptedSize', 'getCache']) + ->onlyMethods(['updateUnencryptedSize', 'getCache']) ->getMock(); $targetStorage->expects($this->once())->method('copyFromStorage') @@ -914,7 +900,7 @@ class EncryptionTest extends Storage { $this->assertSame($copyResult, $result); } - public function dataTestCopyBetweenStorageVersions() { + public static function dataTestCopyBetweenStorageVersions(): array { return [ ['/files/foo.txt', '/files_versions/foo.txt.768743', true, true], ['/files/foo.txt', '/files_versions/foo.txt.768743', true, false], @@ -939,7 +925,7 @@ class EncryptionTest extends Storage { ); } - public function dataTestIsVersion() { + public static function dataTestIsVersion(): array { return [ ['files_versions/foo', true], ['/files_versions/foo', true], @@ -968,7 +954,6 @@ class EncryptionTest extends Storage { $util = $this->createMock(Util::class); $fileHelper = $this->createMock(IFile::class); $keyStorage = $this->createMock(IStorage::class); - $update = $this->createMock(Update::class); $mountManager = $this->createMock(\OC\Files\Mount\Manager::class); $mount = $this->createMock(IMountPoint::class); $arrayCache = $this->createMock(ArrayCache::class); @@ -986,12 +971,11 @@ class EncryptionTest extends Storage { $fileHelper, null, $keyStorage, - $update, $mountManager, $arrayCache ] ) - ->setMethods(['getFullPath', 'getEncryptionModule']) + ->onlyMethods(['getFullPath', 'getEncryptionModule']) ->getMock(); if ($encryptionModule === true) { @@ -1033,7 +1017,7 @@ class EncryptionTest extends Storage { $this->assertSame($expected, $result); } - public function dataTestShouldEncrypt() { + public static function dataTestShouldEncrypt(): array { return [ [false, false, false, false], [true, false, false, false], diff --git a/tests/lib/Files/Storage/Wrapper/JailTest.php b/tests/lib/Files/Storage/Wrapper/JailTest.php index fbc4e1d09ee..f7babfb609d 100644 --- a/tests/lib/Files/Storage/Wrapper/JailTest.php +++ b/tests/lib/Files/Storage/Wrapper/JailTest.php @@ -7,6 +7,10 @@ namespace Test\Files\Storage\Wrapper; +use OC\Files\Filesystem; +use OC\Files\Storage\Temporary; +use OC\Files\Storage\Wrapper\Jail; + class JailTest extends \Test\Files\Storage\Storage { /** * @var \OC\Files\Storage\Temporary @@ -15,9 +19,9 @@ class JailTest extends \Test\Files\Storage\Storage { protected function setUp(): void { parent::setUp(); - $this->sourceStorage = new \OC\Files\Storage\Temporary([]); + $this->sourceStorage = new Temporary([]); $this->sourceStorage->mkdir('foo'); - $this->instance = new \OC\Files\Storage\Wrapper\Jail([ + $this->instance = new Jail([ 'storage' => $this->sourceStorage, 'root' => 'foo' ]); @@ -28,7 +32,7 @@ class JailTest extends \Test\Files\Storage\Storage { $contents = []; $dh = $this->sourceStorage->opendir(''); while (($file = readdir($dh)) !== false) { - if (!\OC\Files\Filesystem::isIgnoredDir($file)) { + if (!Filesystem::isIgnoredDir($file)) { $contents[] = $file; } } diff --git a/tests/lib/Files/Storage/Wrapper/PermissionsMaskTest.php b/tests/lib/Files/Storage/Wrapper/PermissionsMaskTest.php index 5c0a035d094..003842dbbc2 100644 --- a/tests/lib/Files/Storage/Wrapper/PermissionsMaskTest.php +++ b/tests/lib/Files/Storage/Wrapper/PermissionsMaskTest.php @@ -7,6 +7,8 @@ namespace Test\Files\Storage\Wrapper; +use OC\Files\Storage\Temporary; +use OC\Files\Storage\Wrapper\PermissionsMask; use OC\Files\Storage\Wrapper\Wrapper; use OCP\Constants; use OCP\Files\Cache\IScanner; @@ -22,7 +24,7 @@ class PermissionsMaskTest extends \Test\Files\Storage\Storage { protected function setUp(): void { parent::setUp(); - $this->sourceStorage = new \OC\Files\Storage\Temporary([]); + $this->sourceStorage = new Temporary([]); $this->instance = $this->getMaskedStorage(Constants::PERMISSION_ALL); } @@ -32,7 +34,7 @@ class PermissionsMaskTest extends \Test\Files\Storage\Storage { } protected function getMaskedStorage($mask) { - return new \OC\Files\Storage\Wrapper\PermissionsMask([ + return new PermissionsMask([ 'storage' => $this->sourceStorage, 'mask' => $mask ]); @@ -127,7 +129,7 @@ class PermissionsMaskTest extends \Test\Files\Storage\Storage { public function testScanNewFilesNested(): void { $storage = $this->getMaskedStorage(Constants::PERMISSION_READ + Constants::PERMISSION_CREATE + Constants::PERMISSION_UPDATE); - $nestedStorage = new \OC\Files\Storage\Wrapper\PermissionsMask([ + $nestedStorage = new PermissionsMask([ 'storage' => $storage, 'mask' => Constants::PERMISSION_READ + Constants::PERMISSION_CREATE ]); @@ -149,7 +151,7 @@ class PermissionsMaskTest extends \Test\Files\Storage\Storage { $storage = $this->getMaskedStorage(Constants::PERMISSION_READ); $scanner = $storage->getScanner(); $called = false; - $scanner->listen('\OC\Files\Cache\Scanner', 'addToCache', function () use (&$called) { + $scanner->listen('\OC\Files\Cache\Scanner', 'addToCache', function () use (&$called): void { $called = true; }); $scanner->scan('foo', IScanner::SCAN_RECURSIVE, IScanner::REUSE_ETAG | IScanner::REUSE_SIZE); @@ -167,7 +169,7 @@ class PermissionsMaskTest extends \Test\Files\Storage\Storage { $wrappedStorage = new Wrapper(['storage' => $storage]); $scanner = $wrappedStorage->getScanner(); $called = false; - $scanner->listen('\OC\Files\Cache\Scanner', 'addToCache', function () use (&$called) { + $scanner->listen('\OC\Files\Cache\Scanner', 'addToCache', function () use (&$called): void { $called = true; }); $scanner->scan('foo', IScanner::SCAN_RECURSIVE, IScanner::REUSE_ETAG | IScanner::REUSE_SIZE); diff --git a/tests/lib/Files/Storage/Wrapper/QuotaTest.php b/tests/lib/Files/Storage/Wrapper/QuotaTest.php index f07e6021e4e..b2bcdfa32d8 100644 --- a/tests/lib/Files/Storage/Wrapper/QuotaTest.php +++ b/tests/lib/Files/Storage/Wrapper/QuotaTest.php @@ -10,8 +10,10 @@ namespace Test\Files\Storage\Wrapper; //ensure the constants are loaded use OC\Files\Cache\CacheEntry; use OC\Files\Storage\Local; - -\OC::$loader->load('\OC\Files\Filesystem'); +use OC\Files\Storage\Wrapper\Quota; +use OCP\Files; +use OCP\ITempManager; +use OCP\Server; /** * Class QuotaTest @@ -29,13 +31,13 @@ class QuotaTest extends \Test\Files\Storage\Storage { protected function setUp(): void { parent::setUp(); - $this->tmpDir = \OC::$server->getTempManager()->getTemporaryFolder(); - $storage = new \OC\Files\Storage\Local(['datadir' => $this->tmpDir]); - $this->instance = new \OC\Files\Storage\Wrapper\Quota(['storage' => $storage, 'quota' => 10000000]); + $this->tmpDir = Server::get(ITempManager::class)->getTemporaryFolder(); + $storage = new Local(['datadir' => $this->tmpDir]); + $this->instance = new Quota(['storage' => $storage, 'quota' => 10000000]); } protected function tearDown(): void { - \OC_Helper::rmdirr($this->tmpDir); + Files::rmdirr($this->tmpDir); parent::tearDown(); } @@ -43,10 +45,10 @@ class QuotaTest extends \Test\Files\Storage\Storage { * @param integer $limit */ protected function getLimitedStorage($limit) { - $storage = new \OC\Files\Storage\Local(['datadir' => $this->tmpDir]); + $storage = new Local(['datadir' => $this->tmpDir]); $storage->mkdir('files'); $storage->getScanner()->scan(''); - return new \OC\Files\Storage\Wrapper\Quota(['storage' => $storage, 'quota' => $limit]); + return new Quota(['storage' => $storage, 'quota' => $limit]); } public function testFilePutContentsNotEnoughSpace(): void { @@ -76,7 +78,7 @@ class QuotaTest extends \Test\Files\Storage\Storage { public function testFreeSpaceWithUnknownDiskSpace(): void { $storage = $this->getMockBuilder(Local::class) - ->setMethods(['free_space']) + ->onlyMethods(['free_space']) ->setConstructorArgs([['datadir' => $this->tmpDir]]) ->getMock(); $storage->expects($this->any()) @@ -84,7 +86,7 @@ class QuotaTest extends \Test\Files\Storage\Storage { ->willReturn(-2); $storage->getScanner()->scan(''); - $instance = new \OC\Files\Storage\Wrapper\Quota(['storage' => $storage, 'quota' => 9]); + $instance = new Quota(['storage' => $storage, 'quota' => 9]); $instance->getCache()->put( '', ['size' => 3] ); @@ -132,14 +134,14 @@ class QuotaTest extends \Test\Files\Storage\Storage { public function testReturnFalseWhenFopenFailed(): void { $failStorage = $this->getMockBuilder(Local::class) - ->setMethods(['fopen']) + ->onlyMethods(['fopen']) ->setConstructorArgs([['datadir' => $this->tmpDir]]) ->getMock(); $failStorage->expects($this->any()) ->method('fopen') ->willReturn(false); - $instance = new \OC\Files\Storage\Wrapper\Quota(['storage' => $failStorage, 'quota' => 1000]); + $instance = new Quota(['storage' => $failStorage, 'quota' => 1000]); $this->assertFalse($instance->fopen('failedfopen', 'r')); } @@ -197,7 +199,7 @@ class QuotaTest extends \Test\Files\Storage\Storage { ->with('files') ->willReturn(new CacheEntry(['size' => 50])); - $instance = new \OC\Files\Storage\Wrapper\Quota(['storage' => $storage, 'quota' => 1024, 'root' => 'files']); + $instance = new Quota(['storage' => $storage, 'quota' => 1024, 'root' => 'files']); $this->assertEquals(1024 - 50, $instance->free_space('')); } diff --git a/tests/lib/Files/Storage/Wrapper/WrapperTest.php b/tests/lib/Files/Storage/Wrapper/WrapperTest.php index 1d0f41bf3ed..d7b7683c58a 100644 --- a/tests/lib/Files/Storage/Wrapper/WrapperTest.php +++ b/tests/lib/Files/Storage/Wrapper/WrapperTest.php @@ -7,6 +7,12 @@ namespace Test\Files\Storage\Wrapper; +use OC\Files\Storage\Local; +use OC\Files\Storage\Wrapper\Wrapper; +use OCP\Files; +use OCP\ITempManager; +use OCP\Server; + class WrapperTest extends \Test\Files\Storage\Storage { /** * @var string tmpDir @@ -16,13 +22,13 @@ class WrapperTest extends \Test\Files\Storage\Storage { protected function setUp(): void { parent::setUp(); - $this->tmpDir = \OC::$server->getTempManager()->getTemporaryFolder(); - $storage = new \OC\Files\Storage\Local(['datadir' => $this->tmpDir]); - $this->instance = new \OC\Files\Storage\Wrapper\Wrapper(['storage' => $storage]); + $this->tmpDir = Server::get(ITempManager::class)->getTemporaryFolder(); + $storage = new Local(['datadir' => $this->tmpDir]); + $this->instance = new Wrapper(['storage' => $storage]); } protected function tearDown(): void { - \OC_Helper::rmdirr($this->tmpDir); + Files::rmdirr($this->tmpDir); parent::tearDown(); } diff --git a/tests/lib/Files/Stream/DummyEncryptionWrapper.php b/tests/lib/Files/Stream/DummyEncryptionWrapper.php index 211050905bd..6846762cb67 100644 --- a/tests/lib/Files/Stream/DummyEncryptionWrapper.php +++ b/tests/lib/Files/Stream/DummyEncryptionWrapper.php @@ -7,7 +7,9 @@ namespace Test\Files\Stream; -class DummyEncryptionWrapper extends \OC\Files\Stream\Encryption { +use OC\Files\Stream\Encryption; + +class DummyEncryptionWrapper extends Encryption { /** * simulate a non-seekable stream wrapper by always return false * diff --git a/tests/lib/Files/Stream/EncryptionTest.php b/tests/lib/Files/Stream/EncryptionTest.php index 36e72ea764a..c676358ad71 100644 --- a/tests/lib/Files/Stream/EncryptionTest.php +++ b/tests/lib/Files/Stream/EncryptionTest.php @@ -9,8 +9,12 @@ declare(strict_types=1); */ namespace Test\Files\Stream; +use OC\Encryption\File; +use OC\Encryption\Util; use OC\Files\Cache\CacheEntry; +use OC\Files\Storage\Storage; use OC\Files\Storage\Wrapper\Wrapper; +use OC\Files\Stream\Encryption; use OC\Files\View; use OC\Memcache\ArrayCache; use OCP\Encryption\IEncryptionModule; @@ -53,11 +57,11 @@ class EncryptionTest extends \Test\TestCase { ->getMock(); $file = $this->getMockBuilder('\OC\Encryption\File') ->disableOriginalConstructor() - ->setMethods(['getAccessList']) + ->onlyMethods(['getAccessList']) ->getMock(); $file->expects($this->any())->method('getAccessList')->willReturn([]); $util = $this->getMockBuilder('\OC\Encryption\Util') - ->setMethods(['getUidAndFilename']) + ->onlyMethods(['getUidAndFilename']) ->setConstructorArgs([new View(), new \OC\User\Manager( $config, $this->createMock(ICacheFactory::class), @@ -111,20 +115,17 @@ class EncryptionTest extends \Test\TestCase { $expectedReadOnly, ): void { // build mocks - $encryptionModuleMock = $this->getMockBuilder('\OCP\Encryption\IEncryptionModule') - ->disableOriginalConstructor()->getMock(); + $encryptionModuleMock = $this->createMock(IEncryptionModule::class); $encryptionModuleMock->expects($this->any())->method('needDetailedAccessList')->willReturn(!$isMasterKeyUsed); $encryptionModuleMock->expects($this->once()) ->method('getUnencryptedBlockSize')->willReturn(99); $encryptionModuleMock->expects($this->once()) ->method('begin')->willReturn([]); - $storageMock = $this->getMockBuilder('\OC\Files\Storage\Storage') - ->disableOriginalConstructor()->getMock(); + $storageMock = $this->createMock(Storage::class); $storageMock->expects($this->once())->method('file_exists')->willReturn($fileExists); - $fileMock = $this->getMockBuilder('\OC\Encryption\File') - ->disableOriginalConstructor()->getMock(); + $fileMock = $this->createMock(File::class); if ($isMasterKeyUsed) { $fileMock->expects($this->never())->method('getAccessList'); } else { @@ -134,18 +135,20 @@ class EncryptionTest extends \Test\TestCase { return []; }); } - $utilMock = $this->getMockBuilder('\OC\Encryption\Util') + $utilMock = $this->getMockBuilder(Util::class) ->disableOriginalConstructor()->getMock(); $utilMock->expects($this->any()) ->method('getHeaderSize') ->willReturn(8192); // get a instance of the stream wrapper - $streamWrapper = $this->getMockBuilder('\OC\Files\Stream\Encryption') - ->setMethods(['loadContext', 'writeHeader', 'skipHeader'])->disableOriginalConstructor()->getMock(); + $streamWrapper = $this->getMockBuilder(Encryption::class) + ->onlyMethods(['loadContext', 'writeHeader', 'skipHeader']) + ->disableOriginalConstructor() + ->getMock(); // set internal properties of the stream wrapper - $stream = new \ReflectionClass('\OC\Files\Stream\Encryption'); + $stream = new \ReflectionClass(Encryption::class); $encryptionModule = $stream->getProperty('encryptionModule'); $encryptionModule->setAccessible(true); $encryptionModule->setValue($streamWrapper, $encryptionModuleMock); @@ -195,7 +198,7 @@ class EncryptionTest extends \Test\TestCase { $readOnly->setAccessible(false); } - public function dataProviderStreamOpen() { + public static function dataProviderStreamOpen(): array { return [ [false, 'r', '/foo/bar/test.txt', true, '/foo/bar/test.txt', null, null, true], [false, 'r', '/foo/bar/test.txt', false, '/foo/bar', null, null, true], @@ -266,7 +269,7 @@ class EncryptionTest extends \Test\TestCase { unlink($fileName); } - public function dataFilesProvider() { + public static function dataFilesProvider(): array { return [ ['lorem-big.txt'], ['block-aligned.txt'], @@ -315,9 +318,12 @@ class EncryptionTest extends \Test\TestCase { * @dataProvider dataFilesProvider */ public function testWriteToNonSeekableStorage($testFile): void { - $wrapper = $this->getMockBuilder('\OC\Files\Stream\Encryption') - ->setMethods(['parentSeekStream'])->getMock(); - $wrapper->expects($this->any())->method('parentSeekStream')->willReturn(false); + $wrapper = $this->getMockBuilder(Encryption::class) + ->onlyMethods(['parentStreamSeek']) + ->getMock(); + $wrapper->expects($this->any()) + ->method('parentStreamSeek') + ->willReturn(false); $expectedData = file_get_contents(\OC::$SERVERROOT . '/tests/data/' . $testFile); // write it @@ -351,9 +357,9 @@ class EncryptionTest extends \Test\TestCase { } protected function buildMockModule(): IEncryptionModule&MockObject { - $encryptionModule = $this->getMockBuilder('\OCP\Encryption\IEncryptionModule') + $encryptionModule = $this->getMockBuilder(IEncryptionModule::class) ->disableOriginalConstructor() - ->setMethods(['getId', 'getDisplayName', 'begin', 'end', 'encrypt', 'decrypt', 'update', 'shouldEncrypt', 'getUnencryptedBlockSize', 'isReadable', 'encryptAll', 'prepareDecryptAll', 'isReadyForUser', 'needDetailedAccessList']) + ->onlyMethods(['getId', 'getDisplayName', 'begin', 'end', 'encrypt', 'decrypt', 'update', 'shouldEncrypt', 'getUnencryptedBlockSize', 'isReadable', 'encryptAll', 'prepareDecryptAll', 'isReadyForUser', 'needDetailedAccessList']) ->getMock(); $encryptionModule->expects($this->any())->method('getId')->willReturn('UNIT_TEST_MODULE'); diff --git a/tests/lib/Files/Stream/HashWrapperTest.php b/tests/lib/Files/Stream/HashWrapperTest.php index ee50fe3b13a..66dee77b607 100644 --- a/tests/lib/Files/Stream/HashWrapperTest.php +++ b/tests/lib/Files/Stream/HashWrapperTest.php @@ -25,13 +25,13 @@ class HashWrapperTest extends TestCase { $data = $tmpData; } - $wrapper = HashWrapper::wrap($data, $algo, function ($result) use ($hash) { + $wrapper = HashWrapper::wrap($data, $algo, function ($result) use ($hash): void { $this->assertEquals($hash, $result); }); stream_get_contents($wrapper); } - public function hashProvider() { + public static function hashProvider(): array { return [ ['foo', 'md5', 'acbd18db4cc2f85cedef654fccc4a4d8'], ['foo', 'sha1', '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33'], diff --git a/tests/lib/Files/Stream/QuotaTest.php b/tests/lib/Files/Stream/QuotaTest.php index 2df767d6c60..31c0f6c1453 100644 --- a/tests/lib/Files/Stream/QuotaTest.php +++ b/tests/lib/Files/Stream/QuotaTest.php @@ -7,6 +7,8 @@ namespace Test\Files\Stream; +use OC\Files\Stream\Quota; + class QuotaTest extends \Test\TestCase { /** * @param string $mode @@ -15,7 +17,7 @@ class QuotaTest extends \Test\TestCase { */ protected function getStream($mode, $limit) { $source = fopen('php://temp', $mode); - return \OC\Files\Stream\Quota::wrap($source, $limit); + return Quota::wrap($source, $limit); } public function testWriteEnoughSpace(): void { @@ -60,7 +62,7 @@ class QuotaTest extends \Test\TestCase { public function testWriteNotEnoughSpaceExistingStream(): void { $source = fopen('php://temp', 'w+'); fwrite($source, 'foobar'); - $stream = \OC\Files\Stream\Quota::wrap($source, 3); + $stream = Quota::wrap($source, 3); $this->assertEquals(3, fwrite($stream, 'foobar')); rewind($stream); $this->assertEquals('foobarfoo', fread($stream, 100)); @@ -69,7 +71,7 @@ class QuotaTest extends \Test\TestCase { public function testWriteNotEnoughSpaceExistingStreamRewind(): void { $source = fopen('php://temp', 'w+'); fwrite($source, 'foobar'); - $stream = \OC\Files\Stream\Quota::wrap($source, 3); + $stream = Quota::wrap($source, 3); rewind($stream); $this->assertEquals(6, fwrite($stream, 'qwerty')); rewind($stream); diff --git a/tests/lib/Files/Type/DetectionTest.php b/tests/lib/Files/Type/DetectionTest.php index 1005f12786a..81fb7ad4bcb 100644 --- a/tests/lib/Files/Type/DetectionTest.php +++ b/tests/lib/Files/Type/DetectionTest.php @@ -9,6 +9,7 @@ namespace Test\Files\Type; use OC\Files\Type\Detection; use OCP\IURLGenerator; +use OCP\Server; use Psr\Log\LoggerInterface; class DetectionTest extends \Test\TestCase { @@ -18,8 +19,8 @@ class DetectionTest extends \Test\TestCase { protected function setUp(): void { parent::setUp(); $this->detection = new Detection( - \OC::$server->getURLGenerator(), - \OC::$server->get(LoggerInterface::class), + Server::get(IURLGenerator::class), + Server::get(LoggerInterface::class), \OC::$SERVERROOT . '/config/', \OC::$SERVERROOT . '/resources/config/' ); diff --git a/tests/lib/Files/Type/LoaderTest.php b/tests/lib/Files/Type/LoaderTest.php index 6eaf6ac2013..f1018093c45 100644 --- a/tests/lib/Files/Type/LoaderTest.php +++ b/tests/lib/Files/Type/LoaderTest.php @@ -9,6 +9,7 @@ namespace Test\Files\Type; use OC\Files\Type\Loader; use OCP\IDBConnection; +use OCP\Server; use Test\TestCase; class LoaderTest extends TestCase { @@ -16,7 +17,7 @@ class LoaderTest extends TestCase { protected Loader $loader; protected function setUp(): void { - $this->db = \OC::$server->get(IDBConnection::class); + $this->db = Server::get(IDBConnection::class); $this->loader = new Loader($this->db); } diff --git a/tests/lib/Files/Utils/ScannerTest.php b/tests/lib/Files/Utils/ScannerTest.php index f66bb72e865..ebad4680ff6 100644 --- a/tests/lib/Files/Utils/ScannerTest.php +++ b/tests/lib/Files/Utils/ScannerTest.php @@ -10,13 +10,18 @@ namespace Test\Files\Utils; use OC\Files\Filesystem; use OC\Files\Mount\MountPoint; use OC\Files\Storage\Temporary; +use OC\Files\Utils\Scanner; use OCP\EventDispatcher\IEventDispatcher; use OCP\Files\Config\IMountProvider; +use OCP\Files\Config\IMountProviderCollection; use OCP\Files\Storage\IStorageFactory; +use OCP\IDBConnection; use OCP\IUser; +use OCP\IUserManager; +use OCP\Server; use Psr\Log\LoggerInterface; -class TestScanner extends \OC\Files\Utils\Scanner { +class TestScanner extends Scanner { /** * @var \OC\Files\Mount\MountPoint[] $mounts */ @@ -51,13 +56,13 @@ class ScannerTest extends \Test\TestCase { parent::setUp(); $this->userBackend = new \Test\Util\User\Dummy(); - \OC::$server->getUserManager()->registerBackend($this->userBackend); + Server::get(IUserManager::class)->registerBackend($this->userBackend); $this->loginAsUser(); } protected function tearDown(): void { $this->logout(); - \OC::$server->getUserManager()->removeBackend($this->userBackend); + Server::get(IUserManager::class)->removeBackend($this->userBackend); parent::tearDown(); } @@ -71,7 +76,7 @@ class ScannerTest extends \Test\TestCase { $storage->file_put_contents('foo.txt', 'qwerty'); $storage->file_put_contents('folder/bar.txt', 'qwerty'); - $scanner = new TestScanner('', \OC::$server->getDatabaseConnection(), $this->createMock(IEventDispatcher::class), \OC::$server->get(LoggerInterface::class)); + $scanner = new TestScanner('', Server::get(IDBConnection::class), $this->createMock(IEventDispatcher::class), Server::get(LoggerInterface::class)); $scanner->addMount($mount); $scanner->scan(''); @@ -93,7 +98,7 @@ class ScannerTest extends \Test\TestCase { $storage->file_put_contents('foo.txt', 'qwerty'); $storage->file_put_contents('folder/bar.txt', 'qwerty'); - $scanner = new TestScanner('', \OC::$server->getDatabaseConnection(), $this->createMock(IEventDispatcher::class), \OC::$server->get(LoggerInterface::class)); + $scanner = new TestScanner('', Server::get(IDBConnection::class), $this->createMock(IEventDispatcher::class), Server::get(LoggerInterface::class)); $scanner->addMount($mount); $scanner->scan(''); @@ -124,24 +129,21 @@ class ScannerTest extends \Test\TestCase { } }); - \OC::$server->getMountProviderCollection()->registerProvider($mountProvider); + Server::get(IMountProviderCollection::class)->registerProvider($mountProvider); $cache = $storage->getCache(); $storage->mkdir('folder'); $storage->file_put_contents('foo.txt', 'qwerty'); $storage->file_put_contents('folder/bar.txt', 'qwerty'); - $scanner = new \OC\Files\Utils\Scanner($uid, \OC::$server->getDatabaseConnection(), \OC::$server->query(IEventDispatcher::class), \OC::$server->get(LoggerInterface::class)); + $scanner = new Scanner($uid, Server::get(IDBConnection::class), Server::get(IEventDispatcher::class), Server::get(LoggerInterface::class)); $this->assertFalse($cache->inCache('folder/bar.txt')); $scanner->scan('/' . $uid . '/files/foo'); $this->assertTrue($cache->inCache('folder/bar.txt')); } - /** - * @return array - */ - public function invalidPathProvider() { + public static function invalidPathProvider(): array { return [ [ '../', @@ -163,7 +165,7 @@ class ScannerTest extends \Test\TestCase { $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage('Invalid path to scan'); - $scanner = new TestScanner('', \OC::$server->getDatabaseConnection(), $this->createMock(IEventDispatcher::class), \OC::$server->get(LoggerInterface::class)); + $scanner = new TestScanner('', Server::get(IDBConnection::class), $this->createMock(IEventDispatcher::class), Server::get(LoggerInterface::class)); $scanner->scan($invalidPath); } @@ -177,7 +179,7 @@ class ScannerTest extends \Test\TestCase { $storage->file_put_contents('folder/bar.txt', 'qwerty'); $storage->touch('folder/bar.txt', time() - 200); - $scanner = new TestScanner('', \OC::$server->getDatabaseConnection(), $this->createMock(IEventDispatcher::class), \OC::$server->get(LoggerInterface::class)); + $scanner = new TestScanner('', Server::get(IDBConnection::class), $this->createMock(IEventDispatcher::class), Server::get(LoggerInterface::class)); $scanner->addMount($mount); $scanner->scan(''); @@ -203,7 +205,7 @@ class ScannerTest extends \Test\TestCase { $storage->file_put_contents('folder/bar.txt', 'qwerty'); $storage->file_put_contents('folder/subfolder/foobar.txt', 'qwerty'); - $scanner = new TestScanner('', \OC::$server->getDatabaseConnection(), $this->createMock(IEventDispatcher::class), \OC::$server->get(LoggerInterface::class)); + $scanner = new TestScanner('', Server::get(IDBConnection::class), $this->createMock(IEventDispatcher::class), Server::get(LoggerInterface::class)); $scanner->addMount($mount); $scanner->scan('', $recusive = false); diff --git a/tests/lib/Files/ViewTest.php b/tests/lib/Files/ViewTest.php index 53e5855d0e9..36e448ea6e2 100644 --- a/tests/lib/Files/ViewTest.php +++ b/tests/lib/Files/ViewTest.php @@ -7,6 +7,7 @@ namespace Test\Files; +use OC\Files\Cache\Scanner; use OC\Files\Cache\Watcher; use OC\Files\Filesystem; use OC\Files\Mount\MountPoint; @@ -20,12 +21,19 @@ use OCA\Files_Trashbin\Trash\ITrashManager; use OCP\Cache\CappedMemoryCache; use OCP\Constants; use OCP\Files\Config\IMountProvider; +use OCP\Files\Config\IMountProviderCollection; use OCP\Files\FileInfo; use OCP\Files\ForbiddenException; use OCP\Files\GenericFileException; +use OCP\Files\InvalidPathException; use OCP\Files\Mount\IMountManager; +use OCP\Files\NotFoundException; use OCP\Files\Storage\IStorage; +use OCP\Files\Storage\IStorageFactory; +use OCP\IConfig; use OCP\IDBConnection; +use OCP\IGroupManager; +use OCP\ITempManager; use OCP\IUserManager; use OCP\Lock\ILockingProvider; use OCP\Lock\LockedException; @@ -116,8 +124,8 @@ class ViewTest extends \Test\TestCase { Server::get(IUserManager::class)->registerBackend(new \Test\Util\User\Dummy()); //login - $userManager = \OC::$server->getUserManager(); - $groupManager = \OC::$server->getGroupManager(); + $userManager = Server::get(IUserManager::class); + $groupManager = Server::get(IGroupManager::class); $this->user = 'test'; $this->userObject = $userManager->createUser('test', 'test'); @@ -127,7 +135,7 @@ class ViewTest extends \Test\TestCase { self::loginAsUser($this->user); /** @var IMountManager $manager */ - $manager = \OC::$server->get(IMountManager::class); + $manager = Server::get(IMountManager::class); $manager->removeMount('/test'); $this->tempStorage = null; @@ -148,13 +156,13 @@ class ViewTest extends \Test\TestCase { self::logout(); /** @var SetupManager $setupManager */ - $setupManager = \OC::$server->get(SetupManager::class); + $setupManager = Server::get(SetupManager::class); $setupManager->setupRoot(); $this->userObject->delete(); $this->groupObject->delete(); - $mountProviderCollection = \OC::$server->getMountProviderCollection(); + $mountProviderCollection = Server::get(IMountProviderCollection::class); self::invokePrivate($mountProviderCollection, 'providers', [[]]); parent::tearDown(); @@ -274,7 +282,7 @@ class ViewTest extends \Test\TestCase { public function testGetPathNotExisting(): void { - $this->expectException(\OCP\Files\NotFoundException::class); + $this->expectException(NotFoundException::class); $storage1 = $this->getTestStorage(); Filesystem::mount($storage1, [], '/'); @@ -314,9 +322,9 @@ class ViewTest extends \Test\TestCase { */ public function testRemoveSharePermissionWhenSharingDisabledForUser($excludeGroups, $excludeGroupsList, $expectedShareable): void { // Reset sharing disabled for users cache - self::invokePrivate(\OC::$server->get(ShareDisableChecker::class), 'sharingDisabledForUsersCache', [new CappedMemoryCache()]); + self::invokePrivate(Server::get(ShareDisableChecker::class), 'sharingDisabledForUsersCache', [new CappedMemoryCache()]); - $config = \OC::$server->getConfig(); + $config = Server::get(IConfig::class); $oldExcludeGroupsFlag = $config->getAppValue('core', 'shareapi_exclude_groups', 'no'); $oldExcludeGroupsList = $config->getAppValue('core', 'shareapi_exclude_groups_list', ''); $config->setAppValue('core', 'shareapi_exclude_groups', $excludeGroups); @@ -339,7 +347,7 @@ class ViewTest extends \Test\TestCase { $config->setAppValue('core', 'shareapi_exclude_groups_list', $oldExcludeGroupsList); // Reset sharing disabled for users cache - self::invokePrivate(\OC::$server->get(ShareDisableChecker::class), 'sharingDisabledForUsersCache', [new CappedMemoryCache()]); + self::invokePrivate(Server::get(ShareDisableChecker::class), 'sharingDisabledForUsersCache', [new CappedMemoryCache()]); } public function testCacheIncompleteFolder(): void { @@ -518,10 +526,10 @@ class ViewTest extends \Test\TestCase { } public function moveBetweenStorages($storage1, $storage2) { - Filesystem::mount($storage1, [], '/'); - Filesystem::mount($storage2, [], '/substorage'); + Filesystem::mount($storage1, [], '/' . $this->user . '/'); + Filesystem::mount($storage2, [], '/' . $this->user . '/substorage'); - $rootView = new View(''); + $rootView = new View('/' . $this->user); $rootView->rename('foo.txt', 'substorage/folder/foo.txt'); $this->assertFalse($rootView->file_exists('foo.txt')); $this->assertTrue($rootView->file_exists('substorage/folder/foo.txt')); @@ -844,7 +852,7 @@ class ViewTest extends \Test\TestCase { * 1024 is the max path length in mac */ $folderName = 'abcdefghijklmnopqrstuvwxyz012345678901234567890123456789'; - $tmpdirLength = strlen(\OC::$server->getTempManager()->getTemporaryFolder()); + $tmpdirLength = strlen(Server::get(ITempManager::class)->getTemporaryFolder()); if (\OC_Util::runningOnMac()) { $depth = ((1024 - $tmpdirLength) / 57); } else { @@ -891,7 +899,7 @@ class ViewTest extends \Test\TestCase { $info = $view->getFileInfo('/test/test'); $view->touch('/test/test', $past); - $scanner->scanFile('test', \OC\Files\Cache\Scanner::REUSE_ETAG); + $scanner->scanFile('test', Scanner::REUSE_ETAG); $info2 = $view->getFileInfo('/test/test'); $this->assertSame($info['etag'], $info2['etag']); @@ -941,14 +949,16 @@ class ViewTest extends \Test\TestCase { $storage = new Temporary([]); $scanner = $storage->getScanner(); Filesystem::mount($storage, [], '/test/'); - $storage->file_put_contents('test.part', 'foobar'); + $sizeWritten = $storage->file_put_contents('test.part', 'foobar'); $scanner->scan(''); $view = new View('/test'); $info = $view->getFileInfo('test.part'); $this->assertInstanceOf('\OCP\Files\FileInfo', $info); $this->assertNull($info->getId()); + $this->assertEquals(6, $sizeWritten); $this->assertEquals(6, $info->getSize()); + $this->assertEquals('foobar', $view->file_get_contents('test.part')); } public static function absolutePathProvider(): array { @@ -1079,7 +1089,7 @@ class ViewTest extends \Test\TestCase { * @dataProvider tooLongPathDataProvider */ public function testTooLongPath($operation, $param0 = null): void { - $this->expectException(\OCP\Files\InvalidPathException::class); + $this->expectException(InvalidPathException::class); $longPath = ''; @@ -1329,7 +1339,7 @@ class ViewTest extends \Test\TestCase { * @param string $pathPrefix */ public function testReadFromWriteLockedPath($rootPath, $pathPrefix): void { - $this->expectException(\OCP\Lock\LockedException::class); + $this->expectException(LockedException::class); $rootPath = str_replace('{folder}', 'files', $rootPath); $pathPrefix = str_replace('{folder}', 'files', $pathPrefix); @@ -1370,7 +1380,7 @@ class ViewTest extends \Test\TestCase { * @param string $pathPrefix */ public function testWriteToReadLockedFile($rootPath, $pathPrefix): void { - $this->expectException(\OCP\Lock\LockedException::class); + $this->expectException(LockedException::class); $rootPath = str_replace('{folder}', 'files', $rootPath); $pathPrefix = str_replace('{folder}', 'files', $pathPrefix); @@ -1405,7 +1415,7 @@ class ViewTest extends \Test\TestCase { * Test that locks are on mount point paths instead of mount root */ public function testLockLocalMountPointPathInsteadOfStorageRoot(): void { - $lockingProvider = \OC::$server->get(ILockingProvider::class); + $lockingProvider = Server::get(ILockingProvider::class); $view = new View('/testuser/files/'); $storage = new Temporary([]); Filesystem::mount($storage, [], '/'); @@ -1435,7 +1445,7 @@ class ViewTest extends \Test\TestCase { * Test that locks are on mount point paths and also mount root when requested */ public function testLockStorageRootButNotLocalMountPoint(): void { - $lockingProvider = \OC::$server->get(ILockingProvider::class); + $lockingProvider = Server::get(ILockingProvider::class); $view = new View('/testuser/files/'); $storage = new Temporary([]); Filesystem::mount($storage, [], '/'); @@ -1465,7 +1475,7 @@ class ViewTest extends \Test\TestCase { * Test that locks are on mount point paths and also mount root when requested */ public function testLockMountPointPathFailReleasesBoth(): void { - $lockingProvider = \OC::$server->get(ILockingProvider::class); + $lockingProvider = Server::get(ILockingProvider::class); $view = new View('/testuser/files/'); $storage = new Temporary([]); Filesystem::mount($storage, [], '/'); @@ -1608,7 +1618,7 @@ class ViewTest extends \Test\TestCase { ->getMock(); $storage->method('getId')->willReturn('non-null-id'); $storage->method('getStorageCache')->willReturnCallback(function () use ($storage) { - return new \OC\Files\Cache\Storage($storage, true, \OC::$server->get(IDBConnection::class)); + return new \OC\Files\Cache\Storage($storage, true, Server::get(IDBConnection::class)); }); $mounts[] = $this->getMockBuilder(TestMoveableMountPoint::class) @@ -1623,7 +1633,7 @@ class ViewTest extends \Test\TestCase { ->method('getMountsForUser') ->willReturn($mounts); - $mountProviderCollection = \OC::$server->getMountProviderCollection(); + $mountProviderCollection = Server::get(IMountProviderCollection::class); $mountProviderCollection->registerProvider($mountProvider); return $mounts; @@ -1720,16 +1730,16 @@ class ViewTest extends \Test\TestCase { $view->mkdir('shareddir notshared'); $fileId = $view->getFileInfo('shareddir')->getId(); - $userObject = \OC::$server->getUserManager()->createUser('test2', 'IHateNonMockableStaticClasses'); + $userObject = Server::get(IUserManager::class)->createUser('test2', 'IHateNonMockableStaticClasses'); $userFolder = \OC::$server->getUserFolder($this->user); $shareDir = $userFolder->get('shareddir'); - $shareManager = \OC::$server->get(IShareManager::class); + $shareManager = Server::get(IShareManager::class); $share = $shareManager->newShare(); $share->setSharedWith('test2') ->setSharedBy($this->user) ->setShareType(IShare::TYPE_USER) - ->setPermissions(\OCP\Constants::PERMISSION_READ) + ->setPermissions(Constants::PERMISSION_READ) ->setNode($shareDir); $shareManager->createShare($share); @@ -1947,6 +1957,8 @@ class ViewTest extends \Test\TestCase { /* Pause trash to avoid the trashbin intercepting rmdir and unlink calls */ Server::get(ITrashManager::class)->pauseTrash(); + /* Same thing with encryption wrapper */ + Server::get(IStorageFactory::class)->removeStorageWrapper('oc_encryption'); Filesystem::mount($storage, [], $this->user . '/'); @@ -2097,6 +2109,8 @@ class ViewTest extends \Test\TestCase { /* Pause trash to avoid the trashbin intercepting rmdir and unlink calls */ Server::get(ITrashManager::class)->pauseTrash(); + /* Same thing with encryption wrapper */ + Server::get(IStorageFactory::class)->removeStorageWrapper('oc_encryption'); Filesystem::mount($storage, [], $this->user . '/'); @@ -2110,7 +2124,7 @@ class ViewTest extends \Test\TestCase { $storage->expects($this->once()) ->method($operation) ->willReturnCallback( - function () { + function (): void { throw new \Exception('Simulated exception'); } ); @@ -2224,13 +2238,13 @@ class ViewTest extends \Test\TestCase { $storage->expects($this->any()) ->method('getMetaData') - ->will($this->returnValue([ + ->willReturn([ 'mtime' => 1885434487, 'etag' => '', 'mimetype' => 'text/plain', 'permissions' => Constants::PERMISSION_ALL, 'size' => 3 - ])); + ]); $storage->expects($this->any()) ->method('filemtime') ->willReturn(123456789); @@ -2238,6 +2252,9 @@ class ViewTest extends \Test\TestCase { $sourcePath = 'original.txt'; $targetPath = 'target.txt'; + /* Disable encryption wrapper to avoid it intercepting mocked call */ + Server::get(IStorageFactory::class)->removeStorageWrapper('oc_encryption'); + Filesystem::mount($storage, [], $this->user . '/'); $storage->mkdir('files'); $view->file_put_contents($sourcePath, 'meh'); @@ -2291,6 +2308,9 @@ class ViewTest extends \Test\TestCase { $sourcePath = 'original.txt'; $targetPath = 'target.txt'; + /* Disable encryption wrapper to avoid it intercepting mocked call */ + Server::get(IStorageFactory::class)->removeStorageWrapper('oc_encryption'); + Filesystem::mount($storage, [], $this->user . '/'); $storage->mkdir('files'); $view->file_put_contents($sourcePath, 'meh'); @@ -2298,7 +2318,7 @@ class ViewTest extends \Test\TestCase { $storage->expects($this->once()) ->method('copy') ->willReturnCallback( - function () { + function (): void { throw new \Exception(); } ); @@ -2413,13 +2433,13 @@ class ViewTest extends \Test\TestCase { $storage2->expects($this->any()) ->method('getMetaData') - ->will($this->returnValue([ + ->willReturn([ 'mtime' => 1885434487, 'etag' => '', 'mimetype' => 'text/plain', 'permissions' => Constants::PERMISSION_ALL, 'size' => 3 - ])); + ]); $storage2->expects($this->any()) ->method('filemtime') ->willReturn(123456789); @@ -2427,6 +2447,9 @@ class ViewTest extends \Test\TestCase { $sourcePath = 'original.txt'; $targetPath = 'substorage/target.txt'; + /* Disable encryption wrapper to avoid it intercepting mocked call */ + Server::get(IStorageFactory::class)->removeStorageWrapper('oc_encryption'); + Filesystem::mount($storage, [], $this->user . '/'); Filesystem::mount($storage2, [], $this->user . '/files/substorage'); $storage->mkdir('files'); @@ -2550,14 +2573,14 @@ class ViewTest extends \Test\TestCase { $eventHandler->expects($this->any()) ->method('preCallback') ->willReturnCallback( - function () use ($view, $path, $onMountPoint, &$lockTypePre) { + function () use ($view, $path, $onMountPoint, &$lockTypePre): void { $lockTypePre = $this->getFileLockType($view, $path, $onMountPoint); } ); $eventHandler->expects($this->any()) ->method('postCallback') ->willReturnCallback( - function () use ($view, $path, $onMountPoint, &$lockTypePost) { + function () use ($view, $path, $onMountPoint, &$lockTypePost): void { $lockTypePost = $this->getFileLockType($view, $path, $onMountPoint); } ); @@ -2778,7 +2801,7 @@ class ViewTest extends \Test\TestCase { $calls = ['/new/folder', '/new/folder/structure']; $view->expects($this->exactly(2)) ->method('mkdir') - ->willReturnCallback(function ($dir) use (&$calls) { + ->willReturnCallback(function ($dir) use (&$calls): void { $expected = array_shift($calls); $this->assertEquals($expected, $dir); }); diff --git a/tests/lib/FilesTest.php b/tests/lib/FilesTest.php new file mode 100644 index 00000000000..2ba6ce2666b --- /dev/null +++ b/tests/lib/FilesTest.php @@ -0,0 +1,42 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace Test; + +use OCP\Files; +use OCP\ITempManager; +use OCP\Server; + +class FilesTest extends TestCase { + + /** + * Tests recursive folder deletion with rmdirr() + */ + public function testRecursiveFolderDeletion(): void { + $baseDir = Server::get(ITempManager::class)->getTemporaryFolder() . '/'; + mkdir($baseDir . 'a/b/c/d/e', 0777, true); + mkdir($baseDir . 'a/b/c1/d/e', 0777, true); + mkdir($baseDir . 'a/b/c2/d/e', 0777, true); + mkdir($baseDir . 'a/b1/c1/d/e', 0777, true); + mkdir($baseDir . 'a/b2/c1/d/e', 0777, true); + mkdir($baseDir . 'a/b3/c1/d/e', 0777, true); + mkdir($baseDir . 'a1/b', 0777, true); + mkdir($baseDir . 'a1/c', 0777, true); + file_put_contents($baseDir . 'a/test.txt', 'Hello file!'); + file_put_contents($baseDir . 'a/b1/c1/test one.txt', 'Hello file one!'); + file_put_contents($baseDir . 'a1/b/test two.txt', 'Hello file two!'); + Files::rmdirr($baseDir . 'a'); + + $this->assertFalse(file_exists($baseDir . 'a')); + $this->assertTrue(file_exists($baseDir . 'a1')); + + Files::rmdirr($baseDir); + $this->assertFalse(file_exists($baseDir)); + } +} diff --git a/tests/lib/GlobalScale/ConfigTest.php b/tests/lib/GlobalScale/ConfigTest.php index aa001268ecd..b6c77c9ddf1 100644 --- a/tests/lib/GlobalScale/ConfigTest.php +++ b/tests/lib/GlobalScale/ConfigTest.php @@ -28,7 +28,7 @@ class ConfigTest extends TestCase { if (!empty($mockMethods)) { return $this->getMockBuilder(Config::class) ->setConstructorArgs([$this->config]) - ->setMethods($mockMethods) + ->onlyMethods($mockMethods) ->getMock(); } @@ -64,7 +64,7 @@ class ConfigTest extends TestCase { $this->assertSame($expected, $gsConfig->onlyInternalFederation()); } - public function dataTestOnlyInternalFederation() { + public static function dataTestOnlyInternalFederation(): array { return [ [true, 'global', false], [true, 'internal', true], diff --git a/tests/lib/Group/DatabaseTest.php b/tests/lib/Group/DatabaseTest.php index 593fbe60bf9..d748890b4de 100644 --- a/tests/lib/Group/DatabaseTest.php +++ b/tests/lib/Group/DatabaseTest.php @@ -7,6 +7,8 @@ namespace Test\Group; +use OC\Group\Database; + /** * Class Database * @@ -27,7 +29,7 @@ class DatabaseTest extends Backend { protected function setUp(): void { parent::setUp(); - $this->backend = new \OC\Group\Database(); + $this->backend = new Database(); } protected function tearDown(): void { @@ -42,7 +44,7 @@ class DatabaseTest extends Backend { $this->backend->createGroup($group); - $backend = new \OC\Group\Database(); + $backend = new Database(); $this->assertNull($backend->createGroup($group)); } diff --git a/tests/lib/Group/GroupTest.php b/tests/lib/Group/GroupTest.php index 0730f827c64..baae814675c 100644 --- a/tests/lib/Group/GroupTest.php +++ b/tests/lib/Group/GroupTest.php @@ -8,6 +8,7 @@ namespace Test\Group; +use OC\Group\Group; use OC\User\User; use OCP\EventDispatcher\IEventDispatcher; use OCP\IUser; @@ -65,7 +66,7 @@ class GroupTest extends \Test\TestCase { ->disableOriginalConstructor() ->getMock(); $userManager = $this->getUserManager(); - $group = new \OC\Group\Group('group1', [$backend], $this->dispatcher, $userManager); + $group = new Group('group1', [$backend], $this->dispatcher, $userManager); $backend->expects($this->once()) ->method('usersInGroup') @@ -89,7 +90,7 @@ class GroupTest extends \Test\TestCase { ->disableOriginalConstructor() ->getMock(); $userManager = $this->getUserManager(); - $group = new \OC\Group\Group('group1', [$backend1, $backend2], $this->dispatcher, $userManager); + $group = new Group('group1', [$backend1, $backend2], $this->dispatcher, $userManager); $backend1->expects($this->once()) ->method('usersInGroup') @@ -120,7 +121,7 @@ class GroupTest extends \Test\TestCase { $userBackend = $this->getMockBuilder('\OC\User\Backend') ->disableOriginalConstructor() ->getMock(); - $group = new \OC\Group\Group('group1', [$backend], $this->dispatcher, $userManager); + $group = new Group('group1', [$backend], $this->dispatcher, $userManager); $backend->expects($this->once()) ->method('inGroup') @@ -141,7 +142,7 @@ class GroupTest extends \Test\TestCase { $userBackend = $this->getMockBuilder(\OC\User\Backend::class) ->disableOriginalConstructor() ->getMock(); - $group = new \OC\Group\Group('group1', [$backend1, $backend2], $this->dispatcher, $userManager); + $group = new Group('group1', [$backend1, $backend2], $this->dispatcher, $userManager); $backend1->expects($this->once()) ->method('inGroup') @@ -164,7 +165,7 @@ class GroupTest extends \Test\TestCase { $userBackend = $this->getMockBuilder('\OC\User\Backend') ->disableOriginalConstructor() ->getMock(); - $group = new \OC\Group\Group('group1', [$backend], $this->dispatcher, $userManager); + $group = new Group('group1', [$backend], $this->dispatcher, $userManager); $backend->expects($this->once()) ->method('inGroup') @@ -189,7 +190,7 @@ class GroupTest extends \Test\TestCase { $userBackend = $this->getMockBuilder('\OC\User\Backend') ->disableOriginalConstructor() ->getMock(); - $group = new \OC\Group\Group('group1', [$backend], $this->dispatcher, $userManager); + $group = new Group('group1', [$backend], $this->dispatcher, $userManager); $backend->expects($this->once()) ->method('inGroup') @@ -213,7 +214,7 @@ class GroupTest extends \Test\TestCase { $userBackend = $this->getMockBuilder('\OC\User\Backend') ->disableOriginalConstructor() ->getMock(); - $group = new \OC\Group\Group('group1', [$backend], $this->dispatcher, $userManager); + $group = new Group('group1', [$backend], $this->dispatcher, $userManager); $backend->expects($this->once()) ->method('inGroup') @@ -238,7 +239,7 @@ class GroupTest extends \Test\TestCase { $userBackend = $this->getMockBuilder(\OC\User\Backend::class) ->disableOriginalConstructor() ->getMock(); - $group = new \OC\Group\Group('group1', [$backend], $this->dispatcher, $userManager); + $group = new Group('group1', [$backend], $this->dispatcher, $userManager); $backend->expects($this->once()) ->method('inGroup') @@ -265,7 +266,7 @@ class GroupTest extends \Test\TestCase { $userBackend = $this->getMockBuilder('\OC\User\Backend') ->disableOriginalConstructor() ->getMock(); - $group = new \OC\Group\Group('group1', [$backend1, $backend2], $this->dispatcher, $userManager); + $group = new Group('group1', [$backend1, $backend2], $this->dispatcher, $userManager); $backend1->expects($this->once()) ->method('inGroup') @@ -299,12 +300,12 @@ class GroupTest extends \Test\TestCase { ->disableOriginalConstructor() ->getMock(); $userManager = $this->getUserManager(); - $group = new \OC\Group\Group('group1', [$backend], $this->dispatcher, $userManager); + $group = new Group('group1', [$backend], $this->dispatcher, $userManager); $backend->expects($this->once()) ->method('searchInGroup') ->with('group1', '2') - ->willReturn(['user2' => new \OC\User\User('user2', null, $this->dispatcher)]); + ->willReturn(['user2' => new User('user2', null, $this->dispatcher)]); $users = $group->searchUsers('2'); @@ -321,16 +322,16 @@ class GroupTest extends \Test\TestCase { ->disableOriginalConstructor() ->getMock(); $userManager = $this->getUserManager(); - $group = new \OC\Group\Group('group1', [$backend1, $backend2], $this->dispatcher, $userManager); + $group = new Group('group1', [$backend1, $backend2], $this->dispatcher, $userManager); $backend1->expects($this->once()) ->method('searchInGroup') ->with('group1', '2') - ->willReturn(['user2' => new \OC\User\User('user2', null, $this->dispatcher)]); + ->willReturn(['user2' => new User('user2', null, $this->dispatcher)]); $backend2->expects($this->once()) ->method('searchInGroup') ->with('group1', '2') - ->willReturn(['user2' => new \OC\User\User('user2', null, $this->dispatcher)]); + ->willReturn(['user2' => new User('user2', null, $this->dispatcher)]); $users = $group->searchUsers('2'); @@ -344,12 +345,12 @@ class GroupTest extends \Test\TestCase { ->disableOriginalConstructor() ->getMock(); $userManager = $this->getUserManager(); - $group = new \OC\Group\Group('group1', [$backend], $this->dispatcher, $userManager); + $group = new Group('group1', [$backend], $this->dispatcher, $userManager); $backend->expects($this->once()) ->method('searchInGroup') ->with('group1', 'user', 1, 1) - ->willReturn(['user2' => new \OC\User\User('user2', null, $this->dispatcher)]); + ->willReturn(['user2' => new User('user2', null, $this->dispatcher)]); $users = $group->searchUsers('user', 1, 1); @@ -366,16 +367,16 @@ class GroupTest extends \Test\TestCase { ->disableOriginalConstructor() ->getMock(); $userManager = $this->getUserManager(); - $group = new \OC\Group\Group('group1', [$backend1, $backend2], $this->dispatcher, $userManager); + $group = new Group('group1', [$backend1, $backend2], $this->dispatcher, $userManager); $backend1->expects($this->once()) ->method('searchInGroup') ->with('group1', 'user', 2, 1) - ->willReturn(['user2' => new \OC\User\User('user2', null, $this->dispatcher)]); + ->willReturn(['user2' => new User('user2', null, $this->dispatcher)]); $backend2->expects($this->once()) ->method('searchInGroup') ->with('group1', 'user', 2, 1) - ->willReturn(['user1' => new \OC\User\User('user1', null, $this->dispatcher)]); + ->willReturn(['user1' => new User('user1', null, $this->dispatcher)]); $users = $group->searchUsers('user', 2, 1); @@ -391,7 +392,7 @@ class GroupTest extends \Test\TestCase { ->disableOriginalConstructor() ->getMock(); $userManager = $this->getUserManager(); - $group = new \OC\Group\Group('group1', [$backend1], $this->dispatcher, $userManager); + $group = new Group('group1', [$backend1], $this->dispatcher, $userManager); $backend1->expects($this->once()) ->method('countUsersInGroup') @@ -415,7 +416,7 @@ class GroupTest extends \Test\TestCase { ->disableOriginalConstructor() ->getMock(); $userManager = $this->getUserManager(); - $group = new \OC\Group\Group('group1', [$backend1, $backend2], $this->dispatcher, $userManager); + $group = new Group('group1', [$backend1, $backend2], $this->dispatcher, $userManager); $backend1->expects($this->once()) ->method('countUsersInGroup') @@ -443,7 +444,7 @@ class GroupTest extends \Test\TestCase { ->disableOriginalConstructor() ->getMock(); $userManager = $this->getUserManager(); - $group = new \OC\Group\Group('group1', [$backend1], $this->dispatcher, $userManager); + $group = new Group('group1', [$backend1], $this->dispatcher, $userManager); $backend1->expects($this->never()) ->method('countUsersInGroup'); @@ -461,7 +462,7 @@ class GroupTest extends \Test\TestCase { ->disableOriginalConstructor() ->getMock(); $userManager = $this->getUserManager(); - $group = new \OC\Group\Group('group1', [$backend], $this->dispatcher, $userManager); + $group = new Group('group1', [$backend], $this->dispatcher, $userManager); $backend->expects($this->once()) ->method('deleteGroup') diff --git a/tests/lib/Group/HideFromCollaborationTest.php b/tests/lib/Group/HideFromCollaborationTest.php new file mode 100644 index 00000000000..5ff7c797508 --- /dev/null +++ b/tests/lib/Group/HideFromCollaborationTest.php @@ -0,0 +1,53 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace Test\Group; + +use OC\Group\Group; +use OCP\EventDispatcher\IEventDispatcher; +use OCP\Group\Backend\ABackend; +use OCP\Group\Backend\IHideFromCollaborationBackend; +use OCP\IUserManager; +use PHPUnit\Framework\MockObject\MockObject; +use Test\TestCase; + +abstract class HideFromCollaborationBackendTest extends ABackend implements IHideFromCollaborationBackend { + +} + +class HideFromCollaborationTest extends TestCase { + + private IUserManager&MockObject $userManager; + private IEventDispatcher&MockObject $dispatcher; + + protected function setUp(): void { + parent::setUp(); + + $this->userManager = $this->createMock(IUserManager::class); + $this->dispatcher = $this->createMock(IEventDispatcher::class); + } + + + public function testHideFromCollaboration(): void { + // Arrange + $backend1 = $this->createMock(HideFromCollaborationBackendTest::class); + $backend1->method('hideGroup') + ->willReturn(false); + $backend2 = $this->createMock(HideFromCollaborationBackendTest::class); + $backend2->method('hideGroup') + ->willReturn(true); + $group = new Group('group1', [$backend1, $backend2], $this->dispatcher, $this->userManager); + + // Act + $result = $group->hideFromCollaboration(); + + // Assert + $this->assertTrue($result); + } +} diff --git a/tests/lib/Group/ManagerTest.php b/tests/lib/Group/ManagerTest.php index 0f8d7a5ecc3..e52e0733501 100644 --- a/tests/lib/Group/ManagerTest.php +++ b/tests/lib/Group/ManagerTest.php @@ -12,6 +12,11 @@ use OC\Group\Database; use OC\User\Manager; use OC\User\User; use OCP\EventDispatcher\IEventDispatcher; +use OCP\Group\Backend\ABackend; +use OCP\Group\Backend\IAddToGroupBackend; +use OCP\Group\Backend\ICreateGroupBackend; +use OCP\Group\Backend\IGroupDetailsBackend; +use OCP\Group\Backend\IRemoveFromGroupBackend; use OCP\Group\Backend\ISearchableGroupBackend; use OCP\GroupInterface; use OCP\ICacheFactory; @@ -21,7 +26,8 @@ use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; use Test\TestCase; -interface ISearchableGroupInterface extends ISearchableGroupBackend, GroupInterface { +abstract class TestBackend extends ABackend implements ISearchableGroupBackend, IAddToGroupBackend, ICreateGroupBackend, IGroupDetailsBackend, IRemoveFromGroupBackend, GroupInterface { + } class ManagerTest extends TestCase { @@ -74,9 +80,9 @@ class ManagerTest extends TestCase { } // need to declare it this way due to optional methods // thanks to the implementsActions logic - $backend = $this->getMockBuilder(ISearchableGroupInterface::class) + $backend = $this->getMockBuilder(TestBackend::class) ->disableOriginalConstructor() - ->setMethods([ + ->onlyMethods([ 'getGroupDetails', 'implementsActions', 'getUserGroups', @@ -283,9 +289,10 @@ class ManagerTest extends TestCase { ->with('1') ->willReturn(['group1']); $backend->expects($this->once()) - ->method('groupExists') - ->with('group1') - ->willReturn(true); + ->method('getGroupDetails') + ->willReturnMap([ + ['group1', ['displayName' => 'group1']], + ]); $manager = new \OC\Group\Manager($this->userManager, $this->dispatcher, $this->logger, $this->cache, $this->remoteIpAddress); $manager->addBackend($backend); @@ -306,8 +313,11 @@ class ManagerTest extends TestCase { ->with('1') ->willReturn(['group1']); $backend1->expects($this->any()) - ->method('groupExists') - ->willReturn(true); + ->method('getGroupDetails') + ->willReturnMap([ + ['group1', ['displayName' => 'group1']], + ['group12', []], + ]); /** * @var \PHPUnit\Framework\MockObject\MockObject | \OC\Group\Backend $backend2 @@ -318,8 +328,11 @@ class ManagerTest extends TestCase { ->with('1') ->willReturn(['group12', 'group1']); $backend2->expects($this->any()) - ->method('groupExists') - ->willReturn(true); + ->method('getGroupDetails') + ->willReturnMap([ + ['group12', ['displayName' => 'group12']], + ['group1', ['displayName' => 'group1']], + ]); $manager = new \OC\Group\Manager($this->userManager, $this->dispatcher, $this->logger, $this->cache, $this->remoteIpAddress); $manager->addBackend($backend1); @@ -335,7 +348,7 @@ class ManagerTest extends TestCase { public function testSearchMultipleBackendsLimitAndOffset(): void { /** - * @var \PHPUnit\Framework\MockObject\MockObject | \OC\Group\Backend $backend1 + * @var \PHPUnit\Framework\MockObject\MockObject|\OC\Group\Backend $backend1 */ $backend1 = $this->getTestBackend(); $backend1->expects($this->once()) @@ -343,11 +356,16 @@ class ManagerTest extends TestCase { ->with('1', 2, 1) ->willReturn(['group1']); $backend1->expects($this->any()) - ->method('groupExists') - ->willReturn(true); + ->method('getGroupDetails') + ->willReturnMap([ + [1, []], + [2, []], + ['group1', ['displayName' => 'group1']], + ['group12', []], + ]); /** - * @var \PHPUnit\Framework\MockObject\MockObject | \OC\Group\Backend $backend2 + * @var \PHPUnit\Framework\MockObject\MockObject|\OC\Group\Backend $backend2 */ $backend2 = $this->getTestBackend(); $backend2->expects($this->once()) @@ -355,8 +373,13 @@ class ManagerTest extends TestCase { ->with('1', 2, 1) ->willReturn(['group12']); $backend2->expects($this->any()) - ->method('groupExists') - ->willReturn(true); + ->method('getGroupDetails') + ->willReturnMap([ + [1, []], + [2, []], + ['group1', []], + ['group12', ['displayName' => 'group12']], + ]); $manager = new \OC\Group\Manager($this->userManager, $this->dispatcher, $this->logger, $this->cache, $this->remoteIpAddress); $manager->addBackend($backend1); diff --git a/tests/lib/Group/MetaDataTest.php b/tests/lib/Group/MetaDataTest.php index 70f2022ae78..1b58432fd88 100644 --- a/tests/lib/Group/MetaDataTest.php +++ b/tests/lib/Group/MetaDataTest.php @@ -7,12 +7,13 @@ namespace Test\Group; +use OC\Group\MetaData; use OCP\IUserSession; class MetaDataTest extends \Test\TestCase { private \OC\Group\Manager $groupManager; private IUserSession $userSession; - private \OC\Group\MetaData $groupMetadata; + private MetaData $groupMetadata; private bool $isAdmin = true; private bool $isDelegatedAdmin = true; @@ -22,7 +23,7 @@ class MetaDataTest extends \Test\TestCase { ->disableOriginalConstructor() ->getMock(); $this->userSession = $this->createMock(IUserSession::class); - $this->groupMetadata = new \OC\Group\MetaData( + $this->groupMetadata = new MetaData( 'foo', $this->isAdmin, $this->isDelegatedAdmin, @@ -37,23 +38,14 @@ class MetaDataTest extends \Test\TestCase { ->getMock(); $group->expects($this->exactly(6)) - ->method('getGID') - ->will($this->onConsecutiveCalls( - 'admin', 'admin', - 'g2', 'g2', - 'g3', 'g3')); + ->method('getGID')->willReturnOnConsecutiveCalls('admin', 'admin', 'g2', 'g2', 'g3', 'g3'); $group->expects($this->exactly(3)) - ->method('getDisplayName') - ->will($this->onConsecutiveCalls( - 'admin', - 'g2', - 'g3')); + ->method('getDisplayName')->willReturnOnConsecutiveCalls('admin', 'g2', 'g3'); $group->expects($this->exactly($countCallCount)) ->method('count') - ->with('') - ->will($this->onConsecutiveCalls(2, 3, 5)); + ->with('')->willReturnOnConsecutiveCalls(2, 3, 5); return $group; } diff --git a/tests/lib/HelperStorageTest.php b/tests/lib/HelperStorageTest.php index 455bd288351..b3474a25b9b 100644 --- a/tests/lib/HelperStorageTest.php +++ b/tests/lib/HelperStorageTest.php @@ -7,9 +7,12 @@ namespace Test; +use OC\Files\Filesystem; use OC\Files\Storage\Temporary; +use OC\Files\Storage\Wrapper\Quota; use OCP\Files\Mount\IMountManager; use OCP\IConfig; +use OCP\Server; use Test\Traits\UserTrait; /** @@ -35,12 +38,12 @@ class HelperStorageTest extends \Test\TestCase { $this->createUser($this->user, $this->user); $this->savedQuotaIncludeExternalStorage = $this->getIncludeExternalStorage(); - \OC\Files\Filesystem::tearDown(); + Filesystem::tearDown(); \OC_User::setUserId($this->user); - \OC\Files\Filesystem::init($this->user, '/' . $this->user . '/files'); + Filesystem::init($this->user, '/' . $this->user . '/files'); /** @var IMountManager $manager */ - $manager = \OC::$server->get(IMountManager::class); + $manager = Server::get(IMountManager::class); $manager->removeMount('/' . $this->user); $this->storageMock = null; @@ -54,10 +57,10 @@ class HelperStorageTest extends \Test\TestCase { $this->storageMock->getCache()->clear(); $this->storageMock = null; } - \OC\Files\Filesystem::tearDown(); + Filesystem::tearDown(); \OC_User::setUserId(''); - \OC::$server->getConfig()->deleteAllUserValues($this->user); + Server::get(IConfig::class)->deleteAllUserValues($this->user); parent::tearDown(); } @@ -71,13 +74,13 @@ class HelperStorageTest extends \Test\TestCase { */ private function getStorageMock($freeSpace = 12) { $this->storageMock = $this->getMockBuilder(Temporary::class) - ->setMethods(['free_space']) + ->onlyMethods(['free_space']) ->setConstructorArgs([[]]) ->getMock(); $this->storageMock->expects($this->once()) ->method('free_space') - ->willReturn(12); + ->willReturn($freeSpace); return $this->storageMock; } @@ -86,7 +89,7 @@ class HelperStorageTest extends \Test\TestCase { */ public function testGetStorageInfo(): void { $homeStorage = $this->getStorageMock(12); - \OC\Files\Filesystem::mount($homeStorage, [], '/' . $this->user . '/files'); + Filesystem::mount($homeStorage, [], '/' . $this->user . '/files'); $homeStorage->file_put_contents('test.txt', '01234'); $storageInfo = \OC_Helper::getStorageInfo(''); @@ -94,6 +97,7 @@ class HelperStorageTest extends \Test\TestCase { $this->assertEquals(5, $storageInfo['used']); $this->assertEquals(17, $storageInfo['total']); } + private function getIncludeExternalStorage(): bool { $class = new \ReflectionClass(\OC_Helper::class); $prop = $class->getProperty('quotaIncludeExternalStorage'); @@ -113,16 +117,16 @@ class HelperStorageTest extends \Test\TestCase { */ public function testGetStorageInfoExcludingExtStorage(): void { $homeStorage = $this->getStorageMock(12); - \OC\Files\Filesystem::mount($homeStorage, [], '/' . $this->user . '/files'); + Filesystem::mount($homeStorage, [], '/' . $this->user . '/files'); $homeStorage->file_put_contents('test.txt', '01234'); - $extStorage = new \OC\Files\Storage\Temporary([]); + $extStorage = new Temporary([]); $extStorage->file_put_contents('extfile.txt', 'abcdefghijklmnopq'); $extStorage->getScanner()->scan(''); // update root size $this->setIncludeExternalStorage(false); - \OC\Files\Filesystem::mount($extStorage, [], '/' . $this->user . '/files/ext'); + Filesystem::mount($extStorage, [], '/' . $this->user . '/files/ext'); $storageInfo = \OC_Helper::getStorageInfo(''); $this->assertEquals(12, $storageInfo['free']); @@ -134,19 +138,19 @@ class HelperStorageTest extends \Test\TestCase { * Test getting the storage info, including extra mount points */ public function testGetStorageInfoIncludingExtStorage(): void { - $homeStorage = new \OC\Files\Storage\Temporary([]); - \OC\Files\Filesystem::mount($homeStorage, [], '/' . $this->user . '/files'); + $homeStorage = new Temporary([]); + Filesystem::mount($homeStorage, [], '/' . $this->user . '/files'); $homeStorage->file_put_contents('test.txt', '01234'); - $extStorage = new \OC\Files\Storage\Temporary([]); + $extStorage = new Temporary([]); $extStorage->file_put_contents('extfile.txt', 'abcdefghijklmnopq'); $extStorage->getScanner()->scan(''); // update root size - \OC\Files\Filesystem::mount($extStorage, [], '/' . $this->user . '/files/ext'); + Filesystem::mount($extStorage, [], '/' . $this->user . '/files/ext'); $this->setIncludeExternalStorage(true); - $config = \OC::$server->get(IConfig::class); + $config = Server::get(IConfig::class); $config->setUserValue($this->user, 'files', 'quota', '25'); $storageInfo = \OC_Helper::getStorageInfo(''); @@ -164,16 +168,16 @@ class HelperStorageTest extends \Test\TestCase { */ public function testGetStorageInfoIncludingExtStorageWithNoUserQuota(): void { $homeStorage = $this->getStorageMock(12); - \OC\Files\Filesystem::mount($homeStorage, [], '/' . $this->user . '/files'); + Filesystem::mount($homeStorage, [], '/' . $this->user . '/files'); $homeStorage->file_put_contents('test.txt', '01234'); - $extStorage = new \OC\Files\Storage\Temporary([]); + $extStorage = new Temporary([]); $extStorage->file_put_contents('extfile.txt', 'abcdefghijklmnopq'); $extStorage->getScanner()->scan(''); // update root size - \OC\Files\Filesystem::mount($extStorage, [], '/' . $this->user . '/files/ext'); + Filesystem::mount($extStorage, [], '/' . $this->user . '/files/ext'); - $config = \OC::$server->getConfig(); + $config = Server::get(IConfig::class); $this->setIncludeExternalStorage(true); $storageInfo = \OC_Helper::getStorageInfo(''); @@ -189,13 +193,13 @@ class HelperStorageTest extends \Test\TestCase { public function testGetStorageInfoWithQuota(): void { $homeStorage = $this->getStorageMock(12); $homeStorage->file_put_contents('test.txt', '01234'); - $homeStorage = new \OC\Files\Storage\Wrapper\Quota( + $homeStorage = new Quota( [ 'storage' => $homeStorage, 'quota' => 7 ] ); - \OC\Files\Filesystem::mount($homeStorage, [], '/' . $this->user . '/files'); + Filesystem::mount($homeStorage, [], '/' . $this->user . '/files'); $storageInfo = \OC_Helper::getStorageInfo(''); $this->assertEquals(2, $storageInfo['free']); @@ -209,13 +213,13 @@ class HelperStorageTest extends \Test\TestCase { public function testGetStorageInfoWhenSizeExceedsQuota(): void { $homeStorage = $this->getStorageMock(12); $homeStorage->file_put_contents('test.txt', '0123456789'); - $homeStorage = new \OC\Files\Storage\Wrapper\Quota( + $homeStorage = new Quota( [ 'storage' => $homeStorage, 'quota' => 7 ] ); - \OC\Files\Filesystem::mount($homeStorage, [], '/' . $this->user . '/files'); + Filesystem::mount($homeStorage, [], '/' . $this->user . '/files'); $storageInfo = \OC_Helper::getStorageInfo(''); $this->assertEquals(0, $storageInfo['free']); @@ -231,13 +235,13 @@ class HelperStorageTest extends \Test\TestCase { public function testGetStorageInfoWhenFreeSpaceLessThanQuota(): void { $homeStorage = $this->getStorageMock(12); $homeStorage->file_put_contents('test.txt', '01234'); - $homeStorage = new \OC\Files\Storage\Wrapper\Quota( + $homeStorage = new Quota( [ 'storage' => $homeStorage, 'quota' => 18 ] ); - \OC\Files\Filesystem::mount($homeStorage, [], '/' . $this->user . '/files'); + Filesystem::mount($homeStorage, [], '/' . $this->user . '/files'); $storageInfo = \OC_Helper::getStorageInfo(''); $this->assertEquals(12, $storageInfo['free']); diff --git a/tests/lib/HookHelper.php b/tests/lib/HookHelper.php index 8b7d17a6766..ce3cb073047 100644 --- a/tests/lib/HookHelper.php +++ b/tests/lib/HookHelper.php @@ -8,6 +8,7 @@ namespace Test; use OC\Files\Filesystem; +use OCP\Util; /** * Helper class to register hooks on @@ -17,38 +18,38 @@ class HookHelper { public static function setUpHooks() { self::clear(); - \OCP\Util::connectHook( + Util::connectHook( Filesystem::CLASSNAME, Filesystem::signal_create, '\Test\HookHelper', 'createCallback' ); - \OCP\Util::connectHook( + Util::connectHook( Filesystem::CLASSNAME, Filesystem::signal_update, '\Test\HookHelper', 'updateCallback' ); - \OCP\Util::connectHook( + Util::connectHook( Filesystem::CLASSNAME, Filesystem::signal_write, '\Test\HookHelper', 'writeCallback' ); - \OCP\Util::connectHook( + Util::connectHook( Filesystem::CLASSNAME, Filesystem::signal_post_create, '\Test\HookHelper', 'postCreateCallback' ); - \OCP\Util::connectHook( + Util::connectHook( Filesystem::CLASSNAME, Filesystem::signal_post_update, '\Test\HookHelper', 'postUpdateCallback' ); - \OCP\Util::connectHook( + Util::connectHook( Filesystem::CLASSNAME, Filesystem::signal_post_write, '\Test\HookHelper', diff --git a/tests/lib/Hooks/BasicEmitterTest.php b/tests/lib/Hooks/BasicEmitterTest.php index 98f746d38ae..49845eb2fa9 100644 --- a/tests/lib/Hooks/BasicEmitterTest.php +++ b/tests/lib/Hooks/BasicEmitterTest.php @@ -7,6 +7,8 @@ namespace Test\Hooks; +use OC\Hooks\BasicEmitter; + /** * Class DummyEmitter * @@ -14,7 +16,7 @@ namespace Test\Hooks; * * @package Test\Hooks */ -class DummyEmitter extends \OC\Hooks\BasicEmitter { +class DummyEmitter extends BasicEmitter { public function emitEvent($scope, $method, $arguments = []) { $this->emit($scope, $method, $arguments); } @@ -49,17 +51,17 @@ class BasicEmitterTest extends \Test\TestCase { throw new EmittedException; } - + public function testAnonymousFunction(): void { $this->expectException(\Test\Hooks\EmittedException::class); - $this->emitter->listen('Test', 'test', function () { + $this->emitter->listen('Test', 'test', function (): void { throw new EmittedException; }); $this->emitter->emitEvent('Test', 'test'); } - + public function testStaticCallback(): void { $this->expectException(\Test\Hooks\EmittedException::class); @@ -67,7 +69,7 @@ class BasicEmitterTest extends \Test\TestCase { $this->emitter->emitEvent('Test', 'test'); } - + public function testNonStaticCallback(): void { $this->expectException(\Test\Hooks\EmittedException::class); @@ -77,7 +79,7 @@ class BasicEmitterTest extends \Test\TestCase { public function testOnlyCallOnce(): void { $count = 0; - $listener = function () use (&$count) { + $listener = function () use (&$count): void { $count++; }; $this->emitter->listen('Test', 'test', $listener); @@ -88,7 +90,7 @@ class BasicEmitterTest extends \Test\TestCase { public function testDifferentMethods(): void { $count = 0; - $listener = function () use (&$count) { + $listener = function () use (&$count): void { $count++; }; $this->emitter->listen('Test', 'test', $listener); @@ -100,7 +102,7 @@ class BasicEmitterTest extends \Test\TestCase { public function testDifferentScopes(): void { $count = 0; - $listener = function () use (&$count) { + $listener = function () use (&$count): void { $count++; }; $this->emitter->listen('Test', 'test', $listener); @@ -112,10 +114,10 @@ class BasicEmitterTest extends \Test\TestCase { public function testDifferentCallbacks(): void { $count = 0; - $listener1 = function () use (&$count) { + $listener1 = function () use (&$count): void { $count++; }; - $listener2 = function () use (&$count) { + $listener2 = function () use (&$count): void { $count++; }; $this->emitter->listen('Test', 'test', $listener1); @@ -124,11 +126,11 @@ class BasicEmitterTest extends \Test\TestCase { $this->assertEquals(2, $count, 'Listener called an invalid number of times (' . $count . ') expected 2'); } - + public function testArguments(): void { $this->expectException(\Test\Hooks\EmittedException::class); - $this->emitter->listen('Test', 'test', function ($foo, $bar) { + $this->emitter->listen('Test', 'test', function ($foo, $bar): void { if ($foo == 'foo' and $bar == 'bar') { throw new EmittedException; } @@ -136,11 +138,11 @@ class BasicEmitterTest extends \Test\TestCase { $this->emitter->emitEvent('Test', 'test', ['foo', 'bar']); } - + public function testNamedArguments(): void { $this->expectException(\Test\Hooks\EmittedException::class); - $this->emitter->listen('Test', 'test', function ($foo, $bar) { + $this->emitter->listen('Test', 'test', function ($foo, $bar): void { if ($foo == 'foo' and $bar == 'bar') { throw new EmittedException; } @@ -149,7 +151,7 @@ class BasicEmitterTest extends \Test\TestCase { } public function testRemoveAllSpecified(): void { - $listener = function () { + $listener = function (): void { throw new EmittedException; }; $this->emitter->listen('Test', 'test', $listener); @@ -160,10 +162,10 @@ class BasicEmitterTest extends \Test\TestCase { } public function testRemoveWildcardListener(): void { - $listener1 = function () { + $listener1 = function (): void { throw new EmittedException; }; - $listener2 = function () { + $listener2 = function (): void { throw new EmittedException; }; $this->emitter->listen('Test', 'test', $listener1); @@ -175,7 +177,7 @@ class BasicEmitterTest extends \Test\TestCase { } public function testRemoveWildcardMethod(): void { - $listener = function () { + $listener = function (): void { throw new EmittedException; }; $this->emitter->listen('Test', 'test', $listener); @@ -188,7 +190,7 @@ class BasicEmitterTest extends \Test\TestCase { } public function testRemoveWildcardScope(): void { - $listener = function () { + $listener = function (): void { throw new EmittedException; }; $this->emitter->listen('Test', 'test', $listener); @@ -201,7 +203,7 @@ class BasicEmitterTest extends \Test\TestCase { } public function testRemoveWildcardScopeAndMethod(): void { - $listener = function () { + $listener = function (): void { throw new EmittedException; }; $this->emitter->listen('Test', 'test', $listener); @@ -215,14 +217,14 @@ class BasicEmitterTest extends \Test\TestCase { $this->addToAssertionCount(1); } - + public function testRemoveKeepOtherCallback(): void { $this->expectException(\Test\Hooks\EmittedException::class); - $listener1 = function () { + $listener1 = function (): void { throw new EmittedException; }; - $listener2 = function () { + $listener2 = function (): void { throw new EmittedException; }; $this->emitter->listen('Test', 'test', $listener1); @@ -233,11 +235,11 @@ class BasicEmitterTest extends \Test\TestCase { $this->addToAssertionCount(1); } - + public function testRemoveKeepOtherMethod(): void { $this->expectException(\Test\Hooks\EmittedException::class); - $listener = function () { + $listener = function (): void { throw new EmittedException; }; $this->emitter->listen('Test', 'test', $listener); @@ -248,11 +250,11 @@ class BasicEmitterTest extends \Test\TestCase { $this->addToAssertionCount(1); } - + public function testRemoveKeepOtherScope(): void { $this->expectException(\Test\Hooks\EmittedException::class); - $listener = function () { + $listener = function (): void { throw new EmittedException; }; $this->emitter->listen('Test', 'test', $listener); @@ -263,11 +265,11 @@ class BasicEmitterTest extends \Test\TestCase { $this->addToAssertionCount(1); } - + public function testRemoveNonExistingName(): void { $this->expectException(\Test\Hooks\EmittedException::class); - $listener = function () { + $listener = function (): void { throw new EmittedException; }; $this->emitter->listen('Test', 'test', $listener); diff --git a/tests/lib/Http/Client/ClientServiceTest.php b/tests/lib/Http/Client/ClientServiceTest.php index 7c9cd55a6cc..fd5b155ca69 100644 --- a/tests/lib/Http/Client/ClientServiceTest.php +++ b/tests/lib/Http/Client/ClientServiceTest.php @@ -40,7 +40,7 @@ class ClientServiceTest extends \Test\TestCase { $dnsPinMiddleware ->expects($this->atLeastOnce()) ->method('addDnsPinning') - ->willReturn(function () { + ->willReturn(function (): void { }); $remoteHostValidator = $this->createMock(IRemoteHostValidator::class); $eventLogger = $this->createMock(IEventLogger::class); @@ -58,9 +58,9 @@ class ClientServiceTest extends \Test\TestCase { $handler = new CurlHandler(); $stack = HandlerStack::create($handler); $stack->push($dnsPinMiddleware->addDnsPinning()); - $stack->push(Middleware::tap(function (RequestInterface $request) use ($eventLogger) { + $stack->push(Middleware::tap(function (RequestInterface $request) use ($eventLogger): void { $eventLogger->start('http:request', $request->getMethod() . ' request to ' . $request->getRequestTarget()); - }, function () use ($eventLogger) { + }, function () use ($eventLogger): void { $eventLogger->end('http:request'); }), 'event logger'); $guzzleClient = new GuzzleClient(['handler' => $stack]); @@ -89,7 +89,7 @@ class ClientServiceTest extends \Test\TestCase { $dnsPinMiddleware ->expects($this->never()) ->method('addDnsPinning') - ->willReturn(function () { + ->willReturn(function (): void { }); $remoteHostValidator = $this->createMock(IRemoteHostValidator::class); $eventLogger = $this->createMock(IEventLogger::class); @@ -106,9 +106,9 @@ class ClientServiceTest extends \Test\TestCase { $handler = new CurlHandler(); $stack = HandlerStack::create($handler); - $stack->push(Middleware::tap(function (RequestInterface $request) use ($eventLogger) { + $stack->push(Middleware::tap(function (RequestInterface $request) use ($eventLogger): void { $eventLogger->start('http:request', $request->getMethod() . ' request to ' . $request->getRequestTarget()); - }, function () use ($eventLogger) { + }, function () use ($eventLogger): void { $eventLogger->end('http:request'); }), 'event logger'); $guzzleClient = new GuzzleClient(['handler' => $stack]); diff --git a/tests/lib/Http/Client/ClientTest.php b/tests/lib/Http/Client/ClientTest.php index 92e5f04d7f0..2c0f982c51c 100644 --- a/tests/lib/Http/Client/ClientTest.php +++ b/tests/lib/Http/Client/ClientTest.php @@ -66,16 +66,16 @@ class ClientTest extends \Test\TestCase { public function testGetProxyUriProxyHostEmptyPassword(): void { $this->config ->method('getSystemValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['proxyexclude', [], []], - ])); + ]); $this->config ->method('getSystemValueString') - ->will($this->returnValueMap([ + ->willReturnMap([ ['proxy', '', 'foo'], ['proxyuserpwd', '', ''], - ])); + ]); $this->assertEquals([ 'http' => 'foo', @@ -254,21 +254,21 @@ class ClientTest extends \Test\TestCase { private function setUpDefaultRequestOptions(): void { $this->config ->method('getSystemValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['proxyexclude', [], []], - ])); + ]); $this->config ->method('getSystemValueString') - ->will($this->returnValueMap([ + ->willReturnMap([ ['proxy', '', 'foo'], ['proxyuserpwd', '', ''], - ])); + ]); $this->config ->method('getSystemValueBool') - ->will($this->returnValueMap([ + ->willReturnMap([ ['installed', false, true], ['allow_local_remote_servers', false, true], - ])); + ]); $this->certificateManager ->expects($this->once()) @@ -481,7 +481,7 @@ class ClientTest extends \Test\TestCase { \Psr\Http\Message\RequestInterface $request, \Psr\Http\Message\ResponseInterface $response, \Psr\Http\Message\UriInterface $uri, - ) { + ): void { }, ], ], self::invokePrivate($this->client, 'buildRequestOptions', [[]])); @@ -532,7 +532,7 @@ class ClientTest extends \Test\TestCase { \Psr\Http\Message\RequestInterface $request, \Psr\Http\Message\ResponseInterface $response, \Psr\Http\Message\UriInterface $uri, - ) { + ): void { }, ], ], self::invokePrivate($this->client, 'buildRequestOptions', [[]])); @@ -584,7 +584,7 @@ class ClientTest extends \Test\TestCase { \Psr\Http\Message\RequestInterface $request, \Psr\Http\Message\ResponseInterface $response, \Psr\Http\Message\UriInterface $uri, - ) { + ): void { }, ], ], self::invokePrivate($this->client, 'buildRequestOptions', [[]])); diff --git a/tests/lib/Http/Client/DnsPinMiddlewareTest.php b/tests/lib/Http/Client/DnsPinMiddlewareTest.php index 88059d44121..9c0aa198cd8 100644 --- a/tests/lib/Http/Client/DnsPinMiddlewareTest.php +++ b/tests/lib/Http/Client/DnsPinMiddlewareTest.php @@ -273,7 +273,7 @@ class DnsPinMiddlewareTest extends TestCase { $this->expectExceptionMessage('violates local access rules'); $mockHandler = new MockHandler([ - static function (RequestInterface $request, array $options) { + static function (RequestInterface $request, array $options): void { // The handler should not be called }, ]); @@ -320,7 +320,7 @@ class DnsPinMiddlewareTest extends TestCase { $this->expectExceptionMessage('violates local access rules'); $mockHandler = new MockHandler([ - static function (RequestInterface $request, array $options) { + static function (RequestInterface $request, array $options): void { // The handler should not be called }, ]); @@ -367,7 +367,7 @@ class DnsPinMiddlewareTest extends TestCase { $this->expectExceptionMessage('violates local access rules'); $mockHandler = new MockHandler([ - static function (RequestInterface $request, array $options) { + static function (RequestInterface $request, array $options): void { // The handler should not be called }, ]); @@ -457,7 +457,7 @@ class DnsPinMiddlewareTest extends TestCase { $this->expectExceptionMessage('No DNS record found for www.example.com'); $mockHandler = new MockHandler([ - static function (RequestInterface $request, array $options) { + static function (RequestInterface $request, array $options): void { // The handler should not be called }, ]); @@ -480,7 +480,7 @@ class DnsPinMiddlewareTest extends TestCase { public function testIgnoreSubdomainForSoaQuery(): void { $mockHandler = new MockHandler([ - static function (RequestInterface $request, array $options) { + static function (RequestInterface $request, array $options): void { // The handler should not be called }, ]); diff --git a/tests/lib/ImageTest.php b/tests/lib/ImageTest.php index 5de5435335a..494f616ac9c 100644 --- a/tests/lib/ImageTest.php +++ b/tests/lib/ImageTest.php @@ -271,7 +271,7 @@ class ImageTest extends \Test\TestCase { $this->assertEquals(15, $img->height()); } - public static function sampleProvider() { + public static function sampleProvider(): array { return [ ['testimage.png', [200, 100], [100, 100]], ['testimage.jpg', [840, 840], [840, 525]], @@ -294,7 +294,7 @@ class ImageTest extends \Test\TestCase { $this->assertEquals($expected[1], $img->height()); } - public static function sampleFilenamesProvider() { + public static function sampleFilenamesProvider(): array { return [ ['testimage.png'], ['testimage.jpg'], @@ -328,7 +328,7 @@ class ImageTest extends \Test\TestCase { ); } - public static function largeSampleProvider() { + public static function largeSampleProvider(): array { return [ ['testimage.png', [200, 100], [100, 100]], ['testimage.jpg', [840, 840], [840, 525]], @@ -351,7 +351,7 @@ class ImageTest extends \Test\TestCase { $this->assertEquals($expected[1], $img->height()); } - public function convertDataProvider() { + public static function convertDataProvider(): array { return [ [ 'image/gif'], [ 'image/jpeg'], diff --git a/tests/lib/InfoXmlTest.php b/tests/lib/InfoXmlTest.php index e579a4b4efd..151b629f50b 100644 --- a/tests/lib/InfoXmlTest.php +++ b/tests/lib/InfoXmlTest.php @@ -7,6 +7,7 @@ namespace Test; use OCP\App\IAppManager; +use OCP\AppFramework\App; use OCP\Server; /** @@ -23,7 +24,7 @@ class InfoXmlTest extends TestCase { $this->appManager = Server::get(IAppManager::class); } - public function dataApps() { + public static function dataApps(): array { return [ ['admin_audit'], ['comments'], @@ -58,75 +59,75 @@ class InfoXmlTest extends TestCase { \OC_App::registerAutoloading($app, $appPath); //Add the appcontainer - $applicationClassName = \OCP\AppFramework\App::buildAppNamespace($app) . '\\AppInfo\\Application'; + $applicationClassName = App::buildAppNamespace($app) . '\\AppInfo\\Application'; if (class_exists($applicationClassName)) { $application = new $applicationClassName(); $this->addToAssertionCount(1); } else { - $application = new \OCP\AppFramework\App($app); + $application = new App($app); $this->addToAssertionCount(1); } if (isset($appInfo['background-jobs'])) { foreach ($appInfo['background-jobs'] as $job) { $this->assertTrue(class_exists($job), 'Asserting background job "' . $job . '" exists'); - $this->assertInstanceOf($job, \OC::$server->query($job)); + $this->assertInstanceOf($job, Server::get($job)); } } if (isset($appInfo['two-factor-providers'])) { foreach ($appInfo['two-factor-providers'] as $provider) { $this->assertTrue(class_exists($provider), 'Asserting two-factor providers "' . $provider . '" exists'); - $this->assertInstanceOf($provider, \OC::$server->query($provider)); + $this->assertInstanceOf($provider, Server::get($provider)); } } if (isset($appInfo['commands'])) { foreach ($appInfo['commands'] as $command) { $this->assertTrue(class_exists($command), 'Asserting command "' . $command . '" exists'); - $this->assertInstanceOf($command, \OC::$server->query($command)); + $this->assertInstanceOf($command, Server::get($command)); } } if (isset($appInfo['repair-steps']['pre-migration'])) { foreach ($appInfo['repair-steps']['pre-migration'] as $migration) { $this->assertTrue(class_exists($migration), 'Asserting pre-migration "' . $migration . '" exists'); - $this->assertInstanceOf($migration, \OC::$server->query($migration)); + $this->assertInstanceOf($migration, Server::get($migration)); } } if (isset($appInfo['repair-steps']['post-migration'])) { foreach ($appInfo['repair-steps']['post-migration'] as $migration) { $this->assertTrue(class_exists($migration), 'Asserting post-migration "' . $migration . '" exists'); - $this->assertInstanceOf($migration, \OC::$server->query($migration)); + $this->assertInstanceOf($migration, Server::get($migration)); } } if (isset($appInfo['repair-steps']['live-migration'])) { foreach ($appInfo['repair-steps']['live-migration'] as $migration) { $this->assertTrue(class_exists($migration), 'Asserting live-migration "' . $migration . '" exists'); - $this->assertInstanceOf($migration, \OC::$server->query($migration)); + $this->assertInstanceOf($migration, Server::get($migration)); } } if (isset($appInfo['repair-steps']['install'])) { foreach ($appInfo['repair-steps']['install'] as $migration) { $this->assertTrue(class_exists($migration), 'Asserting install-migration "' . $migration . '" exists'); - $this->assertInstanceOf($migration, \OC::$server->query($migration)); + $this->assertInstanceOf($migration, Server::get($migration)); } } if (isset($appInfo['repair-steps']['uninstall'])) { foreach ($appInfo['repair-steps']['uninstall'] as $migration) { $this->assertTrue(class_exists($migration), 'Asserting uninstall-migration "' . $migration . '" exists'); - $this->assertInstanceOf($migration, \OC::$server->query($migration)); + $this->assertInstanceOf($migration, Server::get($migration)); } } if (isset($appInfo['commands'])) { foreach ($appInfo['commands'] as $command) { $this->assertTrue(class_exists($command), 'Asserting command "' . $command . '"exists'); - $this->assertInstanceOf($command, \OC::$server->query($command)); + $this->assertInstanceOf($command, Server::get($command)); } } } diff --git a/tests/lib/InitialStateServiceTest.php b/tests/lib/InitialStateServiceTest.php index f58d54cb26b..5e0f7c7b55e 100644 --- a/tests/lib/InitialStateServiceTest.php +++ b/tests/lib/InitialStateServiceTest.php @@ -36,7 +36,7 @@ class InitialStateServiceTest extends TestCase { ); } - public function staticData(): array { + public static function staticData(): array { return [ ['string'], [23], diff --git a/tests/lib/InstallerTest.php b/tests/lib/InstallerTest.php index d27ca6e2159..c05c65cba85 100644 --- a/tests/lib/InstallerTest.php +++ b/tests/lib/InstallerTest.php @@ -15,6 +15,7 @@ use OCP\Http\Client\IClient; use OCP\Http\Client\IClientService; use OCP\IConfig; use OCP\ITempManager; +use OCP\Server; use Psr\Log\LoggerInterface; /** @@ -46,14 +47,14 @@ class InstallerTest extends TestCase { $this->logger = $this->createMock(LoggerInterface::class); $this->config = $this->createMock(IConfig::class); - $config = \OC::$server->getConfig(); + $config = Server::get(IConfig::class); $this->appstore = $config->setSystemValue('appstoreenabled', true); $config->setSystemValue('appstoreenabled', true); $installer = new Installer( - \OC::$server->get(AppFetcher::class), - \OC::$server->get(IClientService::class), - \OC::$server->getTempManager(), - \OC::$server->get(LoggerInterface::class), + Server::get(AppFetcher::class), + Server::get(IClientService::class), + Server::get(ITempManager::class), + Server::get(LoggerInterface::class), $config, false ); @@ -73,22 +74,22 @@ class InstallerTest extends TestCase { protected function tearDown(): void { $installer = new Installer( - \OC::$server->get(AppFetcher::class), - \OC::$server->get(IClientService::class), - \OC::$server->getTempManager(), - \OC::$server->get(LoggerInterface::class), - \OC::$server->getConfig(), + Server::get(AppFetcher::class), + Server::get(IClientService::class), + Server::get(ITempManager::class), + Server::get(LoggerInterface::class), + Server::get(IConfig::class), false ); $installer->removeApp(self::$appid); - \OC::$server->getConfig()->setSystemValue('appstoreenabled', $this->appstore); + Server::get(IConfig::class)->setSystemValue('appstoreenabled', $this->appstore); parent::tearDown(); } public function testInstallApp(): void { // Read the current version of the app to check for bug #2572 - \OCP\Server::get(IAppManager::class)->getAppVersion('testapp', true); + Server::get(IAppManager::class)->getAppVersion('testapp', true); // Extract app $pathOfTestApp = __DIR__ . '/../data/testapp.zip'; @@ -97,21 +98,21 @@ class InstallerTest extends TestCase { // Install app $installer = new Installer( - \OC::$server->get(AppFetcher::class), - \OC::$server->get(IClientService::class), - \OC::$server->getTempManager(), - \OC::$server->get(LoggerInterface::class), - \OC::$server->getConfig(), + Server::get(AppFetcher::class), + Server::get(IClientService::class), + Server::get(ITempManager::class), + Server::get(LoggerInterface::class), + Server::get(IConfig::class), false ); - $this->assertNull(\OC::$server->getConfig()->getAppValue('testapp', 'enabled', null), 'Check that the app is not listed before installation'); + $this->assertNull(Server::get(IConfig::class)->getAppValue('testapp', 'enabled', null), 'Check that the app is not listed before installation'); $this->assertSame('testapp', $installer->installApp(self::$appid)); - $this->assertSame('no', \OC::$server->getConfig()->getAppValue('testapp', 'enabled', null), 'Check that the app is listed after installation'); - $this->assertSame('0.9', \OC::$server->getConfig()->getAppValue('testapp', 'installed_version')); + $this->assertSame('no', Server::get(IConfig::class)->getAppValue('testapp', 'enabled', null), 'Check that the app is listed after installation'); + $this->assertSame('0.9', Server::get(IConfig::class)->getAppValue('testapp', 'installed_version')); $installer->removeApp(self::$appid); } - public function updateArrayProvider() { + public static function updateArrayProvider(): array { return [ // Update available [ @@ -337,7 +338,7 @@ u/spPSSVhaun5BA1FlphB2TkgnzlCmxJa63nFY045e/Jq+IKMcqqZl/092gbI2EQ ->expects($this->once()) ->method('get') ->willReturn($appArray); - $realTmpFile = \OC::$server->getTempManager()->getTemporaryFile('.tar.gz'); + $realTmpFile = Server::get(ITempManager::class)->getTemporaryFile('.tar.gz'); copy(__DIR__ . '/../data/testapp.tar.gz', $realTmpFile); $this->tempManager ->expects($this->once()) @@ -415,14 +416,14 @@ YwDVP+QmNRzx72jtqAN/Kc3CvQ9nkgYhU65B95aX0xA=', ->expects($this->once()) ->method('get') ->willReturn($appArray); - $realTmpFile = \OC::$server->getTempManager()->getTemporaryFile('.tar.gz'); + $realTmpFile = Server::get(ITempManager::class)->getTemporaryFile('.tar.gz'); copy(__DIR__ . '/../data/testapp1.tar.gz', $realTmpFile); $this->tempManager ->expects($this->once()) ->method('getTemporaryFile') ->with('.tar.gz') ->willReturn($realTmpFile); - $realTmpFolder = \OC::$server->getTempManager()->getTemporaryFolder(); + $realTmpFolder = Server::get(ITempManager::class)->getTemporaryFolder(); mkdir($realTmpFolder . '/testfolder'); $this->tempManager ->expects($this->once()) @@ -499,14 +500,14 @@ YwDVP+QmNRzx72jtqAN/Kc3CvQ9nkgYhU65B95aX0xA=', ->expects($this->once()) ->method('get') ->willReturn($appArray); - $realTmpFile = \OC::$server->getTempManager()->getTemporaryFile('.tar.gz'); + $realTmpFile = Server::get(ITempManager::class)->getTemporaryFile('.tar.gz'); copy(__DIR__ . '/../data/testapp1.tar.gz', $realTmpFile); $this->tempManager ->expects($this->once()) ->method('getTemporaryFile') ->with('.tar.gz') ->willReturn($realTmpFile); - $realTmpFolder = \OC::$server->getTempManager()->getTemporaryFolder(); + $realTmpFolder = Server::get(ITempManager::class)->getTemporaryFolder(); $this->tempManager ->expects($this->once()) ->method('getTemporaryFolder') @@ -578,14 +579,14 @@ MPLX6f5V9tCJtlH6ztmEcDROfvuVc0U3rEhqx2hphoyo+MZrPFpdcJL8KkIdMKbY ->expects($this->once()) ->method('get') ->willReturn($appArray); - $realTmpFile = \OC::$server->getTempManager()->getTemporaryFile('.tar.gz'); + $realTmpFile = Server::get(ITempManager::class)->getTemporaryFile('.tar.gz'); copy(__DIR__ . '/../data/testapp.tar.gz', $realTmpFile); $this->tempManager ->expects($this->once()) ->method('getTemporaryFile') ->with('.tar.gz') ->willReturn($realTmpFile); - $realTmpFolder = \OC::$server->getTempManager()->getTemporaryFolder(); + $realTmpFolder = Server::get(ITempManager::class)->getTemporaryFolder(); $this->tempManager ->expects($this->once()) ->method('getTemporaryFolder') @@ -672,14 +673,14 @@ JXhrdaWDZ8fzpUjugrtC3qslsqL0dzgU37anS3HwrT8=', ->expects($this->once()) ->method('get') ->willReturn($appArray); - $realTmpFile = \OC::$server->getTempManager()->getTemporaryFile('.tar.gz'); + $realTmpFile = Server::get(ITempManager::class)->getTemporaryFile('.tar.gz'); copy(__DIR__ . '/../data/testapp.0.8.tar.gz', $realTmpFile); $this->tempManager ->expects($this->once()) ->method('getTemporaryFile') ->with('.tar.gz') ->willReturn($realTmpFile); - $realTmpFolder = \OC::$server->getTempManager()->getTemporaryFolder(); + $realTmpFolder = Server::get(ITempManager::class)->getTemporaryFolder(); $this->tempManager ->expects($this->once()) ->method('getTemporaryFolder') diff --git a/tests/lib/IntegrityCheck/CheckerTest.php b/tests/lib/IntegrityCheck/CheckerTest.php index c5a4f255397..fc540707c70 100644 --- a/tests/lib/IntegrityCheck/CheckerTest.php +++ b/tests/lib/IntegrityCheck/CheckerTest.php @@ -8,6 +8,7 @@ namespace Test\IntegrityCheck; use OC\Core\Command\Maintenance\Mimetype\GenerateMimetypeFileBuilder; +use OC\Files\Type\Detection; use OC\IntegrityCheck\Checker; use OC\IntegrityCheck\Helpers\AppLocator; use OC\IntegrityCheck\Helpers\EnvironmentHelper; @@ -54,7 +55,7 @@ class CheckerTest extends TestCase { $this->appConfig = $this->createMock(IAppConfig::class); $this->cacheFactory = $this->createMock(ICacheFactory::class); $this->appManager = $this->createMock(IAppManager::class); - $this->mimeTypeDetector = $this->createMock(\OC\Files\Type\Detection::class); + $this->mimeTypeDetector = $this->createMock(Detection::class); $this->config->method('getAppValue') ->willReturnArgument(2); @@ -111,7 +112,7 @@ class CheckerTest extends TestCase { $this->fileAccessHelper ->expects($this->once()) ->method('file_put_contents') - ->will($this->throwException(new \Exception('Exception message'))); + ->willThrowException(new \Exception('Exception message')); $keyBundle = file_get_contents(__DIR__ . '/../../data/integritycheck/SomeApp.crt'); $rsaPrivateKey = file_get_contents(__DIR__ . '/../../data/integritycheck/SomeApp.key'); @@ -445,7 +446,7 @@ class CheckerTest extends TestCase { $this->fileAccessHelper ->expects($this->once()) ->method('assertDirectoryExists') - ->will($this->throwException(new \Exception('Exception message'))); + ->willThrowException(new \Exception('Exception message')); $this->fileAccessHelper ->expects($this->once()) ->method('is_writable') @@ -469,7 +470,7 @@ class CheckerTest extends TestCase { $this->fileAccessHelper ->expects($this->once()) ->method('assertDirectoryExists') - ->will($this->throwException(new \Exception('Exception message'))); + ->willThrowException(new \Exception('Exception message')); $this->fileAccessHelper ->expects($this->once()) ->method('is_writable') @@ -713,7 +714,9 @@ class CheckerTest extends TestCase { */ public function testVerifyCoreSignatureWithModifiedMimetypelistSignatureData(): void { $shippedMimetypeAliases = (array)json_decode(file_get_contents(\OC::$SERVERROOT . '/resources/config/mimetypealiases.dist.json')); + $shippedMimetypeNames = (array)json_decode(file_get_contents(\OC::$SERVERROOT . '/resources/config/mimetypenames.dist.json')); $allAliases = array_merge($shippedMimetypeAliases, ['my-custom/mimetype' => 'custom']); + $allMimetypeNames = array_merge($shippedMimetypeNames, ['my-custom/mimetype' => 'Custom Document']); $this->mimeTypeDetector ->method('getOnlyDefaultAliases') @@ -723,9 +726,14 @@ class CheckerTest extends TestCase { ->method('getAllAliases') ->willReturn($allAliases); + $this->mimeTypeDetector + ->method('getAllNamings') + ->willReturn($allMimetypeNames); + $oldMimetypeList = new GenerateMimetypeFileBuilder(); $all = $this->mimeTypeDetector->getAllAliases(); - $newFile = $oldMimetypeList->generateFile($all); + $namings = $this->mimeTypeDetector->getAllNamings(); + $newFile = $oldMimetypeList->generateFile($all, $namings); // When updating the mimetype list the test assets need to be updated as well // 1. Update core/js/mimetypelist.js with the new generated js by running the test with the next line uncommented: diff --git a/tests/lib/IntegrityCheck/Helpers/FileAccessHelperTest.php b/tests/lib/IntegrityCheck/Helpers/FileAccessHelperTest.php index 866850b7cff..ef537155388 100644 --- a/tests/lib/IntegrityCheck/Helpers/FileAccessHelperTest.php +++ b/tests/lib/IntegrityCheck/Helpers/FileAccessHelperTest.php @@ -8,6 +8,8 @@ namespace Test\IntegrityCheck\Helpers; use OC\IntegrityCheck\Helpers\FileAccessHelper; +use OCP\ITempManager; +use OCP\Server; use Test\TestCase; class FileAccessHelperTest extends TestCase { @@ -20,7 +22,7 @@ class FileAccessHelperTest extends TestCase { } public function testReadAndWrite(): void { - $tempManager = \OC::$server->getTempManager(); + $tempManager = Server::get(ITempManager::class); $filePath = $tempManager->getTemporaryFile(); $data = 'SomeDataGeneratedByIntegrityCheck'; @@ -38,7 +40,7 @@ class FileAccessHelperTest extends TestCase { public function testIs_writable(): void { $this->assertFalse($this->fileAccessHelper->is_writable('/anabsolutelynotexistingfolder/on/the/system.txt')); - $this->assertTrue($this->fileAccessHelper->is_writable(\OC::$server->getTempManager()->getTemporaryFile('MyFile'))); + $this->assertTrue($this->fileAccessHelper->is_writable(Server::get(ITempManager::class)->getTemporaryFile('MyFile'))); } @@ -50,7 +52,7 @@ class FileAccessHelperTest extends TestCase { } public function testAssertDirectoryExists(): void { - $this->fileAccessHelper->assertDirectoryExists(\OC::$server->getTempManager()->getTemporaryFolder('/testfolder/')); + $this->fileAccessHelper->assertDirectoryExists(Server::get(ITempManager::class)->getTemporaryFolder('/testfolder/')); $this->addToAssertionCount(1); } } diff --git a/tests/lib/IntegrityCheck/Iterator/ExcludeFileByNameFilterIteratorTest.php b/tests/lib/IntegrityCheck/Iterator/ExcludeFileByNameFilterIteratorTest.php index 14cc8851178..1d0b3e4f24d 100644 --- a/tests/lib/IntegrityCheck/Iterator/ExcludeFileByNameFilterIteratorTest.php +++ b/tests/lib/IntegrityCheck/Iterator/ExcludeFileByNameFilterIteratorTest.php @@ -17,11 +17,11 @@ class ExcludeFileByNameFilterIteratorTest extends TestCase { parent::setUp(); $this->filter = $this->getMockBuilder(ExcludeFileByNameFilterIterator::class) ->disableOriginalConstructor() - ->setMethods(['current']) + ->onlyMethods(['current']) ->getMock(); } - public function fileNameProvider(): array { + public static function fileNameProvider(): array { return [ ['a file', true], ['Thumbs.db', false], @@ -42,7 +42,7 @@ class ExcludeFileByNameFilterIteratorTest extends TestCase { public function testAcceptForFiles($fileName, $expectedResult): void { $iteratorMock = $this->getMockBuilder(\RecursiveDirectoryIterator::class) ->disableOriginalConstructor() - ->setMethods(['getFilename', 'isDir']) + ->onlyMethods(['getFilename', 'isDir']) ->getMock(); $iteratorMock->method('getFilename') @@ -64,7 +64,7 @@ class ExcludeFileByNameFilterIteratorTest extends TestCase { public function testAcceptForDirs($fileName, $expectedResult): void { $iteratorMock = $this->getMockBuilder(\RecursiveDirectoryIterator::class) ->disableOriginalConstructor() - ->setMethods(['getFilename', 'isDir']) + ->onlyMethods(['getFilename', 'isDir']) ->getMock(); $iteratorMock->method('getFilename') diff --git a/tests/lib/L10N/L10nTest.php b/tests/lib/L10N/L10nTest.php index 32b81cf06a7..4b934661f76 100644 --- a/tests/lib/L10N/L10nTest.php +++ b/tests/lib/L10N/L10nTest.php @@ -16,6 +16,8 @@ use OCP\IConfig; use OCP\IRequest; use OCP\IUserSession; use OCP\L10N\IFactory; +use OCP\Server; +use OCP\Util; use Test\TestCase; /** @@ -96,7 +98,7 @@ class L10nTest extends TestCase { $this->assertEquals('5 Dateien', (string)$l->n('%n file', '%n files', 5)); } - public function dataPlaceholders(): array { + public static function dataPlaceholders(): array { return [ ['Ordered placeholders one %s two %s', 'Placeholder one 1 two 2'], ['Reordered placeholders one %s two %s', 'Placeholder two 2 one 1'], @@ -117,7 +119,7 @@ class L10nTest extends TestCase { $this->assertEquals($expected, $l->t($string, ['1', '2'])); } - public function localizationData() { + public static function localizationData(): array { return [ // timestamp as string ["February 13, 2009, 11:31:30\xE2\x80\xAFPM UTC", 'en', 'en_US', 'datetime', '1234567890'], @@ -161,7 +163,7 @@ class L10nTest extends TestCase { $this->assertSame($expectedDate, $l->l($type, $value)); } - public function firstDayData() { + public static function firstDayData(): array { return [ [1, 'de', 'de_DE'], [0, 'en', 'en_US'], @@ -179,7 +181,7 @@ class L10nTest extends TestCase { $this->assertSame($expected, $l->l('firstday', 'firstday')); } - public function jsDateData() { + public static function jsDateData(): array { return [ ['dd.MM.yy', 'de', 'de_DE'], ['M/d/yy', 'en', 'en_US'], @@ -203,12 +205,12 @@ class L10nTest extends TestCase { } public function testServiceGetLanguageCode(): void { - $l = \OCP\Util::getL10N('lib', 'de'); + $l = Util::getL10N('lib', 'de'); $this->assertEquals('de', $l->getLanguageCode()); } public function testWeekdayName(): void { - $l = \OCP\Util::getL10N('lib', 'de'); + $l = Util::getL10N('lib', 'de'); $this->assertEquals('Mo.', $l->l('weekdayName', new \DateTime('2017-11-6'), ['width' => 'abbreviated'])); } @@ -220,14 +222,11 @@ class L10nTest extends TestCase { public function testFindLanguageFromLocale($locale, $language): void { $this->assertEquals( $language, - \OC::$server->get(IFactory::class)->findLanguageFromLocale('lib', $locale) + Server::get(IFactory::class)->findLanguageFromLocale('lib', $locale) ); } - /** - * @return array - */ - public function findLanguageFromLocaleData(): array { + public static function findLanguageFromLocaleData(): array { return [ 'en_US' => ['en_US', 'en'], 'en_UK' => ['en_UK', 'en'], diff --git a/tests/lib/L10N/LanguageIteratorTest.php b/tests/lib/L10N/LanguageIteratorTest.php index 79998c36354..e328941e35d 100644 --- a/tests/lib/L10N/LanguageIteratorTest.php +++ b/tests/lib/L10N/LanguageIteratorTest.php @@ -28,7 +28,7 @@ class LanguageIteratorTest extends TestCase { $this->iterator = new LanguageIterator($this->user, $this->config); } - public function languageSettingsProvider() { + public static function languageSettingsProvider(): array { return [ // all language settings set [ 'de_DE', 'es_CU', 'zh_TW', ['de_DE', 'de', 'es_CU', 'es', 'zh_TW', 'zh', 'en']], diff --git a/tests/lib/LargeFileHelperGetFileSizeTest.php b/tests/lib/LargeFileHelperGetFileSizeTest.php index 247886fee6a..dbb8658d184 100644 --- a/tests/lib/LargeFileHelperGetFileSizeTest.php +++ b/tests/lib/LargeFileHelperGetFileSizeTest.php @@ -8,6 +8,9 @@ namespace Test; use bantu\IniGetWrapper\IniGetWrapper; +use OC\LargeFileHelper; +use OCP\Server; +use OCP\Util; /** * Tests whether LargeFileHelper is able to determine file size at all. @@ -23,10 +26,10 @@ class LargeFileHelperGetFileSizeTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->helper = new \OC\LargeFileHelper(); + $this->helper = new LargeFileHelper(); } - public function dataFileNameProvider() { + public static function dataFileNameProvider(): array { $path = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR; return [ @@ -44,7 +47,7 @@ class LargeFileHelperGetFileSizeTest extends TestCase { 'The PHP curl extension is required for this test.' ); } - if (\OC::$server->get(IniGetWrapper::class)->getString('open_basedir') !== '') { + if (Server::get(IniGetWrapper::class)->getString('open_basedir') !== '') { $this->markTestSkipped( 'The PHP curl extension does not work with the file:// protocol when open_basedir is enabled.' ); @@ -62,7 +65,7 @@ class LargeFileHelperGetFileSizeTest extends TestCase { if (escapeshellarg('strängé') !== '\'strängé\'') { $this->markTestSkipped('Your escapeshell args removes accents'); } - if (!\OCP\Util::isFunctionEnabled('exec')) { + if (!Util::isFunctionEnabled('exec')) { $this->markTestSkipped( 'The exec() function needs to be enabled for this test.' ); diff --git a/tests/lib/LargeFileHelperTest.php b/tests/lib/LargeFileHelperTest.php index 2cccfa441ab..0745c19f158 100644 --- a/tests/lib/LargeFileHelperTest.php +++ b/tests/lib/LargeFileHelperTest.php @@ -7,12 +7,14 @@ namespace Test; +use OC\LargeFileHelper; + class LargeFileHelperTest extends TestCase { protected $helper; protected function setUp(): void { parent::setUp(); - $this->helper = new \OC\LargeFileHelper; + $this->helper = new LargeFileHelper; } public function testFormatUnsignedIntegerFloat(): void { diff --git a/tests/lib/LegacyHelperTest.php b/tests/lib/LegacyHelperTest.php index ea359d4e50c..0938640b892 100644 --- a/tests/lib/LegacyHelperTest.php +++ b/tests/lib/LegacyHelperTest.php @@ -23,85 +23,6 @@ class LegacyHelperTest extends \Test\TestCase { \OC::$WEBROOT = $this->originalWebRoot; } - /** - * @dataProvider humanFileSizeProvider - */ - public function testHumanFileSize($expected, $input): void { - $result = OC_Helper::humanFileSize($input); - $this->assertEquals($expected, $result); - } - - public function humanFileSizeProvider() { - return [ - ['0 B', 0], - ['1 KB', 1024], - ['9.5 MB', 10000000], - ['1.3 GB', 1395864371], - ['465.7 GB', 500000000000], - ['454.7 TB', 500000000000000], - ['444.1 PB', 500000000000000000], - ]; - } - - /** - * @dataProvider providesComputerFileSize - */ - public function testComputerFileSize($expected, $input): void { - $result = OC_Helper::computerFileSize($input); - $this->assertEquals($expected, $result); - } - - public function providesComputerFileSize() { - return [ - [0.0, '0 B'], - [1024.0, '1 KB'], - [1395864371.0, '1.3 GB'], - [9961472.0, '9.5 MB'], - [500041567437.0, '465.7 GB'], - [false, '12 GB etfrhzui'] - ]; - } - - public function testMb_array_change_key_case(): void { - $arrayStart = [ - 'Foo' => 'bar', - 'Bar' => 'foo', - ]; - $arrayResult = [ - 'foo' => 'bar', - 'bar' => 'foo', - ]; - $result = OC_Helper::mb_array_change_key_case($arrayStart); - $expected = $arrayResult; - $this->assertEquals($result, $expected); - - $arrayStart = [ - 'foo' => 'bar', - 'bar' => 'foo', - ]; - $arrayResult = [ - 'FOO' => 'bar', - 'BAR' => 'foo', - ]; - $result = OC_Helper::mb_array_change_key_case($arrayStart, MB_CASE_UPPER); - $expected = $arrayResult; - $this->assertEquals($result, $expected); - } - - public function testRecursiveArraySearch(): void { - $haystack = [ - 'Foo' => 'own', - 'Bar' => 'Cloud', - ]; - - $result = OC_Helper::recursiveArraySearch($haystack, 'own'); - $expected = 'Foo'; - $this->assertEquals($result, $expected); - - $result = OC_Helper::recursiveArraySearch($haystack, 'NotFound'); - $this->assertFalse($result); - } - public function testBuildNotExistingFileNameForView(): void { $viewMock = $this->createMock(View::class); $this->assertEquals('/filename', OC_Helper::buildNotExistingFileNameForView('/', 'filename', $viewMock)); @@ -110,95 +31,87 @@ class LegacyHelperTest extends \Test\TestCase { $viewMock = $this->createMock(View::class); $viewMock->expects($this->exactly(2)) ->method('file_exists') - ->withConsecutive( + ->willReturnMap([ // Conflict on filename.ext - ['dir/filename.ext'], - ['dir/filename (2).ext'], - ) - ->will($this->onConsecutiveCalls(true, false)); + ['dir/filename.ext', true], + ['dir/filename (2).ext', false], + ]); $this->assertEquals('dir/filename (2).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename.ext', $viewMock)); $viewMock = $this->createMock(View::class); $viewMock->expects($this->exactly(3)) ->method('file_exists') - ->withConsecutive( - ['dir/filename.ext'], - ['dir/filename (2).ext'], - ['dir/filename (3).ext'], - ) - ->will($this->onConsecutiveCalls(true, true, false)); + ->willReturnMap([ + // Conflict on filename.ext + ['dir/filename.ext', true], + ['dir/filename (2).ext', true], + ['dir/filename (3).ext', false], + ]); $this->assertEquals('dir/filename (3).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename.ext', $viewMock)); $viewMock = $this->createMock(View::class); $viewMock->expects($this->exactly(2)) ->method('file_exists') - ->withConsecutive( - ['dir/filename (1).ext'], - ['dir/filename (2).ext'], - ) - ->will($this->onConsecutiveCalls(true, false)); + ->willReturnMap([ + ['dir/filename (1).ext', true], + ['dir/filename (2).ext', false], + ]); $this->assertEquals('dir/filename (2).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename (1).ext', $viewMock)); $viewMock = $this->createMock(View::class); $viewMock->expects($this->exactly(2)) ->method('file_exists') - ->withConsecutive( - ['dir/filename (2).ext'], - ['dir/filename (3).ext'], - ) - ->will($this->onConsecutiveCalls(true, false)); + ->willReturnMap([ + ['dir/filename (2).ext', true], + ['dir/filename (3).ext', false], + ]); $this->assertEquals('dir/filename (3).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename (2).ext', $viewMock)); $viewMock = $this->createMock(View::class); $viewMock->expects($this->exactly(3)) ->method('file_exists') - ->withConsecutive( - ['dir/filename (2).ext'], - ['dir/filename (3).ext'], - ['dir/filename (4).ext'], - ) - ->will($this->onConsecutiveCalls(true, true, false)); + ->willReturnMap([ + ['dir/filename (2).ext', true], + ['dir/filename (3).ext', true], + ['dir/filename (4).ext', false], + ]); $this->assertEquals('dir/filename (4).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename (2).ext', $viewMock)); $viewMock = $this->createMock(View::class); $viewMock->expects($this->exactly(2)) ->method('file_exists') - ->withConsecutive( - ['dir/filename(1).ext'], - ['dir/filename(2).ext'], - ) - ->will($this->onConsecutiveCalls(true, false)); + ->willReturnMap([ + ['dir/filename(1).ext', true], + ['dir/filename(2).ext', false], + ]); $this->assertEquals('dir/filename(2).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename(1).ext', $viewMock)); $viewMock = $this->createMock(View::class); $viewMock->expects($this->exactly(2)) ->method('file_exists') - ->withConsecutive( - ['dir/filename(1) (1).ext'], - ['dir/filename(1) (2).ext'], - ) - ->will($this->onConsecutiveCalls(true, false)); + ->willReturnMap([ + ['dir/filename(1) (1).ext', true], + ['dir/filename(1) (2).ext', false], + ]); $this->assertEquals('dir/filename(1) (2).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename(1) (1).ext', $viewMock)); $viewMock = $this->createMock(View::class); $viewMock->expects($this->exactly(3)) ->method('file_exists') - ->withConsecutive( - ['dir/filename(1) (1).ext'], - ['dir/filename(1) (2).ext'], - ['dir/filename(1) (3).ext'], - ) - ->will($this->onConsecutiveCalls(true, true, false)); + ->willReturnMap([ + ['dir/filename(1) (1).ext', true], + ['dir/filename(1) (2).ext', true], + ['dir/filename(1) (3).ext', false], + ]); $this->assertEquals('dir/filename(1) (3).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename(1) (1).ext', $viewMock)); $viewMock = $this->createMock(View::class); $viewMock->expects($this->exactly(2)) ->method('file_exists') - ->withConsecutive( - ['dir/filename(1) (2) (3).ext'], - ['dir/filename(1) (2) (4).ext'], - ) - ->will($this->onConsecutiveCalls(true, false)); + ->willReturnMap([ + ['dir/filename(1) (2) (3).ext', true], + ['dir/filename(1) (2) (4).ext', false], + ]); $this->assertEquals('dir/filename(1) (2) (4).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename(1) (2) (3).ext', $viewMock)); } @@ -227,7 +140,7 @@ class LegacyHelperTest extends \Test\TestCase { } - public function streamCopyDataProvider() { + public static function streamCopyDataProvider(): array { return [ [0, false, false, false], [0, false, \OC::$SERVERROOT . '/tests/data/lorem.txt', false], @@ -235,42 +148,4 @@ class LegacyHelperTest extends \Test\TestCase { [3670, true, \OC::$SERVERROOT . '/tests/data/testimage.png', \OC::$SERVERROOT . '/tests/data/testimage-copy.png'], ]; } - - /** - * Tests recursive folder deletion with rmdirr() - */ - public function testRecursiveFolderDeletion(): void { - $baseDir = \OC::$server->getTempManager()->getTemporaryFolder() . '/'; - mkdir($baseDir . 'a/b/c/d/e', 0777, true); - mkdir($baseDir . 'a/b/c1/d/e', 0777, true); - mkdir($baseDir . 'a/b/c2/d/e', 0777, true); - mkdir($baseDir . 'a/b1/c1/d/e', 0777, true); - mkdir($baseDir . 'a/b2/c1/d/e', 0777, true); - mkdir($baseDir . 'a/b3/c1/d/e', 0777, true); - mkdir($baseDir . 'a1/b', 0777, true); - mkdir($baseDir . 'a1/c', 0777, true); - file_put_contents($baseDir . 'a/test.txt', 'Hello file!'); - file_put_contents($baseDir . 'a/b1/c1/test one.txt', 'Hello file one!'); - file_put_contents($baseDir . 'a1/b/test two.txt', 'Hello file two!'); - \OC_Helper::rmdirr($baseDir . 'a'); - - $this->assertFalse(file_exists($baseDir . 'a')); - $this->assertTrue(file_exists($baseDir . 'a1')); - - \OC_Helper::rmdirr($baseDir); - $this->assertFalse(file_exists($baseDir)); - } - - /** - * Allows us to test private methods/properties - * - * @param $object - * @param $methodName - * @param array $parameters - * @return mixed - * @deprecated Please extend \Test\TestCase and use self::invokePrivate() then - */ - public static function invokePrivate($object, $methodName, array $parameters = []) { - return parent::invokePrivate($object, $methodName, $parameters); - } } diff --git a/tests/lib/Lock/DBLockingProviderTest.php b/tests/lib/Lock/DBLockingProviderTest.php index 1c02e8d7d77..1216d42f343 100644 --- a/tests/lib/Lock/DBLockingProviderTest.php +++ b/tests/lib/Lock/DBLockingProviderTest.php @@ -7,8 +7,11 @@ namespace Test\Lock; +use OC\Lock\DBLockingProvider; use OCP\AppFramework\Utility\ITimeFactory; +use OCP\IDBConnection; use OCP\Lock\ILockingProvider; +use OCP\Server; /** * Class DBLockingProvider @@ -50,8 +53,8 @@ class DBLockingProviderTest extends LockingProvider { * @return \OCP\Lock\ILockingProvider */ protected function getInstance() { - $this->connection = \OC::$server->getDatabaseConnection(); - return new \OC\Lock\DBLockingProvider($this->connection, $this->timeFactory, 3600); + $this->connection = Server::get(IDBConnection::class); + return new DBLockingProvider($this->connection, $this->timeFactory, 3600); } protected function tearDown(): void { diff --git a/tests/lib/Lock/LockingProvider.php b/tests/lib/Lock/LockingProvider.php index b7e301c55a6..2f4407a8659 100644 --- a/tests/lib/Lock/LockingProvider.php +++ b/tests/lib/Lock/LockingProvider.php @@ -61,7 +61,7 @@ abstract class LockingProvider extends TestCase { public function testDoubleExclusiveLock(): void { - $this->expectException(\OCP\Lock\LockedException::class); + $this->expectException(LockedException::class); $this->instance->acquireLock('foo', ILockingProvider::LOCK_EXCLUSIVE); $this->assertTrue($this->instance->isLocked('foo', ILockingProvider::LOCK_EXCLUSIVE)); @@ -78,7 +78,7 @@ abstract class LockingProvider extends TestCase { public function testExclusiveLockAfterShared(): void { - $this->expectException(\OCP\Lock\LockedException::class); + $this->expectException(LockedException::class); $this->instance->acquireLock('foo', ILockingProvider::LOCK_SHARED); $this->assertTrue($this->instance->isLocked('foo', ILockingProvider::LOCK_SHARED)); @@ -152,7 +152,7 @@ abstract class LockingProvider extends TestCase { public function testSharedLockAfterExclusive(): void { - $this->expectException(\OCP\Lock\LockedException::class); + $this->expectException(LockedException::class); $this->instance->acquireLock('foo', ILockingProvider::LOCK_EXCLUSIVE); $this->assertTrue($this->instance->isLocked('foo', ILockingProvider::LOCK_EXCLUSIVE)); @@ -199,7 +199,7 @@ abstract class LockingProvider extends TestCase { public function testChangeLockToExclusiveDoubleShared(): void { - $this->expectException(\OCP\Lock\LockedException::class); + $this->expectException(LockedException::class); $this->instance->acquireLock('foo', ILockingProvider::LOCK_SHARED); $this->instance->acquireLock('foo', ILockingProvider::LOCK_SHARED); @@ -208,14 +208,14 @@ abstract class LockingProvider extends TestCase { public function testChangeLockToExclusiveNoShared(): void { - $this->expectException(\OCP\Lock\LockedException::class); + $this->expectException(LockedException::class); $this->instance->changeLock('foo', ILockingProvider::LOCK_EXCLUSIVE); } public function testChangeLockToExclusiveFromExclusive(): void { - $this->expectException(\OCP\Lock\LockedException::class); + $this->expectException(LockedException::class); $this->instance->acquireLock('foo', ILockingProvider::LOCK_EXCLUSIVE); $this->instance->changeLock('foo', ILockingProvider::LOCK_EXCLUSIVE); @@ -223,14 +223,14 @@ abstract class LockingProvider extends TestCase { public function testChangeLockToSharedNoExclusive(): void { - $this->expectException(\OCP\Lock\LockedException::class); + $this->expectException(LockedException::class); $this->instance->changeLock('foo', ILockingProvider::LOCK_SHARED); } public function testChangeLockToSharedFromShared(): void { - $this->expectException(\OCP\Lock\LockedException::class); + $this->expectException(LockedException::class); $this->instance->acquireLock('foo', ILockingProvider::LOCK_SHARED); $this->instance->changeLock('foo', ILockingProvider::LOCK_SHARED); diff --git a/tests/lib/Lock/MemcacheLockingProviderTest.php b/tests/lib/Lock/MemcacheLockingProviderTest.php index a698be65aaf..ec8ded11d1e 100644 --- a/tests/lib/Lock/MemcacheLockingProviderTest.php +++ b/tests/lib/Lock/MemcacheLockingProviderTest.php @@ -7,8 +7,10 @@ namespace Test\Lock; +use OC\Lock\MemcacheLockingProvider; use OC\Memcache\ArrayCache; use OCP\AppFramework\Utility\ITimeFactory; +use OCP\Server; class MemcacheLockingProviderTest extends LockingProvider { /** @@ -21,8 +23,8 @@ class MemcacheLockingProviderTest extends LockingProvider { */ protected function getInstance() { $this->memcache = new ArrayCache(); - $timeProvider = \OC::$server->get(ITimeFactory::class); - return new \OC\Lock\MemcacheLockingProvider($this->memcache, $timeProvider); + $timeProvider = Server::get(ITimeFactory::class); + return new MemcacheLockingProvider($this->memcache, $timeProvider); } protected function tearDown(): void { diff --git a/tests/lib/Lock/NonCachingDBLockingProviderTest.php b/tests/lib/Lock/NonCachingDBLockingProviderTest.php index b79709a08e7..ad4100a3afd 100644 --- a/tests/lib/Lock/NonCachingDBLockingProviderTest.php +++ b/tests/lib/Lock/NonCachingDBLockingProviderTest.php @@ -6,7 +6,10 @@ namespace Test\Lock; +use OC\Lock\DBLockingProvider; +use OCP\IDBConnection; use OCP\Lock\ILockingProvider; +use OCP\Server; /** * @group DB @@ -18,8 +21,8 @@ class NonCachingDBLockingProviderTest extends DBLockingProviderTest { * @return \OCP\Lock\ILockingProvider */ protected function getInstance() { - $this->connection = \OC::$server->getDatabaseConnection(); - return new \OC\Lock\DBLockingProvider($this->connection, $this->timeFactory, 3600, false); + $this->connection = Server::get(IDBConnection::class); + return new DBLockingProvider($this->connection, $this->timeFactory, 3600, false); } public function testDoubleShared(): void { diff --git a/tests/lib/Lockdown/Filesystem/NoFSTest.php b/tests/lib/Lockdown/Filesystem/NoFSTest.php index dedcf580992..ee6db48b47c 100644 --- a/tests/lib/Lockdown/Filesystem/NoFSTest.php +++ b/tests/lib/Lockdown/Filesystem/NoFSTest.php @@ -10,6 +10,7 @@ use OC\Authentication\Token\PublicKeyToken; use OC\Files\Filesystem; use OC\Lockdown\Filesystem\NullStorage; use OCP\Authentication\Token\IToken; +use OCP\Server; use Test\Traits\UserTrait; /** @@ -23,7 +24,7 @@ class NoFSTest extends \Test\TestCase { $token->setScope([ IToken::SCOPE_FILESYSTEM => true ]); - \OC::$server->get('LockdownManager')->setToken($token); + Server::get('LockdownManager')->setToken($token); parent::tearDown(); } @@ -34,7 +35,7 @@ class NoFSTest extends \Test\TestCase { IToken::SCOPE_FILESYSTEM => false ]); - \OC::$server->get('LockdownManager')->setToken($token); + Server::get('LockdownManager')->setToken($token); $this->createUser('foo', 'var'); } diff --git a/tests/lib/Lockdown/Filesystem/NullCacheTest.php b/tests/lib/Lockdown/Filesystem/NullCacheTest.php index 5e120e9bdc7..cc105494823 100644 --- a/tests/lib/Lockdown/Filesystem/NullCacheTest.php +++ b/tests/lib/Lockdown/Filesystem/NullCacheTest.php @@ -27,7 +27,7 @@ class NulLCacheTest extends \Test\TestCase { } public function testGetEmpty(): void { - $this->assertNull($this->cache->get('foo')); + $this->assertFalse($this->cache->get('foo')); } public function testGet(): void { diff --git a/tests/lib/Log/FileTest.php b/tests/lib/Log/FileTest.php index b483da969f4..32ab4a1fdb6 100644 --- a/tests/lib/Log/FileTest.php +++ b/tests/lib/Log/FileTest.php @@ -8,8 +8,10 @@ namespace Test\Log; use OC\Log\File; +use OC\SystemConfig; use OCP\IConfig; use OCP\ILogger; +use OCP\Server; use Test\TestCase; /** @@ -24,7 +26,7 @@ class FileTest extends TestCase { protected function setUp(): void { parent::setUp(); - $config = \OC::$server->getSystemConfig(); + $config = Server::get(SystemConfig::class); $this->restore_logfile = $config->getValue('logfile'); $this->restore_logdateformat = $config->getValue('logdateformat'); @@ -32,7 +34,7 @@ class FileTest extends TestCase { $this->logFile = new File($config->getValue('datadirectory') . '/logtest.log', '', $config); } protected function tearDown(): void { - $config = \OC::$server->getSystemConfig(); + $config = Server::get(SystemConfig::class); if (isset($this->restore_logfile)) { $config->getValue('logfile', $this->restore_logfile); } else { @@ -48,7 +50,7 @@ class FileTest extends TestCase { } public function testLogging(): void { - $config = \OC::$server->get(IConfig::class); + $config = Server::get(IConfig::class); # delete old logfile unlink($config->getSystemValue('logfile')); @@ -69,7 +71,7 @@ class FileTest extends TestCase { } public function testMicrosecondsLogTimestamp(): void { - $config = \OC::$server->getConfig(); + $config = Server::get(IConfig::class); # delete old logfile unlink($config->getSystemValue('logfile')); diff --git a/tests/lib/Log/PsrLoggerAdapterTest.php b/tests/lib/Log/PsrLoggerAdapterTest.php index cc9ddea378a..9a159ba537d 100644 --- a/tests/lib/Log/PsrLoggerAdapterTest.php +++ b/tests/lib/Log/PsrLoggerAdapterTest.php @@ -45,7 +45,7 @@ class PsrLoggerAdapterTest extends TestCase { $this->assertEquals($expectedLevel, PsrLoggerAdapter::logLevelToInt($level)); } - public function dataPsrLoggingLevels(): array { + public static function dataPsrLoggingLevels(): array { return [ [LogLevel::ALERT, ILogger::ERROR], [LogLevel::CRITICAL, ILogger::ERROR], @@ -69,7 +69,7 @@ class PsrLoggerAdapterTest extends TestCase { $this->loggerAdapter->log($level, 'valid message'); } - public function dataInvalidLoggingLevel(): array { + public static function dataInvalidLoggingLevel(): array { return [ // invalid string ['this is not a level'], diff --git a/tests/lib/LoggerTest.php b/tests/lib/LoggerTest.php index c7c60e892aa..972626eccb4 100644 --- a/tests/lib/LoggerTest.php +++ b/tests/lib/LoggerTest.php @@ -38,9 +38,9 @@ class LoggerTest extends TestCase implements IWriter { private function mockDefaultLogLevel(): void { $this->config->expects($this->any()) ->method('getValue') - ->will(($this->returnValueMap([ + ->willReturnMap([ ['loglevel', ILogger::WARN, ILogger::WARN], - ]))); + ]); } public function testInterpolation(): void { @@ -55,10 +55,10 @@ class LoggerTest extends TestCase implements IWriter { public function testAppCondition(): void { $this->config->expects($this->any()) ->method('getValue') - ->will(($this->returnValueMap([ + ->willReturnMap([ ['loglevel', ILogger::WARN, ILogger::WARN], ['log.condition', [], ['apps' => ['files']]] - ]))); + ]); $logger = $this->logger; $logger->info('Don\'t display info messages'); @@ -72,7 +72,7 @@ class LoggerTest extends TestCase implements IWriter { $this->assertEquals($expected, $this->getLogs()); } - public function dataMatchesCondition(): array { + public static function dataMatchesCondition(): array { return [ [ 'user0', @@ -181,7 +181,7 @@ class LoggerTest extends TestCase implements IWriter { $this->logs[] = $level . ' ' . $textMessage; } - public function userAndPasswordData(): array { + public static function userAndPasswordData(): array { return [ ['mySpecialUsername', 'MySuperSecretPassword'], ['my-user', '324324()#ä234'], @@ -291,7 +291,7 @@ class LoggerTest extends TestCase implements IWriter { */ public function testDetectclosure(string $user, string $password): void { $this->mockDefaultLogLevel(); - $a = function ($user, $password) { + $a = function ($user, $password): void { throw new \Exception('test'); }; $this->registry->expects($this->once()) diff --git a/tests/lib/Mail/MailerTest.php b/tests/lib/Mail/MailerTest.php index 02a2605fc77..ffc0ee17256 100644 --- a/tests/lib/Mail/MailerTest.php +++ b/tests/lib/Mail/MailerTest.php @@ -18,6 +18,7 @@ use OCP\IL10N; use OCP\IURLGenerator; use OCP\L10N\IFactory; use OCP\Mail\Events\BeforeMessageSent; +use OCP\Server; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; use Symfony\Component\Mailer\Mailer as SymfonyMailer; @@ -66,7 +67,7 @@ class MailerTest extends TestCase { /** * @return array */ - public function sendmailModeProvider(): array { + public static function sendmailModeProvider(): array { return [ 'smtp' => ['smtp', ' -bs'], 'pipe' => ['pipe', ' -t -i'], @@ -87,7 +88,7 @@ class MailerTest extends TestCase { ['mail_sendmailmode', 'smtp', $sendmailMode], ]); - $path = \OCP\Server::get(IBinaryFinder::class)->findBinaryPath('sendmail'); + $path = Server::get(IBinaryFinder::class)->findBinaryPath('sendmail'); if ($path === false) { $path = '/usr/sbin/sendmail'; } @@ -170,7 +171,7 @@ class MailerTest extends TestCase { ['mail_smtpport', 25, 25], ]); $this->mailer = $this->getMockBuilder(Mailer::class) - ->setMethods(['getInstance']) + ->onlyMethods(['getInstance']) ->setConstructorArgs( [ $this->config, @@ -227,7 +228,7 @@ class MailerTest extends TestCase { /** * @return array */ - public function mailAddressProvider() { + public static function mailAddressProvider(): array { return [ ['lukas@owncloud.com', true, false], ['lukas@localhost', true, false], diff --git a/tests/lib/Mail/MessageTest.php b/tests/lib/Mail/MessageTest.php index 260d3aaff76..79a12f3c355 100644 --- a/tests/lib/Mail/MessageTest.php +++ b/tests/lib/Mail/MessageTest.php @@ -27,7 +27,7 @@ class MessageTest extends TestCase { /** * @return array */ - public function mailAddressProvider() { + public static function mailAddressProvider(): array { return [ [ ['lukas@owncloud.com' => 'Lukas Reschke'], @@ -65,8 +65,7 @@ class MessageTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->symfonyEmail = $this->getMockBuilder(Email::class) - ->disableOriginalConstructor()->getMock(); + $this->symfonyEmail = $this->createMock(Email::class); $this->message = new Message($this->symfonyEmail, false); } diff --git a/tests/lib/Memcache/APCuTest.php b/tests/lib/Memcache/APCuTest.php index cb465d1f07a..199bdf298f6 100644 --- a/tests/lib/Memcache/APCuTest.php +++ b/tests/lib/Memcache/APCuTest.php @@ -8,6 +8,8 @@ namespace Test\Memcache; +use OC\Memcache\APCu; + /** * @group Memcache * @group APCu @@ -16,11 +18,11 @@ class APCuTest extends Cache { protected function setUp(): void { parent::setUp(); - if (!\OC\Memcache\APCu::isAvailable()) { + if (!APCu::isAvailable()) { $this->markTestSkipped('The APCu extension is not available.'); return; } - $this->instance = new \OC\Memcache\APCu($this->getUniqueID()); + $this->instance = new APCu($this->getUniqueID()); } public function testCasIntChanged(): void { diff --git a/tests/lib/Memcache/ArrayCacheTest.php b/tests/lib/Memcache/ArrayCacheTest.php index 42b548355eb..e71c821729c 100644 --- a/tests/lib/Memcache/ArrayCacheTest.php +++ b/tests/lib/Memcache/ArrayCacheTest.php @@ -8,12 +8,14 @@ namespace Test\Memcache; +use OC\Memcache\ArrayCache; + /** * @group Memcache */ class ArrayCacheTest extends Cache { protected function setUp(): void { parent::setUp(); - $this->instance = new \OC\Memcache\ArrayCache(''); + $this->instance = new ArrayCache(''); } } diff --git a/tests/lib/Memcache/CasTraitTest.php b/tests/lib/Memcache/CasTraitTest.php index 129819045f2..57000049cc7 100644 --- a/tests/lib/Memcache/CasTraitTest.php +++ b/tests/lib/Memcache/CasTraitTest.php @@ -7,6 +7,7 @@ namespace Test\Memcache; +use OC\Memcache\ArrayCache; use Test\TestCase; /** @@ -17,7 +18,7 @@ class CasTraitTest extends TestCase { * @return \OC\Memcache\CasTrait */ private function getCache() { - $sourceCache = new \OC\Memcache\ArrayCache(); + $sourceCache = new ArrayCache(); $mock = $this->getMockForTrait('\OC\Memcache\CasTrait'); $mock->expects($this->any()) diff --git a/tests/lib/Memcache/FactoryTest.php b/tests/lib/Memcache/FactoryTest.php index fa0d80c5153..afd17081660 100644 --- a/tests/lib/Memcache/FactoryTest.php +++ b/tests/lib/Memcache/FactoryTest.php @@ -7,7 +7,9 @@ namespace Test\Memcache; +use OC\Memcache\Factory; use OC\Memcache\NullCache; +use OCP\HintException; use OCP\Profiler\IProfiler; use Psr\Log\LoggerInterface; @@ -56,37 +58,37 @@ class FactoryTest extends \Test\TestCase { public const UNAVAILABLE1 = '\\Test\\Memcache\\Test_Factory_Unavailable_Cache1'; public const UNAVAILABLE2 = '\\Test\\Memcache\\Test_Factory_Unavailable_Cache2'; - public function cacheAvailabilityProvider() { + public static function cacheAvailabilityProvider(): array { return [ [ // local and distributed available self::AVAILABLE1, self::AVAILABLE2, null, - self::AVAILABLE1, self::AVAILABLE2, \OC\Memcache\Factory::NULL_CACHE + self::AVAILABLE1, self::AVAILABLE2, Factory::NULL_CACHE ], [ // local and distributed null null, null, null, - \OC\Memcache\Factory::NULL_CACHE, \OC\Memcache\Factory::NULL_CACHE, \OC\Memcache\Factory::NULL_CACHE + Factory::NULL_CACHE, Factory::NULL_CACHE, Factory::NULL_CACHE ], [ // local available, distributed null (most common scenario) self::AVAILABLE1, null, null, - self::AVAILABLE1, self::AVAILABLE1, \OC\Memcache\Factory::NULL_CACHE + self::AVAILABLE1, self::AVAILABLE1, Factory::NULL_CACHE ], [ // locking cache available null, null, self::AVAILABLE1, - \OC\Memcache\Factory::NULL_CACHE, \OC\Memcache\Factory::NULL_CACHE, self::AVAILABLE1 + Factory::NULL_CACHE, Factory::NULL_CACHE, self::AVAILABLE1 ], [ // locking cache unavailable: no exception here in the factory null, null, self::UNAVAILABLE1, - \OC\Memcache\Factory::NULL_CACHE, \OC\Memcache\Factory::NULL_CACHE, \OC\Memcache\Factory::NULL_CACHE + Factory::NULL_CACHE, Factory::NULL_CACHE, Factory::NULL_CACHE ] ]; } - public function cacheUnavailableProvider() { + public static function cacheUnavailableProvider(): array { return [ [ // local available, distributed unavailable @@ -110,7 +112,7 @@ class FactoryTest extends \Test\TestCase { $expectedLocalCache, $expectedDistributedCache, $expectedLockingCache): void { $logger = $this->getMockBuilder(LoggerInterface::class)->getMock(); $profiler = $this->getMockBuilder(IProfiler::class)->getMock(); - $factory = new \OC\Memcache\Factory(fn () => 'abc', $logger, $profiler, $localCache, $distributedCache, $lockingCache); + $factory = new Factory(fn () => 'abc', $logger, $profiler, $localCache, $distributedCache, $lockingCache); $this->assertTrue(is_a($factory->createLocal(), $expectedLocalCache)); $this->assertTrue(is_a($factory->createDistributed(), $expectedDistributedCache)); $this->assertTrue(is_a($factory->createLocking(), $expectedLockingCache)); @@ -120,17 +122,17 @@ class FactoryTest extends \Test\TestCase { * @dataProvider cacheUnavailableProvider */ public function testCacheNotAvailableException($localCache, $distributedCache): void { - $this->expectException(\OCP\HintException::class); + $this->expectException(HintException::class); $logger = $this->getMockBuilder(LoggerInterface::class)->getMock(); $profiler = $this->getMockBuilder(IProfiler::class)->getMock(); - new \OC\Memcache\Factory(fn () => 'abc', $logger, $profiler, $localCache, $distributedCache); + new Factory(fn () => 'abc', $logger, $profiler, $localCache, $distributedCache); } public function testCreateInMemory(): void { $logger = $this->getMockBuilder(LoggerInterface::class)->getMock(); $profiler = $this->getMockBuilder(IProfiler::class)->getMock(); - $factory = new \OC\Memcache\Factory(fn () => 'abc', $logger, $profiler, null, null, null); + $factory = new Factory(fn () => 'abc', $logger, $profiler, null, null, null); $cache = $factory->createInMemory(); $cache->set('test', 48); diff --git a/tests/lib/Memcache/MemcachedTest.php b/tests/lib/Memcache/MemcachedTest.php index 346530e191d..61e2f42e3d6 100644 --- a/tests/lib/Memcache/MemcachedTest.php +++ b/tests/lib/Memcache/MemcachedTest.php @@ -8,6 +8,8 @@ namespace Test\Memcache; +use OC\Memcache\Memcached; + /** * @group Memcache * @group Memcached @@ -16,10 +18,10 @@ class MemcachedTest extends Cache { public static function setUpBeforeClass(): void { parent::setUpBeforeClass(); - if (!\OC\Memcache\Memcached::isAvailable()) { + if (!Memcached::isAvailable()) { self::markTestSkipped('The memcached extension is not available.'); } - $instance = new \OC\Memcache\Memcached(self::getUniqueID()); + $instance = new Memcached(self::getUniqueID()); if ($instance->set(self::getUniqueID(), self::getUniqueID()) === false) { self::markTestSkipped('memcached server seems to be down.'); } @@ -27,7 +29,7 @@ class MemcachedTest extends Cache { protected function setUp(): void { parent::setUp(); - $this->instance = new \OC\Memcache\Memcached($this->getUniqueID()); + $this->instance = new Memcached($this->getUniqueID()); } public function testClear(): void { diff --git a/tests/lib/Memcache/RedisTest.php b/tests/lib/Memcache/RedisTest.php index d76da03eb85..c1dcc954925 100644 --- a/tests/lib/Memcache/RedisTest.php +++ b/tests/lib/Memcache/RedisTest.php @@ -9,6 +9,8 @@ namespace Test\Memcache; use OC\Memcache\Redis; +use OCP\IConfig; +use OCP\Server; /** * @group Memcache @@ -23,24 +25,24 @@ class RedisTest extends Cache { public static function setUpBeforeClass(): void { parent::setUpBeforeClass(); - if (!\OC\Memcache\Redis::isAvailable()) { + if (!Redis::isAvailable()) { self::markTestSkipped('The redis extension is not available.'); } - if (\OC::$server->getConfig()->getSystemValue('redis', []) === []) { + if (Server::get(IConfig::class)->getSystemValue('redis', []) === []) { self::markTestSkipped('Redis not configured in config.php'); } $errorOccurred = false; set_error_handler( - function ($errno, $errstr) { + function ($errno, $errstr): void { throw new \RuntimeException($errstr, 123456789); }, E_WARNING ); $instance = null; try { - $instance = new \OC\Memcache\Redis(self::getUniqueID()); + $instance = new Redis(self::getUniqueID()); } catch (\RuntimeException $e) { $errorOccurred = $e->getCode() === 123456789 ? $e->getMessage() : false; } @@ -60,11 +62,11 @@ class RedisTest extends Cache { protected function setUp(): void { parent::setUp(); - $this->instance = new \OC\Memcache\Redis($this->getUniqueID()); + $this->instance = new Redis($this->getUniqueID()); } public function testScriptHashes(): void { - foreach (\OC\Memcache\Redis::LUA_SCRIPTS as $script) { + foreach (Redis::LUA_SCRIPTS as $script) { $this->assertEquals(sha1($script[0]), $script[1]); } } diff --git a/tests/lib/MemoryInfoTest.php b/tests/lib/MemoryInfoTest.php index 2477de2d799..a81a5ebcaeb 100644 --- a/tests/lib/MemoryInfoTest.php +++ b/tests/lib/MemoryInfoTest.php @@ -37,12 +37,7 @@ class MemoryInfoTest extends TestCase { ini_set('memory_limit', $this->iniSettingBeforeTest); } - /** - * Provides test data. - * - * @return array - */ - public function getMemoryLimitTestData(): array { + public static function getMemoryLimitTestData(): array { return [ 'unlimited' => ['-1', -1,], '524288000 bytes' => ['524288000', 524288000,], @@ -65,12 +60,7 @@ class MemoryInfoTest extends TestCase { self::assertEquals($expected, $memoryInfo->getMemoryLimit()); } - /** - * Provides sufficient memory limit test data. - * - * @return array - */ - public function getSufficientMemoryTestData(): array { + public static function getSufficientMemoryTestData(): array { return [ 'unlimited' => [-1, true,], '512M' => [512 * 1024 * 1024, true,], @@ -85,12 +75,11 @@ class MemoryInfoTest extends TestCase { * @param int $memoryLimit The memory limit * @param bool $expected If the memory limit is sufficient. * @dataProvider getSufficientMemoryTestData - * @return void */ public function testIsMemoryLimitSufficient(int $memoryLimit, bool $expected): void { /* @var MemoryInfo|MockObject $memoryInfo */ $memoryInfo = $this->getMockBuilder(MemoryInfo::class) - ->setMethods(['getMemoryLimit',]) + ->onlyMethods(['getMemoryLimit',]) ->getMock(); $memoryInfo diff --git a/tests/lib/Migration/BackgroundRepairTest.php b/tests/lib/Migration/BackgroundRepairTest.php index 25ea6088072..b85bd4262e0 100644 --- a/tests/lib/Migration/BackgroundRepairTest.php +++ b/tests/lib/Migration/BackgroundRepairTest.php @@ -54,22 +54,15 @@ class BackgroundRepairTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->jobList = $this->getMockBuilder(JobList::class) - ->disableOriginalConstructor() - ->getMock(); - $this->logger = $this->getMockBuilder(LoggerInterface::class) - ->disableOriginalConstructor() - ->getMock(); + $this->jobList = $this->createMock(JobList::class); + $this->logger = $this->createMock(LoggerInterface::class); $this->dispatcher = $this->createMock(IEventDispatcher::class); $this->time = $this->createMock(ITimeFactory::class); $this->time->method('getTime') ->willReturn(999999); $this->appManager = $this->createMock(IAppManager::class); $this->repair = new Repair($this->dispatcher, $this->logger); - $this->job = $this->getMockBuilder(BackgroundRepair::class) - ->setConstructorArgs([$this->repair, $this->time, $this->logger, $this->jobList, $this->appManager]) - ->setMethods(['loadApp']) - ->getMock(); + $this->job = new BackgroundRepair($this->repair, $this->time, $this->logger, $this->jobList, $this->appManager); } public function testNoArguments(): void { diff --git a/tests/lib/NaturalSortTest.php b/tests/lib/NaturalSortTest.php index 3a07c5ceb66..dcf3da3d99a 100644 --- a/tests/lib/NaturalSortTest.php +++ b/tests/lib/NaturalSortTest.php @@ -7,6 +7,9 @@ namespace Test; +use OC\NaturalSort; +use OC\NaturalSort_DefaultCollator; + class NaturalSortTest extends \Test\TestCase { /** * @dataProvider naturalSortDataProvider @@ -16,7 +19,7 @@ class NaturalSortTest extends \Test\TestCase { $this->markTestSkipped('The intl module is not available, natural sorting might not work as expected.'); return; } - $comparator = \OC\NaturalSort::getInstance(); + $comparator = NaturalSort::getInstance(); usort($array, [$comparator, 'compare']); $this->assertEquals($sorted, $array); } @@ -25,7 +28,7 @@ class NaturalSortTest extends \Test\TestCase { * @dataProvider defaultCollatorDataProvider */ public function testDefaultCollatorCompare($array, $sorted): void { - $comparator = new \OC\NaturalSort(new \OC\NaturalSort_DefaultCollator()); + $comparator = new NaturalSort(new NaturalSort_DefaultCollator()); usort($array, [$comparator, 'compare']); $this->assertEquals($sorted, $array); } @@ -35,7 +38,7 @@ class NaturalSortTest extends \Test\TestCase { * Must provide the same result as in core/js/tests/specs/coreSpec.js * @return array test cases */ - public function naturalSortDataProvider() { + public static function naturalSortDataProvider(): array { return [ // different casing [ @@ -189,7 +192,7 @@ class NaturalSortTest extends \Test\TestCase { * Must provide the same result as in core/js/tests/specs/coreSpec.js * @return array test cases */ - public function defaultCollatorDataProvider() { + public static function defaultCollatorDataProvider(): array { return [ // different casing [ diff --git a/tests/lib/NavigationManagerTest.php b/tests/lib/NavigationManagerTest.php index 48cfa972f2b..9ec1081bd97 100644 --- a/tests/lib/NavigationManagerTest.php +++ b/tests/lib/NavigationManagerTest.php @@ -20,6 +20,7 @@ use OCP\IUser; use OCP\IUserSession; use OCP\L10N\IFactory; use OCP\Navigation\Events\LoadAdditionalEntriesEvent; +use OCP\Util; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; @@ -68,10 +69,10 @@ class NavigationManagerTest extends TestCase { $this->navigationManager->clear(false); } - public function addArrayData() { + public static function addArrayData(): array { return [ [ - 'entry id' => [ + 'entry' => [ 'id' => 'entry id', 'name' => 'link text', 'order' => 1, @@ -81,7 +82,7 @@ class NavigationManagerTest extends TestCase { 'classes' => '', 'unread' => 0 ], - 'entry id2' => [ + 'expectedEntry' => [ 'id' => 'entry id', 'name' => 'link text', 'order' => 1, @@ -94,7 +95,7 @@ class NavigationManagerTest extends TestCase { ] ], [ - 'entry id' => [ + 'entry' => [ 'id' => 'entry id', 'name' => 'link text', 'order' => 1, @@ -103,7 +104,7 @@ class NavigationManagerTest extends TestCase { 'active' => true, 'unread' => 0, ], - 'entry id2' => [ + 'expectedEntry' => [ 'id' => 'entry id', 'name' => 'link text', 'order' => 1, @@ -265,14 +266,14 @@ class NavigationManagerTest extends TestCase { $this->navigationManager->clear(); $this->dispatcher->expects($this->once()) ->method('dispatchTyped') - ->willReturnCallback(function ($event) { + ->willReturnCallback(function ($event): void { $this->assertInstanceOf(LoadAdditionalEntriesEvent::class, $event); }); $entries = $this->navigationManager->getAll('all'); $this->assertEquals($expected, $entries); } - public function providesNavigationConfig() { + public static function providesNavigationConfig(): array { $apps = [ 'core_apps' => [ 'id' => 'core_apps', @@ -323,7 +324,7 @@ class NavigationManagerTest extends TestCase { 'logout' => [ 'id' => 'logout', 'order' => 99999, - 'href' => 'https://example.com/logout?requesttoken=' . urlencode(\OCP\Util::callRegister()), + 'href' => 'https://example.com/logout?requesttoken=' . urlencode(Util::callRegister()), 'icon' => '/apps/core/img/actions/logout.svg', 'name' => 'Log out', 'active' => false, @@ -572,7 +573,7 @@ class NavigationManagerTest extends TestCase { $this->navigationManager->clear(); $this->dispatcher->expects($this->once()) ->method('dispatchTyped') - ->willReturnCallback(function ($event) { + ->willReturnCallback(function ($event): void { $this->assertInstanceOf(LoadAdditionalEntriesEvent::class, $event); }); $entries = $this->navigationManager->getAll(); diff --git a/tests/lib/Net/HostnameClassifierTest.php b/tests/lib/Net/HostnameClassifierTest.php index 766246ed8ad..5d80da01e46 100644 --- a/tests/lib/Net/HostnameClassifierTest.php +++ b/tests/lib/Net/HostnameClassifierTest.php @@ -21,7 +21,7 @@ class HostnameClassifierTest extends TestCase { $this->classifier = new HostnameClassifier(); } - public function localHostnamesData():array { + public static function localHostnamesData(): array { return [ ['localhost'], ['localHost'], @@ -41,7 +41,7 @@ class HostnameClassifierTest extends TestCase { self::assertTrue($isLocal); } - public function publicHostnamesData(): array { + public static function publicHostnamesData(): array { return [ ['example.com'], ['example.net'], diff --git a/tests/lib/Net/IpAddressClassifierTest.php b/tests/lib/Net/IpAddressClassifierTest.php index 803be00f740..be0b7e52fe0 100644 --- a/tests/lib/Net/IpAddressClassifierTest.php +++ b/tests/lib/Net/IpAddressClassifierTest.php @@ -21,7 +21,7 @@ class IpAddressClassifierTest extends TestCase { $this->classifier = new IpAddressClassifier(); } - public function publicIpAddressData(): array { + public static function publicIpAddressData(): array { return [ ['8.8.8.8'], ['8.8.4.4'], @@ -39,7 +39,7 @@ class IpAddressClassifierTest extends TestCase { self::assertFalse($isLocal); } - public function localIpAddressData(): array { + public static function localIpAddressData(): array { return [ ['192.168.0.1'], ['fe80::200:5aee:feaa:20a2'], diff --git a/tests/lib/Notification/ActionTest.php b/tests/lib/Notification/ActionTest.php index 3ae4b1db7e7..241e08048a0 100644 --- a/tests/lib/Notification/ActionTest.php +++ b/tests/lib/Notification/ActionTest.php @@ -20,7 +20,7 @@ class ActionTest extends TestCase { $this->action = new Action(); } - public function dataSetLabel() { + public static function dataSetLabel(): array { return [ ['test1'], [str_repeat('a', 1)], @@ -38,7 +38,7 @@ class ActionTest extends TestCase { $this->assertSame($label, $this->action->getLabel()); } - public function dataSetLabelInvalid() { + public static function dataSetLabelInvalid(): array { return [ [''], [str_repeat('a', 33)], @@ -56,7 +56,7 @@ class ActionTest extends TestCase { $this->action->setLabel($label); } - public function dataSetParsedLabel() { + public static function dataSetParsedLabel(): array { return [ ['test1'], [str_repeat('a', 1)], @@ -74,7 +74,7 @@ class ActionTest extends TestCase { $this->assertSame($label, $this->action->getParsedLabel()); } - public function dataSetParsedLabelInvalid() { + public static function dataSetParsedLabelInvalid(): array { return [ [''], ]; @@ -91,7 +91,7 @@ class ActionTest extends TestCase { $this->action->setParsedLabel($label); } - public function dataSetLink() { + public static function dataSetLink(): array { return [ ['test1', 'GET'], ['test2', 'POST'], @@ -112,7 +112,7 @@ class ActionTest extends TestCase { $this->assertSame($type, $this->action->getRequestType()); } - public function dataSetLinkInvalid() { + public static function dataSetLinkInvalid(): array { return [ // Invalid link ['', 'GET'], @@ -135,7 +135,7 @@ class ActionTest extends TestCase { $this->action->setLink($link, $type); } - public function dataSetPrimary() { + public static function dataSetPrimary(): array { return [ [true], [false], diff --git a/tests/lib/Notification/ManagerTest.php b/tests/lib/Notification/ManagerTest.php index 2a85316d7c4..418d642317e 100644 --- a/tests/lib/Notification/ManagerTest.php +++ b/tests/lib/Notification/ManagerTest.php @@ -153,7 +153,7 @@ class ManagerTest extends TestCase { $this->coordinator, $this->richTextFormatter, ]) - ->setMethods(['getApps']) + ->onlyMethods(['getApps']) ->getMock(); $manager->expects($this->once()) @@ -185,7 +185,7 @@ class ManagerTest extends TestCase { $this->coordinator, $this->richTextFormatter, ]) - ->setMethods(['getApps']) + ->onlyMethods(['getApps']) ->getMock(); $manager->expects($this->never()) @@ -210,7 +210,7 @@ class ManagerTest extends TestCase { $this->coordinator, $this->richTextFormatter, ]) - ->setMethods(['getApps']) + ->onlyMethods(['getApps']) ->getMock(); $manager->expects($this->once()) @@ -236,7 +236,7 @@ class ManagerTest extends TestCase { $this->coordinator, $this->richTextFormatter, ]) - ->setMethods(['getApps']) + ->onlyMethods(['getApps']) ->getMock(); $manager->expects($this->once()) @@ -246,7 +246,7 @@ class ManagerTest extends TestCase { $manager->getCount($notification); } - public function dataIsFairUseOfFreePushService(): array { + public static function dataIsFairUseOfFreePushService(): array { return [ [true, 999, true], [true, 1000, true], diff --git a/tests/lib/Notification/NotificationTest.php b/tests/lib/Notification/NotificationTest.php index 957d74233be..93b1746be3c 100644 --- a/tests/lib/Notification/NotificationTest.php +++ b/tests/lib/Notification/NotificationTest.php @@ -30,7 +30,7 @@ class NotificationTest extends TestCase { $this->notification = new Notification($this->validator, $this->richTextFormatter); } - protected function dataValidString($maxLength) { + protected static function dataValidString($maxLength): array { $dataSets = [ ['test1'], ['1564'], @@ -42,7 +42,7 @@ class NotificationTest extends TestCase { return $dataSets; } - protected function dataInvalidString($maxLength) { + protected static function dataInvalidString($maxLength): array { $dataSets = [ [''] ]; @@ -52,8 +52,8 @@ class NotificationTest extends TestCase { return $dataSets; } - public function dataSetApp() { - return $this->dataValidString(32); + public static function dataSetApp(): array { + return self::dataValidString(32); } /** @@ -66,8 +66,8 @@ class NotificationTest extends TestCase { $this->assertSame($app, $this->notification->getApp()); } - public function dataSetAppInvalid() { - return $this->dataInvalidString(32); + public static function dataSetAppInvalid(): array { + return self::dataInvalidString(32); } /** @@ -82,8 +82,8 @@ class NotificationTest extends TestCase { } - public function dataSetUser() { - return $this->dataValidString(64); + public static function dataSetUser(): array { + return self::dataValidString(64); } /** @@ -96,8 +96,8 @@ class NotificationTest extends TestCase { $this->assertSame($user, $this->notification->getUser()); } - public function dataSetUserInvalid() { - return $this->dataInvalidString(64); + public static function dataSetUserInvalid(): array { + return self::dataInvalidString(64); } /** @@ -111,7 +111,7 @@ class NotificationTest extends TestCase { $this->notification->setUser($user); } - public function dataSetDateTime() { + public static function dataSetDateTime(): array { $past = new \DateTime(); $past->sub(new \DateInterval('P1Y')); $current = new \DateTime(); @@ -135,7 +135,7 @@ class NotificationTest extends TestCase { $this->assertSame($dateTime, $this->notification->getDateTime()); } - public function dataSetDateTimeZero() { + public static function dataSetDateTimeZero(): array { $nineTeenSeventy = new \DateTime(); $nineTeenSeventy->setTimestamp(0); return [ @@ -155,7 +155,7 @@ class NotificationTest extends TestCase { $this->notification->setDateTime($dateTime); } - public function dataSetObject() { + public static function dataSetObject(): array { return [ ['a', '21'], [str_repeat('a', 64), '42'], @@ -175,11 +175,11 @@ class NotificationTest extends TestCase { $this->assertSame($id, $this->notification->getObjectId()); } - public function dataSetObjectTypeInvalid() { - return $this->dataInvalidString(64); + public static function dataSetObjectTypeInvalid(): array { + return self::dataInvalidString(64); } - public function dataSetObjectIdInvalid() { + public static function dataSetObjectIdInvalid(): array { return [ [''], [str_repeat('a', 64 + 1)], @@ -198,7 +198,7 @@ class NotificationTest extends TestCase { $this->notification->setObject('object', $id); } - public function dataSetSubject() { + public static function dataSetSubject(): array { return [ ['a', []], [str_repeat('a', 64), [str_repeat('a', 160)]], @@ -219,8 +219,8 @@ class NotificationTest extends TestCase { $this->assertSame($parameters, $this->notification->getSubjectParameters()); } - public function dataSetSubjectInvalidSubject() { - return $this->dataInvalidString(64); + public static function dataSetSubjectInvalidSubject(): array { + return self::dataInvalidString(64); } /** @@ -234,8 +234,8 @@ class NotificationTest extends TestCase { $this->notification->setSubject($subject, []); } - public function dataSetParsedSubject() { - return $this->dataValidString(false); + public static function dataSetParsedSubject(): array { + return self::dataValidString(false); } /** @@ -248,8 +248,8 @@ class NotificationTest extends TestCase { $this->assertSame($subject, $this->notification->getParsedSubject()); } - public function dataSetParsedSubjectInvalid() { - return $this->dataInvalidString(false); + public static function dataSetParsedSubjectInvalid(): array { + return self::dataInvalidString(false); } /** @@ -263,7 +263,7 @@ class NotificationTest extends TestCase { $this->notification->setParsedSubject($subject); } - public function dataSetMessage() { + public static function dataSetMessage(): array { return [ ['a', []], [str_repeat('a', 64), [str_repeat('a', 160)]], @@ -284,8 +284,8 @@ class NotificationTest extends TestCase { $this->assertSame($parameters, $this->notification->getMessageParameters()); } - public function dataSetMessageInvalidMessage() { - return $this->dataInvalidString(64); + public static function dataSetMessageInvalidMessage(): array { + return self::dataInvalidString(64); } /** @@ -299,8 +299,8 @@ class NotificationTest extends TestCase { $this->notification->setMessage($message, []); } - public function dataSetParsedMessage() { - return $this->dataValidString(false); + public static function dataSetParsedMessage(): array { + return self::dataValidString(false); } /** @@ -313,8 +313,8 @@ class NotificationTest extends TestCase { $this->assertSame($message, $this->notification->getParsedMessage()); } - public function dataSetParsedMessageInvalid() { - return $this->dataInvalidString(false); + public static function dataSetParsedMessageInvalid(): array { + return self::dataInvalidString(false); } /** @@ -328,8 +328,8 @@ class NotificationTest extends TestCase { $this->notification->setParsedMessage($message); } - public function dataSetLink() { - return $this->dataValidString(4000); + public static function dataSetLink(): array { + return self::dataValidString(4000); } /** @@ -342,8 +342,8 @@ class NotificationTest extends TestCase { $this->assertSame($link, $this->notification->getLink()); } - public function dataSetLinkInvalid() { - return $this->dataInvalidString(4000); + public static function dataSetLinkInvalid(): array { + return self::dataInvalidString(4000); } /** @@ -357,8 +357,8 @@ class NotificationTest extends TestCase { $this->notification->setLink($link); } - public function dataSetIcon() { - return $this->dataValidString(4000); + public static function dataSetIcon(): array { + return self::dataValidString(4000); } /** @@ -371,8 +371,8 @@ class NotificationTest extends TestCase { $this->assertSame($icon, $this->notification->getIcon()); } - public function dataSetIconInvalid() { - return $this->dataInvalidString(4000); + public static function dataSetIconInvalid(): array { + return self::dataInvalidString(4000); } /** @@ -508,7 +508,7 @@ class NotificationTest extends TestCase { $this->assertEquals([$action2, $action1, $action1], $this->notification->getParsedActions()); } - public function dataIsValid() { + public static function dataIsValid(): array { return [ [false, '', false], [true, '', false], @@ -527,7 +527,7 @@ class NotificationTest extends TestCase { public function testIsValid($isValidCommon, $subject, $expected): void { /** @var \OCP\Notification\INotification|\PHPUnit\Framework\MockObject\MockObject $notification */ $notification = $this->getMockBuilder(Notification::class) - ->setMethods([ + ->onlyMethods([ 'isValidCommon', 'getSubject', 'getParsedSubject', @@ -560,7 +560,7 @@ class NotificationTest extends TestCase { public function testIsParsedValid($isValidCommon, $subject, $expected): void { /** @var \OCP\Notification\INotification|\PHPUnit\Framework\MockObject\MockObject $notification */ $notification = $this->getMockBuilder(Notification::class) - ->setMethods([ + ->onlyMethods([ 'isValidCommon', 'getParsedSubject', 'getSubject', @@ -583,7 +583,7 @@ class NotificationTest extends TestCase { $this->assertEquals($expected, $notification->isValidParsed()); } - public function dataIsValidCommon() { + public static function dataIsValidCommon(): array { return [ ['', '', 0, '', '', false], ['app', '', 0, '', '', false], @@ -607,7 +607,7 @@ class NotificationTest extends TestCase { public function testIsValidCommon($app, $user, $timestamp, $objectType, $objectId, $expected): void { /** @var \OCP\Notification\INotification|\PHPUnit\Framework\MockObject\MockObject $notification */ $notification = $this->getMockBuilder(Notification::class) - ->setMethods([ + ->onlyMethods([ 'getApp', 'getUser', 'getDateTime', diff --git a/tests/lib/OCS/ApiHelperTest.php b/tests/lib/OCS/ApiHelperTest.php index fdbc1f4c538..93de6b22af7 100644 --- a/tests/lib/OCS/ApiHelperTest.php +++ b/tests/lib/OCS/ApiHelperTest.php @@ -14,10 +14,7 @@ use OC\OCS\ApiHelper; use OCP\IRequest; class ApiHelperTest extends \Test\TestCase { - /** - * @return array - */ - public function versionDataScriptNameProvider(): array { + public static function versionDataScriptNameProvider(): array { return [ // Valid script name [ diff --git a/tests/lib/OCS/DiscoveryServiceTest.php b/tests/lib/OCS/DiscoveryServiceTest.php index 3db3163e11d..2fce12ee3c0 100644 --- a/tests/lib/OCS/DiscoveryServiceTest.php +++ b/tests/lib/OCS/DiscoveryServiceTest.php @@ -45,7 +45,7 @@ class DiscoveryServiceTest extends TestCase { $this->assertSame($expected, $result); } - public function dataTestIsSafeUrl() { + public static function dataTestIsSafeUrl(): array { return [ ['api/ocs/v1.php/foo', true], ['/api/ocs/v1.php/foo', true], @@ -69,7 +69,7 @@ class DiscoveryServiceTest extends TestCase { $this->assertSame($expected, $result); } - public function dataTestGetEndpoints() { + public static function dataTestGetEndpoints(): array { return [ [['services' => ['myService' => ['endpoints' => []]]], 'myService', []], [['services' => ['myService' => ['endpoints' => ['foo' => '/bar']]]], 'myService', ['foo' => '/bar']], diff --git a/tests/lib/OCS/ProviderTest.php b/tests/lib/OCS/ProviderTest.php index ce028ce764a..ca7ba254ab9 100644 --- a/tests/lib/OCS/ProviderTest.php +++ b/tests/lib/OCS/ProviderTest.php @@ -8,6 +8,7 @@ namespace Test\OCS; use OC\OCS\Provider; +use OCP\AppFramework\Http\JSONResponse; class ProviderTest extends \Test\TestCase { /** @var \OCP\IRequest */ @@ -36,7 +37,7 @@ class ProviderTest extends \Test\TestCase { ['provisioning_api', null, false], ]); - $expected = new \OCP\AppFramework\Http\JSONResponse( + $expected = new JSONResponse( [ 'version' => 2, 'services' => [ @@ -66,7 +67,7 @@ class ProviderTest extends \Test\TestCase { ['provisioning_api', null, false], ]); - $expected = new \OCP\AppFramework\Http\JSONResponse( + $expected = new JSONResponse( [ 'version' => 2, 'services' => [ @@ -109,7 +110,7 @@ class ProviderTest extends \Test\TestCase { ['provisioning_api', null, false], ]); - $expected = new \OCP\AppFramework\Http\JSONResponse( + $expected = new JSONResponse( [ 'version' => 2, 'services' => [ @@ -142,7 +143,7 @@ class ProviderTest extends \Test\TestCase { ->method('isEnabledForUser') ->willReturn(true); - $expected = new \OCP\AppFramework\Http\JSONResponse( + $expected = new JSONResponse( [ 'version' => 2, 'services' => [ diff --git a/tests/lib/Preview/BackgroundCleanupJobTest.php b/tests/lib/Preview/BackgroundCleanupJobTest.php index cecb4a7a212..ab904f2b499 100644 --- a/tests/lib/Preview/BackgroundCleanupJobTest.php +++ b/tests/lib/Preview/BackgroundCleanupJobTest.php @@ -7,11 +7,14 @@ namespace Test\Preview; +use OC\Files\Storage\Temporary; use OC\Preview\BackgroundCleanupJob; use OC\Preview\Storage\Root; use OC\PreviewManager; +use OC\SystemConfig; use OCP\App\IAppManager; use OCP\AppFramework\Utility\ITimeFactory; +use OCP\Files\AppData\IAppDataFactory; use OCP\Files\File; use OCP\Files\IMimeTypeLoader; use OCP\Files\IRootFolder; @@ -46,7 +49,7 @@ class BackgroundCleanupJobTest extends \Test\TestCase { $this->userId = $this->getUniqueID(); $user = $this->createUser($this->userId, $this->userId); - $storage = new \OC\Files\Storage\Temporary([]); + $storage = new Temporary([]); $this->registerMount($this->userId, $storage, ''); $this->loginAsUser($this->userId); @@ -77,8 +80,8 @@ class BackgroundCleanupJobTest extends \Test\TestCase { private function getRoot(): Root { return new Root( - \OC::$server->get(IRootFolder::class), - \OC::$server->getSystemConfig() + Server::get(IRootFolder::class), + Server::get(SystemConfig::class) ); } @@ -173,7 +176,7 @@ class BackgroundCleanupJobTest extends \Test\TestCase { $this->markTestSkipped('old previews are not supported for sharded setups'); return; } - $appdata = \OC::$server->getAppDataDir('preview'); + $appdata = Server::get(IAppDataFactory::class)->get('preview'); $f1 = $appdata->newFolder('123456781'); $f1->newFile('foo.jpg', 'foo'); @@ -189,7 +192,7 @@ class BackgroundCleanupJobTest extends \Test\TestCase { $appdata->getFolder('/')->newFile('not-a-directory', 'foo'); $appdata->getFolder('/')->newFile('133742', 'bar'); - $appdata = \OC::$server->getAppDataDir('preview'); + $appdata = Server::get(IAppDataFactory::class)->get('preview'); // AppData::getDirectoryListing filters all non-folders $this->assertSame(3, count($appdata->getDirectoryListing())); try { @@ -206,7 +209,7 @@ class BackgroundCleanupJobTest extends \Test\TestCase { $job = new BackgroundCleanupJob($this->timeFactory, $this->connection, $this->getRoot(), $this->mimeTypeLoader, true); $job->run([]); - $appdata = \OC::$server->getAppDataDir('preview'); + $appdata = Server::get(IAppDataFactory::class)->get('preview'); // Check if the files created above are still present // Remember: AppData::getDirectoryListing filters all non-folders diff --git a/tests/lib/Preview/BitmapTest.php b/tests/lib/Preview/BitmapTest.php index c4f3f8d3cf5..f442ae73b2e 100644 --- a/tests/lib/Preview/BitmapTest.php +++ b/tests/lib/Preview/BitmapTest.php @@ -7,6 +7,8 @@ namespace Test\Preview; +use OC\Preview\Postscript; + /** * Class BitmapTest * @@ -22,6 +24,6 @@ class BitmapTest extends Provider { $this->imgPath = $this->prepareTestFile($fileName, \OC::$SERVERROOT . '/tests/data/' . $fileName); $this->width = 2400; $this->height = 1707; - $this->provider = new \OC\Preview\Postscript; + $this->provider = new Postscript; } } diff --git a/tests/lib/Preview/GeneratorTest.php b/tests/lib/Preview/GeneratorTest.php index 607127a6495..84ffe6662c7 100644 --- a/tests/lib/Preview/GeneratorTest.php +++ b/tests/lib/Preview/GeneratorTest.php @@ -343,7 +343,7 @@ class GeneratorTest extends \Test\TestCase { return $image; } - public function dataSize() { + public static function dataSize(): array { return [ [1024, 2048, 512, 512, false, IPreview::MODE_FILL, 256, 512], [1024, 2048, 512, 512, false, IPreview::MODE_COVER, 512, 1024], diff --git a/tests/lib/Preview/HEICTest.php b/tests/lib/Preview/HEICTest.php index 5df7b63dd03..61dede00e6b 100644 --- a/tests/lib/Preview/HEICTest.php +++ b/tests/lib/Preview/HEICTest.php @@ -6,6 +6,8 @@ namespace Test\Preview; +use OC\Preview\HEIC; + /** * Class BitmapTest * @@ -24,7 +26,7 @@ class HEICTest extends Provider { $this->imgPath = $this->prepareTestFile($fileName, \OC::$SERVERROOT . '/tests/data/' . $fileName); $this->width = 1680; $this->height = 1050; - $this->provider = new \OC\Preview\HEIC; + $this->provider = new HEIC; } } } diff --git a/tests/lib/Preview/ImageTest.php b/tests/lib/Preview/ImageTest.php index f4b8e7e1dd4..03f3403b1b3 100644 --- a/tests/lib/Preview/ImageTest.php +++ b/tests/lib/Preview/ImageTest.php @@ -7,6 +7,8 @@ namespace Test\Preview; +use OC\Preview\JPEG; + /** * Class ImageTest * @@ -22,6 +24,6 @@ class ImageTest extends Provider { $this->imgPath = $this->prepareTestFile($fileName, \OC::$SERVERROOT . '/tests/data/' . $fileName); $this->width = 1680; $this->height = 1050; - $this->provider = new \OC\Preview\JPEG(); + $this->provider = new JPEG(); } } diff --git a/tests/lib/Preview/MP3Test.php b/tests/lib/Preview/MP3Test.php index 6f40b862b7b..3f1c9aff61c 100644 --- a/tests/lib/Preview/MP3Test.php +++ b/tests/lib/Preview/MP3Test.php @@ -7,6 +7,8 @@ namespace Test\Preview; +use OC\Preview\MP3; + /** * Class MP3Test * @@ -22,6 +24,6 @@ class MP3Test extends Provider { $this->imgPath = $this->prepareTestFile($fileName, \OC::$SERVERROOT . '/tests/data/' . $fileName); $this->width = 200; $this->height = 200; - $this->provider = new \OC\Preview\MP3; + $this->provider = new MP3; } } diff --git a/tests/lib/Preview/MovieBrokenStuckFfmpegTest.php b/tests/lib/Preview/MovieBrokenStuckFfmpegTest.php new file mode 100644 index 00000000000..e66d5e64649 --- /dev/null +++ b/tests/lib/Preview/MovieBrokenStuckFfmpegTest.php @@ -0,0 +1,20 @@ +<?php + +declare(strict_types=1); +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace Test\Preview; + +/** + * Class MovieTest + * + * @group DB + * + * @package Test\Preview + */ +class MovieBrokenStuckFfmpegTest extends MovieTest { + protected string $fileName = 'broken-video.webm'; +} diff --git a/tests/lib/Preview/MovieTest.php b/tests/lib/Preview/MovieTest.php index b8946ad4c5e..de7ff45988c 100644 --- a/tests/lib/Preview/MovieTest.php +++ b/tests/lib/Preview/MovieTest.php @@ -7,6 +7,7 @@ namespace Test\Preview; +use OC\Preview\Movie; use OCP\IBinaryFinder; use OCP\Server; @@ -18,6 +19,10 @@ use OCP\Server; * @package Test\Preview */ class MovieTest extends Provider { + protected string $fileName = 'testimage.mp4'; + protected int $width = 560; + protected int $height = 320; + protected function setUp(): void { $binaryFinder = Server::get(IBinaryFinder::class); $movieBinary = $binaryFinder->findBinaryPath('avconv'); @@ -28,11 +33,8 @@ class MovieTest extends Provider { if (is_string($movieBinary)) { parent::setUp(); - $fileName = 'testimage.mp4'; - $this->imgPath = $this->prepareTestFile($fileName, \OC::$SERVERROOT . '/tests/data/' . $fileName); - $this->width = 560; - $this->height = 320; - $this->provider = new \OC\Preview\Movie(['movieBinary' => $movieBinary]); + $this->imgPath = $this->prepareTestFile($this->fileName, \OC::$SERVERROOT . '/tests/data/' . $this->fileName); + $this->provider = new Movie(['movieBinary' => $movieBinary]); } else { $this->markTestSkipped('No Movie provider present'); } diff --git a/tests/lib/Preview/OfficeTest.php b/tests/lib/Preview/OfficeTest.php index c9019d017a3..471ff0d2367 100644 --- a/tests/lib/Preview/OfficeTest.php +++ b/tests/lib/Preview/OfficeTest.php @@ -7,6 +7,10 @@ namespace Test\Preview; +use OC\Preview\OpenDocument; +use OCP\IBinaryFinder; +use OCP\Server; + /** * Class OfficeTest * @@ -16,17 +20,18 @@ namespace Test\Preview; */ class OfficeTest extends Provider { protected function setUp(): void { - $libreofficeBinary = \OC_Helper::findBinaryPath('libreoffice'); - $openofficeBinary = ($libreofficeBinary) ? null : \OC_Helper::findBinaryPath('openoffice'); + $binaryFinder = Server::get(IBinaryFinder::class); + $libreofficeBinary = $binaryFinder->findBinaryPath('libreoffice'); + $openofficeBinary = $libreofficeBinary === false ? $binaryFinder->findBinaryPath('openoffice') : false; - if ($libreofficeBinary || $openofficeBinary) { + if ($libreofficeBinary !== false || $openofficeBinary !== false) { parent::setUp(); $fileName = 'testimage.odt'; $this->imgPath = $this->prepareTestFile($fileName, \OC::$SERVERROOT . '/tests/data/' . $fileName); $this->width = 595; $this->height = 842; - $this->provider = new \OC\Preview\OpenDocument; + $this->provider = new OpenDocument; } else { $this->markTestSkipped('No Office provider present'); } diff --git a/tests/lib/Preview/Provider.php b/tests/lib/Preview/Provider.php index a7f55151354..daa069483fd 100644 --- a/tests/lib/Preview/Provider.php +++ b/tests/lib/Preview/Provider.php @@ -8,9 +8,15 @@ namespace Test\Preview; +use OC\Files\Filesystem; use OC\Files\Node\File; +use OC\Files\Storage\Storage; +use OC\Files\Storage\Temporary; +use OC\Files\View; +use OC\Preview\TXT; use OCP\Files\IRootFolder; use OCP\IUserManager; +use OCP\Server; abstract class Provider extends \Test\TestCase { protected string $imgPath; @@ -22,13 +28,13 @@ abstract class Provider extends \Test\TestCase { protected int $maxHeight = 1024; protected bool $scalingUp = false; protected string $userId; - protected \OC\Files\View $rootView; - protected \OC\Files\Storage\Storage $storage; + protected View $rootView; + protected Storage $storage; protected function setUp(): void { parent::setUp(); - $userManager = \OCP\Server::get(IUserManager::class); + $userManager = Server::get(IUserManager::class); $userManager->clearBackends(); $backend = new \Test\Util\User\Dummy(); $userManager->registerBackend($backend); @@ -37,10 +43,10 @@ abstract class Provider extends \Test\TestCase { $backend->createUser($userId, $userId); $this->loginAsUser($userId); - $this->storage = new \OC\Files\Storage\Temporary([]); - \OC\Files\Filesystem::mount($this->storage, [], '/' . $userId . '/'); + $this->storage = new Temporary([]); + Filesystem::mount($this->storage, [], '/' . $userId . '/'); - $this->rootView = new \OC\Files\View(''); + $this->rootView = new View(''); $this->rootView->mkdir('/' . $userId); $this->rootView->mkdir('/' . $userId . '/files'); @@ -84,7 +90,7 @@ abstract class Provider extends \Test\TestCase { $preview = $this->getPreview($this->provider); // The TXT provider uses the max dimensions to create its canvas, // so the ratio will always be the one of the max dimension canvas - if (!$this->provider instanceof \OC\Preview\TXT) { + if (!$this->provider instanceof TXT) { $this->doesRatioMatch($preview, $ratio); } $this->doesPreviewFit($preview); @@ -117,7 +123,7 @@ abstract class Provider extends \Test\TestCase { * @return bool|\OCP\IImage */ private function getPreview($provider) { - $file = new File(\OC::$server->get(IRootFolder::class), $this->rootView, $this->imgPath); + $file = new File(Server::get(IRootFolder::class), $this->rootView, $this->imgPath); $preview = $provider->getThumbnail($file, $this->maxWidth, $this->maxHeight, $this->scalingUp); if (get_class($this) === BitmapTest::class && $preview === null) { diff --git a/tests/lib/Preview/SVGTest.php b/tests/lib/Preview/SVGTest.php index 6a0e93e5f79..418ac33c3d6 100644 --- a/tests/lib/Preview/SVGTest.php +++ b/tests/lib/Preview/SVGTest.php @@ -7,6 +7,9 @@ namespace Test\Preview; +use OC\Preview\SVG; +use OCP\Files\File; + /** * Class SVGTest * @@ -24,13 +27,13 @@ class SVGTest extends Provider { $this->imgPath = $this->prepareTestFile($fileName, \OC::$SERVERROOT . '/tests/data/' . $fileName); $this->width = 3000; $this->height = 2000; - $this->provider = new \OC\Preview\SVG; + $this->provider = new SVG; } else { $this->markTestSkipped('No SVG provider present'); } } - public function dataGetThumbnailSVGHref(): array { + public static function dataGetThumbnailSVGHref(): array { return [ ['href'], [' href'], @@ -52,7 +55,7 @@ class SVGTest extends Provider { </svg>'); rewind($handle); - $file = $this->createMock(\OCP\Files\File::class); + $file = $this->createMock(File::class); $file->method('fopen') ->willReturn($handle); diff --git a/tests/lib/Preview/TXTTest.php b/tests/lib/Preview/TXTTest.php index 7f5510eb60f..9541ec8f31c 100644 --- a/tests/lib/Preview/TXTTest.php +++ b/tests/lib/Preview/TXTTest.php @@ -7,6 +7,8 @@ namespace Test\Preview; +use OC\Preview\TXT; + /** * Class TXTTest * @@ -23,6 +25,6 @@ class TXTTest extends Provider { // Arbitrary width and length which won't be used to calculate the ratio $this->width = 500; $this->height = 200; - $this->provider = new \OC\Preview\TXT; + $this->provider = new TXT; } } diff --git a/tests/lib/Remote/Api/OCSTest.php b/tests/lib/Remote/Api/OCSTest.php index 3fcc486f246..142cb98c5e0 100644 --- a/tests/lib/Remote/Api/OCSTest.php +++ b/tests/lib/Remote/Api/OCSTest.php @@ -6,6 +6,7 @@ namespace Test\Remote\Api; +use OC\ForbiddenException; use OC\Memcache\ArrayCache; use OC\Remote\Api\OCS; use OC\Remote\Credentials; @@ -68,7 +69,7 @@ class OCSTest extends TestCase { public function testInvalidPassword(): void { - $this->expectException(\OC\ForbiddenException::class); + $this->expectException(ForbiddenException::class); $client = $this->getOCSClient(); diff --git a/tests/lib/Repair/CleanTagsTest.php b/tests/lib/Repair/CleanTagsTest.php index adb14b16fc4..5964fdb7f63 100644 --- a/tests/lib/Repair/CleanTagsTest.php +++ b/tests/lib/Repair/CleanTagsTest.php @@ -7,10 +7,12 @@ namespace Test\Repair; +use OC\Repair\CleanTags; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IDBConnection; use OCP\IUserManager; use OCP\Migration\IOutput; +use OCP\Server; use PHPUnit\Framework\MockObject\MockObject; /** @@ -23,7 +25,7 @@ use PHPUnit\Framework\MockObject\MockObject; class CleanTagsTest extends \Test\TestCase { private ?int $createdFile = null; - private \OC\Repair\CleanTags $repair; + private CleanTags $repair; private IDBConnection $connection; private IUserManager&MockObject $userManager; @@ -40,8 +42,8 @@ class CleanTagsTest extends \Test\TestCase { ->disableOriginalConstructor() ->getMock(); - $this->connection = \OCP\Server::get(IDBConnection::class); - $this->repair = new \OC\Repair\CleanTags($this->connection, $this->userManager); + $this->connection = Server::get(IDBConnection::class); + $this->repair = new CleanTags($this->connection, $this->userManager); $this->cleanUpTables(); } diff --git a/tests/lib/Repair/ClearFrontendCachesTest.php b/tests/lib/Repair/ClearFrontendCachesTest.php index 2e4681c6e5d..4586ecd5ae9 100644 --- a/tests/lib/Repair/ClearFrontendCachesTest.php +++ b/tests/lib/Repair/ClearFrontendCachesTest.php @@ -6,6 +6,7 @@ namespace Test\Repair; +use OC\Repair\ClearFrontendCaches; use OC\Template\JSCombiner; use OCP\ICache; use OCP\ICacheFactory; @@ -18,7 +19,7 @@ class ClearFrontendCachesTest extends \Test\TestCase { private JSCombiner&MockObject $jsCombiner; private IOutput&MockObject $outputMock; - protected \OC\Repair\ClearFrontendCaches $repair; + protected ClearFrontendCaches $repair; protected function setUp(): void { parent::setUp(); @@ -28,7 +29,7 @@ class ClearFrontendCachesTest extends \Test\TestCase { $this->cacheFactory = $this->createMock(ICacheFactory::class); $this->jsCombiner = $this->createMock(JSCombiner::class); - $this->repair = new \OC\Repair\ClearFrontendCaches($this->cacheFactory, $this->jsCombiner); + $this->repair = new ClearFrontendCaches($this->cacheFactory, $this->jsCombiner); } diff --git a/tests/lib/Repair/ClearGeneratedAvatarCacheTest.php b/tests/lib/Repair/ClearGeneratedAvatarCacheTest.php index 810fa1fe4e8..88fc24b40ad 100644 --- a/tests/lib/Repair/ClearGeneratedAvatarCacheTest.php +++ b/tests/lib/Repair/ClearGeneratedAvatarCacheTest.php @@ -30,7 +30,7 @@ class ClearGeneratedAvatarCacheTest extends \Test\TestCase { $this->repair = new ClearGeneratedAvatarCache($this->config, $this->avatarManager, $this->jobList); } - public function shouldRunDataProvider() { + public static function shouldRunDataProvider(): array { return [ ['11.0.0.0', true], ['15.0.0.3', true], diff --git a/tests/lib/Repair/NC29/SanitizeAccountPropertiesJobTest.php b/tests/lib/Repair/NC29/SanitizeAccountPropertiesJobTest.php index e0f4eb3cbc1..c81cf21226c 100644 --- a/tests/lib/Repair/NC29/SanitizeAccountPropertiesJobTest.php +++ b/tests/lib/Repair/NC29/SanitizeAccountPropertiesJobTest.php @@ -104,7 +104,7 @@ class SanitizeAccountPropertiesJobTest extends TestCase { $valid = false; $this->accountManager->expects(self::exactly(3)) ->method('updateAccount') - ->willReturnCallback(function (IAccount $account) use (&$account1, &$valid) { + ->willReturnCallback(function (IAccount $account) use (&$account1, &$valid): void { if (!$valid && $account === $account1) { $valid = true; throw new InvalidArgumentException(IAccountManager::PROPERTY_PHONE); diff --git a/tests/lib/Repair/OldGroupMembershipSharesTest.php b/tests/lib/Repair/OldGroupMembershipSharesTest.php index 594a8bf0b66..b78f4c567b4 100644 --- a/tests/lib/Repair/OldGroupMembershipSharesTest.php +++ b/tests/lib/Repair/OldGroupMembershipSharesTest.php @@ -11,6 +11,7 @@ use OC\Repair\OldGroupMembershipShares; use OCP\IDBConnection; use OCP\IGroupManager; use OCP\Migration\IOutput; +use OCP\Server; use OCP\Share\IShare; use PHPUnit\Framework\MockObject\MockObject; @@ -32,7 +33,7 @@ class OldGroupMembershipSharesTest extends \Test\TestCase { $this->groupManager = $this->getMockBuilder(IGroupManager::class) ->disableOriginalConstructor() ->getMock(); - $this->connection = \OCP\Server::get(IDBConnection::class); + $this->connection = Server::get(IDBConnection::class); $this->deleteAllShares(); } diff --git a/tests/lib/Repair/Owncloud/CleanPreviewsBackgroundJobTest.php b/tests/lib/Repair/Owncloud/CleanPreviewsBackgroundJobTest.php index 3c5583c49da..7a60bdd18ea 100644 --- a/tests/lib/Repair/Owncloud/CleanPreviewsBackgroundJobTest.php +++ b/tests/lib/Repair/Owncloud/CleanPreviewsBackgroundJobTest.php @@ -71,8 +71,7 @@ class CleanPreviewsBackgroundJobTest extends TestCase { $thumbnailFolder->expects($this->never()) ->method('delete'); - $this->timeFactory->method('getTime') - ->will($this->onConsecutiveCalls(100, 200)); + $this->timeFactory->method('getTime')->willReturnOnConsecutiveCalls(100, 200); $this->jobList->expects($this->once()) ->method('add') @@ -84,7 +83,7 @@ class CleanPreviewsBackgroundJobTest extends TestCase { $loggerCalls = []; $this->logger->expects($this->exactly(2)) ->method('info') - ->willReturnCallback(function () use (&$loggerCalls) { + ->willReturnCallback(function () use (&$loggerCalls): void { $loggerCalls[] = func_get_args(); }); @@ -118,8 +117,7 @@ class CleanPreviewsBackgroundJobTest extends TestCase { $thumbnailFolder->method('getDirectoryListing') ->willReturn([$previewFolder1]); - $this->timeFactory->method('getTime') - ->will($this->onConsecutiveCalls(100, 101)); + $this->timeFactory->method('getTime')->willReturnOnConsecutiveCalls(100, 101); $this->jobList->expects($this->never()) ->method('add'); @@ -127,7 +125,7 @@ class CleanPreviewsBackgroundJobTest extends TestCase { $loggerCalls = []; $this->logger->expects($this->exactly(2)) ->method('info') - ->willReturnCallback(function () use (&$loggerCalls) { + ->willReturnCallback(function () use (&$loggerCalls): void { $loggerCalls[] = func_get_args(); }); @@ -150,7 +148,7 @@ class CleanPreviewsBackgroundJobTest extends TestCase { $loggerCalls = []; $this->logger->expects($this->exactly(2)) ->method('info') - ->willReturnCallback(function () use (&$loggerCalls) { + ->willReturnCallback(function () use (&$loggerCalls): void { $loggerCalls[] = func_get_args(); }); @@ -178,7 +176,7 @@ class CleanPreviewsBackgroundJobTest extends TestCase { $loggerCalls = []; $this->logger->expects($this->exactly(2)) ->method('info') - ->willReturnCallback(function () use (&$loggerCalls) { + ->willReturnCallback(function () use (&$loggerCalls): void { $loggerCalls[] = func_get_args(); }); @@ -213,8 +211,7 @@ class CleanPreviewsBackgroundJobTest extends TestCase { $thumbnailFolder->method('getDirectoryListing') ->willReturn([$previewFolder1]); - $this->timeFactory->method('getTime') - ->will($this->onConsecutiveCalls(100, 101)); + $this->timeFactory->method('getTime')->willReturnOnConsecutiveCalls(100, 101); $this->jobList->expects($this->never()) ->method('add'); @@ -226,7 +223,7 @@ class CleanPreviewsBackgroundJobTest extends TestCase { $loggerCalls = []; $this->logger->expects($this->exactly(2)) ->method('info') - ->willReturnCallback(function () use (&$loggerCalls) { + ->willReturnCallback(function () use (&$loggerCalls): void { $loggerCalls[] = func_get_args(); }); diff --git a/tests/lib/Repair/Owncloud/CleanPreviewsTest.php b/tests/lib/Repair/Owncloud/CleanPreviewsTest.php index 3a1936076a0..c0ea6f5bc1f 100644 --- a/tests/lib/Repair/Owncloud/CleanPreviewsTest.php +++ b/tests/lib/Repair/Owncloud/CleanPreviewsTest.php @@ -52,15 +52,15 @@ class CleanPreviewsTest extends TestCase { $this->userManager->expects($this->once()) ->method('callForSeenUsers') - ->will($this->returnCallback(function (\Closure $function) use (&$user1, $user2) { + ->willReturnCallback(function (\Closure $function) use (&$user1, $user2): void { $function($user1); $function($user2); - })); + }); $jobListCalls = []; $this->jobList->expects($this->exactly(2)) ->method('add') - ->willReturnCallback(function () use (&$jobListCalls) { + ->willReturnCallback(function () use (&$jobListCalls): void { $jobListCalls[] = func_get_args(); }); diff --git a/tests/lib/Repair/Owncloud/UpdateLanguageCodesTest.php b/tests/lib/Repair/Owncloud/UpdateLanguageCodesTest.php index a7907308d93..e2967dfd601 100644 --- a/tests/lib/Repair/Owncloud/UpdateLanguageCodesTest.php +++ b/tests/lib/Repair/Owncloud/UpdateLanguageCodesTest.php @@ -11,6 +11,7 @@ use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IConfig; use OCP\IDBConnection; use OCP\Migration\IOutput; +use OCP\Server; use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; @@ -29,7 +30,7 @@ class UpdateLanguageCodesTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->connection = \OCP\Server::get(IDBConnection::class); + $this->connection = Server::get(IDBConnection::class); $this->config = $this->createMock(IConfig::class); } @@ -91,7 +92,7 @@ class UpdateLanguageCodesTest extends TestCase { $outputMock = $this->createMock(IOutput::class); $outputMock->expects($this->exactly(7)) ->method('info') - ->willReturnCallback(function () use (&$outputMessages) { + ->willReturnCallback(function () use (&$outputMessages): void { $outputMessages[] = func_get_args(); }); diff --git a/tests/lib/Repair/RepairCollationTest.php b/tests/lib/Repair/RepairCollationTest.php index 3f007fa6310..e0cf5a8bb6f 100644 --- a/tests/lib/Repair/RepairCollationTest.php +++ b/tests/lib/Repair/RepairCollationTest.php @@ -12,6 +12,7 @@ use OC\Repair\Collation; use OCP\IConfig; use OCP\IDBConnection; use OCP\Migration\IOutput; +use OCP\Server; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; use Test\TestCase; @@ -45,8 +46,8 @@ class RepairCollationTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->connection = \OCP\Server::get(ConnectionAdapter::class); - $this->config = \OCP\Server::get(IConfig::class); + $this->connection = Server::get(ConnectionAdapter::class); + $this->config = Server::get(IConfig::class); if ($this->connection->getDatabaseProvider() !== IDBConnection::PLATFORM_MYSQL) { $this->markTestSkipped('Test only relevant on MySql'); } diff --git a/tests/lib/Repair/RepairInvalidSharesTest.php b/tests/lib/Repair/RepairInvalidSharesTest.php index dfcdce3801a..f987d35f5c0 100644 --- a/tests/lib/Repair/RepairInvalidSharesTest.php +++ b/tests/lib/Repair/RepairInvalidSharesTest.php @@ -8,9 +8,11 @@ namespace Test\Repair; use OC\Repair\RepairInvalidShares; +use OCP\Constants; use OCP\IConfig; use OCP\IDBConnection; use OCP\Migration\IOutput; +use OCP\Server; use OCP\Share\IShare; use Test\TestCase; @@ -37,7 +39,7 @@ class RepairInvalidSharesTest extends TestCase { ->with('version') ->willReturn('12.0.0.0'); - $this->connection = \OCP\Server::get(IDBConnection::class); + $this->connection = Server::get(IDBConnection::class); $this->deleteAllShares(); $this->repair = new RepairInvalidShares($config, $this->connection); @@ -122,7 +124,7 @@ class RepairInvalidSharesTest extends TestCase { $result->closeCursor(); } - public function fileSharePermissionsProvider() { + public static function fileSharePermissionsProvider(): array { return [ // unchanged for folder [ @@ -133,14 +135,14 @@ class RepairInvalidSharesTest extends TestCase { // unchanged for read-write + share [ 'file', - \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_SHARE, - \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_SHARE, + Constants::PERMISSION_READ | Constants::PERMISSION_UPDATE | Constants::PERMISSION_SHARE, + Constants::PERMISSION_READ | Constants::PERMISSION_UPDATE | Constants::PERMISSION_SHARE, ], // fixed for all perms [ 'file', - \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE | \OCP\Constants::PERMISSION_SHARE, - \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_SHARE, + Constants::PERMISSION_READ | Constants::PERMISSION_CREATE | Constants::PERMISSION_UPDATE | Constants::PERMISSION_DELETE | Constants::PERMISSION_SHARE, + Constants::PERMISSION_READ | Constants::PERMISSION_UPDATE | Constants::PERMISSION_SHARE, ], ]; } diff --git a/tests/lib/Repair/RepairMimeTypesTest.php b/tests/lib/Repair/RepairMimeTypesTest.php index 4f044c054d3..e4645b3be4c 100644 --- a/tests/lib/Repair/RepairMimeTypesTest.php +++ b/tests/lib/Repair/RepairMimeTypesTest.php @@ -14,6 +14,7 @@ use OCP\IAppConfig; use OCP\IConfig; use OCP\IDBConnection; use OCP\Migration\IOutput; +use OCP\Server; /** * Tests for the converting of legacy storages to home storages. @@ -32,8 +33,8 @@ class RepairMimeTypesTest extends \Test\TestCase { protected function setUp(): void { parent::setUp(); - $this->mimetypeLoader = \OCP\Server::get(IMimeTypeLoader::class); - $this->db = \OCP\Server::get(IDBConnection::class); + $this->mimetypeLoader = Server::get(IMimeTypeLoader::class); + $this->db = Server::get(IDBConnection::class); $config = $this->getMockBuilder(IConfig::class) ->disableOriginalConstructor() @@ -55,7 +56,7 @@ class RepairMimeTypesTest extends \Test\TestCase { $this->repair = new RepairMimeTypes( $config, $appConfig, - \OCP\Server::get(IDBConnection::class), + Server::get(IDBConnection::class), ); } diff --git a/tests/lib/RepairTest.php b/tests/lib/RepairTest.php index 97c278a1d10..f567aebf3c8 100644 --- a/tests/lib/RepairTest.php +++ b/tests/lib/RepairTest.php @@ -13,21 +13,22 @@ use OC\Repair\Events\RepairInfoEvent; use OC\Repair\Events\RepairStepEvent; use OC\Repair\Events\RepairWarningEvent; use OCP\EventDispatcher\IEventDispatcher; +use OCP\Migration\IOutput; use OCP\Migration\IRepairStep; +use OCP\Server; use Psr\Log\LoggerInterface; class TestRepairStep implements IRepairStep { - private bool $warning; - - public function __construct(bool $warning = false) { - $this->warning = $warning; + public function __construct( + private bool $warning = false, + ) { } public function getName() { return 'Test Name'; } - public function run(\OCP\Migration\IOutput $out) { + public function run(IOutput $out) { if ($this->warning) { $out->warning('Simulated warning'); } else { @@ -44,19 +45,19 @@ class RepairTest extends TestCase { protected function setUp(): void { parent::setUp(); - $dispatcher = \OC::$server->get(IEventDispatcher::class); + $dispatcher = Server::get(IEventDispatcher::class); $this->repair = new Repair($dispatcher, $this->createMock(LoggerInterface::class)); - $dispatcher->addListener(RepairWarningEvent::class, function (RepairWarningEvent $event) { + $dispatcher->addListener(RepairWarningEvent::class, function (RepairWarningEvent $event): void { $this->outputArray[] = 'warning: ' . $event->getMessage(); }); - $dispatcher->addListener(RepairInfoEvent::class, function (RepairInfoEvent $event) { + $dispatcher->addListener(RepairInfoEvent::class, function (RepairInfoEvent $event): void { $this->outputArray[] = 'info: ' . $event->getMessage(); }); - $dispatcher->addListener(RepairStepEvent::class, function (RepairStepEvent $event) { + $dispatcher->addListener(RepairStepEvent::class, function (RepairStepEvent $event): void { $this->outputArray[] = 'step: ' . $event->getStepName(); }); - $dispatcher->addListener(RepairErrorEvent::class, function (RepairErrorEvent $event) { + $dispatcher->addListener(RepairErrorEvent::class, function (RepairErrorEvent $event): void { $this->outputArray[] = 'error: ' . $event->getMessage(); }); } @@ -91,7 +92,7 @@ class RepairTest extends TestCase { $mock = $this->createMock(TestRepairStep::class); $mock->expects($this->any()) ->method('run') - ->will($this->throwException(new \Exception('Exception text'))); + ->willThrowException(new \Exception('Exception text')); $mock->expects($this->any()) ->method('getName') ->willReturn('Exception Test'); diff --git a/tests/lib/RichObjectStrings/DefinitionsTest.php b/tests/lib/RichObjectStrings/DefinitionsTest.php index 9299a556972..5106de50ba4 100644 --- a/tests/lib/RichObjectStrings/DefinitionsTest.php +++ b/tests/lib/RichObjectStrings/DefinitionsTest.php @@ -7,10 +7,11 @@ namespace Test\RichObjectStrings; use OCP\RichObjectStrings\Definitions; +use OCP\RichObjectStrings\InvalidObjectExeption; use Test\TestCase; class DefinitionsTest extends TestCase { - public function dataGetDefinition() { + public static function dataGetDefinition() { $definitions = new Definitions(); $testsuite = []; foreach ($definitions->definitions as $type => $definition) { @@ -19,9 +20,9 @@ class DefinitionsTest extends TestCase { return $testsuite; } - + public function testGetDefinitionNotExisting(): void { - $this->expectException(\OCP\RichObjectStrings\InvalidObjectExeption::class); + $this->expectException(InvalidObjectExeption::class); $this->expectExceptionMessage('Object type is undefined'); $definitions = new Definitions(); diff --git a/tests/lib/Route/RouterTest.php b/tests/lib/Route/RouterTest.php index f99ebe4767f..560cd5d3aed 100644 --- a/tests/lib/Route/RouterTest.php +++ b/tests/lib/Route/RouterTest.php @@ -35,7 +35,7 @@ class RouterTest extends TestCase { $logger = $this->createMock(LoggerInterface::class); $logger->method('info') ->willReturnCallback( - function (string $message, array $data) { + function (string $message, array $data): void { $this->fail('Unexpected info log: ' . (string)($data['exception'] ?? $message)); } ); diff --git a/tests/lib/Security/Bruteforce/Backend/MemoryCacheBackendTest.php b/tests/lib/Security/Bruteforce/Backend/MemoryCacheBackendTest.php index 82bffb74e01..ac679238617 100644 --- a/tests/lib/Security/Bruteforce/Backend/MemoryCacheBackendTest.php +++ b/tests/lib/Security/Bruteforce/Backend/MemoryCacheBackendTest.php @@ -36,7 +36,7 @@ class MemoryCacheBackendTest extends TestCase { $this->cacheFactory ->expects($this->once()) ->method('createDistributed') - ->with('OC\Security\Bruteforce\Backend\MemoryCacheBackend') + ->with(MemoryCacheBackend::class) ->willReturn($this->cache); $this->backend = new MemoryCacheBackend( @@ -55,7 +55,7 @@ class MemoryCacheBackendTest extends TestCase { $this->assertSame(0, $this->backend->getAttempts('10.10.10.10/32', 0)); } - public function dataGetAttempts(): array { + public static function dataGetAttempts(): array { return [ [0, null, null, 4], [100, null, null, 2], diff --git a/tests/lib/Security/CSP/ContentSecurityPolicyManagerTest.php b/tests/lib/Security/CSP/ContentSecurityPolicyManagerTest.php index 63a5565e7fa..a32a4132287 100644 --- a/tests/lib/Security/CSP/ContentSecurityPolicyManagerTest.php +++ b/tests/lib/Security/CSP/ContentSecurityPolicyManagerTest.php @@ -11,8 +11,11 @@ declare(strict_types=1); namespace Test\Security\CSP; use OC\Security\CSP\ContentSecurityPolicyManager; +use OCP\AppFramework\Http\ContentSecurityPolicy; +use OCP\AppFramework\Http\EmptyContentSecurityPolicy; use OCP\EventDispatcher\IEventDispatcher; use OCP\Security\CSP\AddContentSecurityPolicyEvent; +use OCP\Server; use Test\TestCase; class ContentSecurityPolicyManagerTest extends TestCase { @@ -24,26 +27,26 @@ class ContentSecurityPolicyManagerTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->dispatcher = \OC::$server->query(IEventDispatcher::class); + $this->dispatcher = Server::get(IEventDispatcher::class); $this->contentSecurityPolicyManager = new ContentSecurityPolicyManager($this->dispatcher); } public function testAddDefaultPolicy(): void { - $this->contentSecurityPolicyManager->addDefaultPolicy(new \OCP\AppFramework\Http\ContentSecurityPolicy()); + $this->contentSecurityPolicyManager->addDefaultPolicy(new ContentSecurityPolicy()); $this->addToAssertionCount(1); } public function testGetDefaultPolicyWithPolicies(): void { - $policy = new \OCP\AppFramework\Http\ContentSecurityPolicy(); + $policy = new ContentSecurityPolicy(); $policy->addAllowedFontDomain('mydomain.com'); $policy->addAllowedImageDomain('anotherdomain.de'); $this->contentSecurityPolicyManager->addDefaultPolicy($policy); - $policy = new \OCP\AppFramework\Http\ContentSecurityPolicy(); + $policy = new ContentSecurityPolicy(); $policy->addAllowedFontDomain('example.com'); $policy->addAllowedImageDomain('example.org'); $policy->allowEvalScript(true); $this->contentSecurityPolicyManager->addDefaultPolicy($policy); - $policy = new \OCP\AppFramework\Http\EmptyContentSecurityPolicy(); + $policy = new EmptyContentSecurityPolicy(); $policy->addAllowedChildSrcDomain('childdomain'); $policy->addAllowedFontDomain('anotherFontDomain'); $policy->addAllowedFormActionDomain('thirdDomain'); @@ -65,8 +68,8 @@ class ContentSecurityPolicyManagerTest extends TestCase { } public function testGetDefaultPolicyWithPoliciesViaEvent(): void { - $this->dispatcher->addListener(AddContentSecurityPolicyEvent::class, function (AddContentSecurityPolicyEvent $e) { - $policy = new \OCP\AppFramework\Http\ContentSecurityPolicy(); + $this->dispatcher->addListener(AddContentSecurityPolicyEvent::class, function (AddContentSecurityPolicyEvent $e): void { + $policy = new ContentSecurityPolicy(); $policy->addAllowedFontDomain('mydomain.com'); $policy->addAllowedImageDomain('anotherdomain.de'); $policy->useStrictDynamic(true); @@ -75,16 +78,16 @@ class ContentSecurityPolicyManagerTest extends TestCase { $e->addPolicy($policy); }); - $this->dispatcher->addListener(AddContentSecurityPolicyEvent::class, function (AddContentSecurityPolicyEvent $e) { - $policy = new \OCP\AppFramework\Http\ContentSecurityPolicy(); + $this->dispatcher->addListener(AddContentSecurityPolicyEvent::class, function (AddContentSecurityPolicyEvent $e): void { + $policy = new ContentSecurityPolicy(); $policy->addAllowedFontDomain('example.com'); $policy->addAllowedImageDomain('example.org'); $policy->allowEvalScript(false); $e->addPolicy($policy); }); - $this->dispatcher->addListener(AddContentSecurityPolicyEvent::class, function (AddContentSecurityPolicyEvent $e) { - $policy = new \OCP\AppFramework\Http\EmptyContentSecurityPolicy(); + $this->dispatcher->addListener(AddContentSecurityPolicyEvent::class, function (AddContentSecurityPolicyEvent $e): void { + $policy = new EmptyContentSecurityPolicy(); $policy->addAllowedChildSrcDomain('childdomain'); $policy->addAllowedFontDomain('anotherFontDomain'); $policy->addAllowedFormActionDomain('thirdDomain'); diff --git a/tests/lib/Security/CSRF/CsrfTokenGeneratorTest.php b/tests/lib/Security/CSRF/CsrfTokenGeneratorTest.php index 98eddf602ee..e40726fe56a 100644 --- a/tests/lib/Security/CSRF/CsrfTokenGeneratorTest.php +++ b/tests/lib/Security/CSRF/CsrfTokenGeneratorTest.php @@ -10,6 +10,8 @@ declare(strict_types=1); namespace Test\Security\CSRF; +use OC\Security\CSRF\CsrfTokenGenerator; + class CsrfTokenGeneratorTest extends \Test\TestCase { /** @var \OCP\Security\ISecureRandom */ private $random; @@ -20,7 +22,7 @@ class CsrfTokenGeneratorTest extends \Test\TestCase { parent::setUp(); $this->random = $this->getMockBuilder('\OCP\Security\ISecureRandom') ->disableOriginalConstructor()->getMock(); - $this->csrfTokenGenerator = new \OC\Security\CSRF\CsrfTokenGenerator($this->random); + $this->csrfTokenGenerator = new CsrfTokenGenerator($this->random); } public function testGenerateTokenWithCustomNumber(): void { diff --git a/tests/lib/Security/CSRF/CsrfTokenManagerTest.php b/tests/lib/Security/CSRF/CsrfTokenManagerTest.php index 47f873bfe13..66ee18475a4 100644 --- a/tests/lib/Security/CSRF/CsrfTokenManagerTest.php +++ b/tests/lib/Security/CSRF/CsrfTokenManagerTest.php @@ -10,6 +10,9 @@ declare(strict_types=1); namespace Test\Security\CSRF; +use OC\Security\CSRF\CsrfToken; +use OC\Security\CSRF\CsrfTokenManager; + class CsrfTokenManagerTest extends \Test\TestCase { /** @var \OC\Security\CSRF\CsrfTokenManager */ private $csrfTokenManager; @@ -25,7 +28,7 @@ class CsrfTokenManagerTest extends \Test\TestCase { $this->storageInterface = $this->getMockBuilder('\OC\Security\CSRF\TokenStorage\SessionStorage') ->disableOriginalConstructor()->getMock(); - $this->csrfTokenManager = new \OC\Security\CSRF\CsrfTokenManager( + $this->csrfTokenManager = new CsrfTokenManager( $this->tokenGenerator, $this->storageInterface ); @@ -41,7 +44,7 @@ class CsrfTokenManagerTest extends \Test\TestCase { ->method('getToken') ->willReturn('MyExistingToken'); - $expected = new \OC\Security\CSRF\CsrfToken('MyExistingToken'); + $expected = new CsrfToken('MyExistingToken'); $this->assertEquals($expected, $this->csrfTokenManager->getToken()); } @@ -55,7 +58,7 @@ class CsrfTokenManagerTest extends \Test\TestCase { ->method('getToken') ->willReturn('MyExistingToken'); - $expected = new \OC\Security\CSRF\CsrfToken('MyExistingToken'); + $expected = new CsrfToken('MyExistingToken'); $token = $this->csrfTokenManager->getToken(); $this->assertSame($token, $this->csrfTokenManager->getToken()); $this->assertSame($token, $this->csrfTokenManager->getToken()); @@ -75,7 +78,7 @@ class CsrfTokenManagerTest extends \Test\TestCase { ->method('setToken') ->with('MyNewToken'); - $expected = new \OC\Security\CSRF\CsrfToken('MyNewToken'); + $expected = new CsrfToken('MyNewToken'); $this->assertEquals($expected, $this->csrfTokenManager->getToken()); } @@ -89,7 +92,7 @@ class CsrfTokenManagerTest extends \Test\TestCase { ->method('setToken') ->with('MyNewToken'); - $expected = new \OC\Security\CSRF\CsrfToken('MyNewToken'); + $expected = new CsrfToken('MyNewToken'); $this->assertEquals($expected, $this->csrfTokenManager->refreshToken()); } @@ -106,7 +109,7 @@ class CsrfTokenManagerTest extends \Test\TestCase { ->expects($this->once()) ->method('hasToken') ->willReturn(false); - $token = new \OC\Security\CSRF\CsrfToken('Token'); + $token = new CsrfToken('Token'); $this->assertSame(false, $this->csrfTokenManager->isTokenValid($token)); } @@ -116,7 +119,7 @@ class CsrfTokenManagerTest extends \Test\TestCase { ->expects($this->once()) ->method('hasToken') ->willReturn(true); - $token = new \OC\Security\CSRF\CsrfToken('Token'); + $token = new CsrfToken('Token'); $this->storageInterface ->expects($this->once()) ->method('getToken') @@ -134,7 +137,7 @@ class CsrfTokenManagerTest extends \Test\TestCase { ->expects($this->once()) ->method('hasToken') ->willReturn(true); - $token = new \OC\Security\CSRF\CsrfToken($tokenVal); + $token = new CsrfToken($tokenVal); $this->storageInterface ->expects($this->once()) ->method('getToken') diff --git a/tests/lib/Security/CSRF/CsrfTokenTest.php b/tests/lib/Security/CSRF/CsrfTokenTest.php index 9ecbbe9f23a..5b5ba5ae54f 100644 --- a/tests/lib/Security/CSRF/CsrfTokenTest.php +++ b/tests/lib/Security/CSRF/CsrfTokenTest.php @@ -10,15 +10,17 @@ declare(strict_types=1); namespace Test\Security\CSRF; +use OC\Security\CSRF\CsrfToken; + class CsrfTokenTest extends \Test\TestCase { public function testGetEncryptedValue(): void { - $csrfToken = new \OC\Security\CSRF\CsrfToken('MyCsrfToken'); + $csrfToken = new CsrfToken('MyCsrfToken'); $this->assertSame(33, strlen($csrfToken->getEncryptedValue())); $this->assertSame(':', $csrfToken->getEncryptedValue()[16]); } public function testGetEncryptedValueStaysSameOnSecondRequest(): void { - $csrfToken = new \OC\Security\CSRF\CsrfToken('MyCsrfToken'); + $csrfToken = new CsrfToken('MyCsrfToken'); $tokenValue = $csrfToken->getEncryptedValue(); $this->assertSame($tokenValue, $csrfToken->getEncryptedValue()); $this->assertSame($tokenValue, $csrfToken->getEncryptedValue()); @@ -29,7 +31,7 @@ class CsrfTokenTest extends \Test\TestCase { $b = 'def'; $xorB64 = 'BQcF'; $tokenVal = sprintf('%s:%s', $xorB64, base64_encode($a)); - $csrfToken = new \OC\Security\CSRF\CsrfToken($tokenVal); + $csrfToken = new CsrfToken($tokenVal); $this->assertSame($b, $csrfToken->getDecryptedValue()); } } diff --git a/tests/lib/Security/CSRF/TokenStorage/SessionStorageTest.php b/tests/lib/Security/CSRF/TokenStorage/SessionStorageTest.php index f8386124626..0e8a36112e2 100644 --- a/tests/lib/Security/CSRF/TokenStorage/SessionStorageTest.php +++ b/tests/lib/Security/CSRF/TokenStorage/SessionStorageTest.php @@ -10,6 +10,7 @@ declare(strict_types=1); namespace Test\Security\CSRF\TokenStorage; +use OC\Security\CSRF\TokenStorage\SessionStorage; use OCP\ISession; class SessionStorageTest extends \Test\TestCase { @@ -22,13 +23,13 @@ class SessionStorageTest extends \Test\TestCase { parent::setUp(); $this->session = $this->getMockBuilder(ISession::class) ->disableOriginalConstructor()->getMock(); - $this->sessionStorage = new \OC\Security\CSRF\TokenStorage\SessionStorage($this->session); + $this->sessionStorage = new SessionStorage($this->session); } /** * @return array */ - public function getTokenDataProvider() { + public static function getTokenDataProvider(): array { return [ [ '', diff --git a/tests/lib/Security/CertificateManagerTest.php b/tests/lib/Security/CertificateManagerTest.php index 1c168228b6a..3657eeb2f99 100644 --- a/tests/lib/Security/CertificateManagerTest.php +++ b/tests/lib/Security/CertificateManagerTest.php @@ -10,11 +10,16 @@ declare(strict_types=1); namespace Test\Security; +use OC\Files\Filesystem; +use OC\Files\Storage\Temporary; use OC\Files\View; +use OC\Security\Certificate; use OC\Security\CertificateManager; use OCP\Files\InvalidPathException; use OCP\IConfig; +use OCP\IUserManager; use OCP\Security\ISecureRandom; +use OCP\Server; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; @@ -37,12 +42,12 @@ class CertificateManagerTest extends \Test\TestCase { $this->username = $this->getUniqueID('', 20); $this->createUser($this->username, ''); - $storage = new \OC\Files\Storage\Temporary(); + $storage = new Temporary(); $this->registerMount($this->username, $storage, '/' . $this->username . '/'); \OC_Util::tearDownFS(); \OC_User::setUserId($this->username); - \OC\Files\Filesystem::tearDown(); + Filesystem::tearDown(); \OC_Util::setupFS($this->username); $config = $this->createMock(IConfig::class); @@ -54,7 +59,7 @@ class CertificateManagerTest extends \Test\TestCase { ->willReturn('random'); $this->certificateManager = new CertificateManager( - new \OC\Files\View(), + new View(), $config, $this->createMock(LoggerInterface::class), $this->random @@ -62,7 +67,7 @@ class CertificateManagerTest extends \Test\TestCase { } protected function tearDown(): void { - $user = \OC::$server->getUserManager()->get($this->username); + $user = Server::get(IUserManager::class)->get($this->username); if ($user !== null) { $user->delete(); } @@ -83,12 +88,12 @@ class CertificateManagerTest extends \Test\TestCase { // Add some certificates $this->certificateManager->addCertificate(file_get_contents(__DIR__ . '/../../data/certificates/goodCertificate.crt'), 'GoodCertificate'); $certificateStore = []; - $certificateStore[] = new \OC\Security\Certificate(file_get_contents(__DIR__ . '/../../data/certificates/goodCertificate.crt'), 'GoodCertificate'); + $certificateStore[] = new Certificate(file_get_contents(__DIR__ . '/../../data/certificates/goodCertificate.crt'), 'GoodCertificate'); $this->assertEqualsArrays($certificateStore, $this->certificateManager->listCertificates()); // Add another certificates $this->certificateManager->addCertificate(file_get_contents(__DIR__ . '/../../data/certificates/expiredCertificate.crt'), 'ExpiredCertificate'); - $certificateStore[] = new \OC\Security\Certificate(file_get_contents(__DIR__ . '/../../data/certificates/expiredCertificate.crt'), 'ExpiredCertificate'); + $certificateStore[] = new Certificate(file_get_contents(__DIR__ . '/../../data/certificates/expiredCertificate.crt'), 'ExpiredCertificate'); $this->assertEqualsArrays($certificateStore, $this->certificateManager->listCertificates()); } @@ -100,10 +105,7 @@ class CertificateManagerTest extends \Test\TestCase { $this->certificateManager->addCertificate('InvalidCertificate', 'invalidCertificate'); } - /** - * @return array - */ - public function dangerousFileProvider() { + public static function dangerousFileProvider(): array { return [ ['.htaccess'], ['../../foo.txt'], @@ -153,7 +155,7 @@ class CertificateManagerTest extends \Test\TestCase { /** @var CertificateManager | \PHPUnit\Framework\MockObject\MockObject $certificateManager */ $certificateManager = $this->getMockBuilder('OC\Security\CertificateManager') ->setConstructorArgs([$view, $config, $this->createMock(LoggerInterface::class), $this->random]) - ->setMethods(['getFilemtimeOfCaBundle', 'getCertificateBundle']) + ->onlyMethods(['getFilemtimeOfCaBundle', 'getCertificateBundle']) ->getMock(); $certificateManager->expects($this->any())->method('getFilemtimeOfCaBundle') @@ -181,7 +183,7 @@ class CertificateManagerTest extends \Test\TestCase { ); } - public function dataTestNeedRebundling() { + public static function dataTestNeedRebundling(): array { return [ //values: CaBundleMtime, targetBundleMtime, targetBundleExists, expected diff --git a/tests/lib/Security/CredentialsManagerTest.php b/tests/lib/Security/CredentialsManagerTest.php index ce60a2f62a2..d5e7a114667 100644 --- a/tests/lib/Security/CredentialsManagerTest.php +++ b/tests/lib/Security/CredentialsManagerTest.php @@ -50,7 +50,7 @@ class CredentialsManagerTest extends \Test\TestCase { $this->assertSame($secretsRev, $received); } - public function credentialsProvider(): array { + public static function credentialsProvider(): array { return [ [ 'alice', diff --git a/tests/lib/Security/CryptoTest.php b/tests/lib/Security/CryptoTest.php index 79140b34456..b650e3ffc09 100644 --- a/tests/lib/Security/CryptoTest.php +++ b/tests/lib/Security/CryptoTest.php @@ -11,9 +11,11 @@ declare(strict_types=1); namespace Test\Security; use OC\Security\Crypto; +use OCP\IConfig; +use OCP\Server; class CryptoTest extends \Test\TestCase { - public function defaultEncryptionProvider() { + public static function defaultEncryptionProvider(): array { return [ ['Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.'], [''], @@ -26,7 +28,7 @@ class CryptoTest extends \Test\TestCase { protected function setUp(): void { parent::setUp(); - $this->crypto = new Crypto(\OC::$server->getConfig()); + $this->crypto = new Crypto(Server::get(IConfig::class)); } /** diff --git a/tests/lib/Security/FeaturePolicy/FeaturePolicyManagerTest.php b/tests/lib/Security/FeaturePolicy/FeaturePolicyManagerTest.php index 7386aa023a9..01624cb92d3 100644 --- a/tests/lib/Security/FeaturePolicy/FeaturePolicyManagerTest.php +++ b/tests/lib/Security/FeaturePolicy/FeaturePolicyManagerTest.php @@ -12,6 +12,7 @@ use OC\Security\FeaturePolicy\FeaturePolicyManager; use OCP\AppFramework\Http\FeaturePolicy; use OCP\EventDispatcher\IEventDispatcher; use OCP\Security\FeaturePolicy\AddFeaturePolicyEvent; +use OCP\Server; use Test\TestCase; class FeaturePolicyManagerTest extends TestCase { @@ -23,7 +24,7 @@ class FeaturePolicyManagerTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->dispatcher = \OC::$server->query(IEventDispatcher::class); + $this->dispatcher = Server::get(IEventDispatcher::class); $this->manager = new FeaturePolicyManager($this->dispatcher); } @@ -33,7 +34,7 @@ class FeaturePolicyManagerTest extends TestCase { } public function testGetDefaultPolicyWithPoliciesViaEvent(): void { - $this->dispatcher->addListener(AddFeaturePolicyEvent::class, function (AddFeaturePolicyEvent $e) { + $this->dispatcher->addListener(AddFeaturePolicyEvent::class, function (AddFeaturePolicyEvent $e): void { $policy = new FeaturePolicy(); $policy->addAllowedMicrophoneDomain('mydomain.com'); $policy->addAllowedPaymentDomain('mypaymentdomain.com'); @@ -41,7 +42,7 @@ class FeaturePolicyManagerTest extends TestCase { $e->addPolicy($policy); }); - $this->dispatcher->addListener(AddFeaturePolicyEvent::class, function (AddFeaturePolicyEvent $e) { + $this->dispatcher->addListener(AddFeaturePolicyEvent::class, function (AddFeaturePolicyEvent $e): void { $policy = new FeaturePolicy(); $policy->addAllowedPaymentDomain('mydomainother.com'); $policy->addAllowedGeoLocationDomain('mylocation.here'); @@ -49,7 +50,7 @@ class FeaturePolicyManagerTest extends TestCase { $e->addPolicy($policy); }); - $this->dispatcher->addListener(AddFeaturePolicyEvent::class, function (AddFeaturePolicyEvent $e) { + $this->dispatcher->addListener(AddFeaturePolicyEvent::class, function (AddFeaturePolicyEvent $e): void { $policy = new FeaturePolicy(); $policy->addAllowedAutoplayDomain('youtube.com'); diff --git a/tests/lib/Security/HasherTest.php b/tests/lib/Security/HasherTest.php index 41cad7f323f..11b63e8ec88 100644 --- a/tests/lib/Security/HasherTest.php +++ b/tests/lib/Security/HasherTest.php @@ -17,10 +17,7 @@ use OCP\IConfig; * Class HasherTest */ class HasherTest extends \Test\TestCase { - /** - * @return array - */ - public function versionHashProvider() { + public static function versionHashProvider(): array { return [ ['asf32äà$$a.|3', null], ['asf32äà$$a.|3|5', null], @@ -30,7 +27,7 @@ class HasherTest extends \Test\TestCase { ]; } - public function hashProviders70_71(): array { + public static function hashProviders70_71(): array { return [ // Valid SHA1 strings ['password', '5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8', true], @@ -66,7 +63,7 @@ class HasherTest extends \Test\TestCase { ]; } - public function hashProviders72(): array { + public static function hashProviders72(): array { return [ // Valid ARGON2 hashes ['password', '2|$argon2i$v=19$m=1024,t=2,p=2$T3JGcEkxVFNOVktNSjZUcg$4/hyLtSejxNgAuzSFFV/HLM3qRQKBwEtKw61qPN4zWA', true], @@ -83,7 +80,7 @@ class HasherTest extends \Test\TestCase { ]; } - public function hashProviders73(): array { + public static function hashProviders73(): array { return [ // Valid ARGON2ID hashes ['password', '2|$argon2id$v=19$m=65536,t=4,p=1$TEtIMnhUczliQzI0Y01WeA$BpMUDrApy25iagIogUAnlc0rNTPJmGs8lOEeVHujJ9Q', true], diff --git a/tests/lib/Security/Ip/BruteforceAllowListTest.php b/tests/lib/Security/Ip/BruteforceAllowListTest.php index f7ef9e3df72..efdb7c4034c 100644 --- a/tests/lib/Security/Ip/BruteforceAllowListTest.php +++ b/tests/lib/Security/Ip/BruteforceAllowListTest.php @@ -42,7 +42,7 @@ class BruteforceAllowListTest extends TestCase { ); } - public function dataIsBypassListed(): array { + public static function dataIsBypassListed(): array { return [ [ '10.10.10.10', diff --git a/tests/lib/Security/Ip/RemoteAddressTest.php b/tests/lib/Security/Ip/RemoteAddressTest.php index d1f621796fe..63c1b452294 100644 --- a/tests/lib/Security/Ip/RemoteAddressTest.php +++ b/tests/lib/Security/Ip/RemoteAddressTest.php @@ -44,7 +44,7 @@ class RemoteAddressTest extends \Test\TestCase { /** * @return array<string, mixed, bool> */ - public function dataProvider(): array { + public static function dataProvider(): array { return [ // No IP (ie. CLI) ['', ['192.168.1.2/24'], true], diff --git a/tests/lib/Security/Normalizer/IpAddressTest.php b/tests/lib/Security/Normalizer/IpAddressTest.php index 33a8b4d28f1..29067596c98 100644 --- a/tests/lib/Security/Normalizer/IpAddressTest.php +++ b/tests/lib/Security/Normalizer/IpAddressTest.php @@ -13,7 +13,7 @@ use OC\Security\Normalizer\IpAddress; use Test\TestCase; class IpAddressTest extends TestCase { - public function subnetDataProvider() { + public static function subnetDataProvider(): array { return [ [ '64.233.191.254', diff --git a/tests/lib/Security/RateLimiting/LimiterTest.php b/tests/lib/Security/RateLimiting/LimiterTest.php index 92600e22de8..b19d5c6feba 100644 --- a/tests/lib/Security/RateLimiting/LimiterTest.php +++ b/tests/lib/Security/RateLimiting/LimiterTest.php @@ -10,29 +10,35 @@ declare(strict_types=1); namespace Test\Security\RateLimiting; use OC\Security\RateLimiting\Backend\IBackend; +use OC\Security\RateLimiting\Exception\RateLimitExceededException; use OC\Security\RateLimiting\Limiter; use OCP\IUser; +use OCP\Security\RateLimiting\ILimiter; +use PHPUnit\Framework\MockObject\MockObject; +use Psr\Log\LoggerInterface; use Test\TestCase; class LimiterTest extends TestCase { - /** @var IBackend|\PHPUnit\Framework\MockObject\MockObject */ - private $backend; - /** @var Limiter */ - private $limiter; + + private IBackend&MockObject $backend; + private ILimiter $limiter; + private LoggerInterface $logger; protected function setUp(): void { parent::setUp(); $this->backend = $this->createMock(IBackend::class); + $this->logger = $this->createMock(LoggerInterface::class); $this->limiter = new Limiter( - $this->backend + $this->backend, + $this->logger, ); } public function testRegisterAnonRequestExceeded(): void { - $this->expectException(\OC\Security\RateLimiting\Exception\RateLimitExceededException::class); + $this->expectException(RateLimitExceededException::class); $this->expectExceptionMessage('Rate limit exceeded'); $this->backend @@ -43,6 +49,8 @@ class LimiterTest extends TestCase { '4664f0d9c88dcb7552be47b37bb52ce35977b2e60e1ac13757cf625f31f87050a41f3da064887fa87d49fd042e4c8eb20de8f10464877d3959677ab011b73a47' ) ->willReturn(101); + $this->logger->expects($this->once()) + ->method('info'); $this->limiter->registerAnonRequest('MyIdentifier', 100, 100, '127.0.0.1'); } @@ -64,13 +72,15 @@ class LimiterTest extends TestCase { '4664f0d9c88dcb7552be47b37bb52ce35977b2e60e1ac13757cf625f31f87050a41f3da064887fa87d49fd042e4c8eb20de8f10464877d3959677ab011b73a47', 100 ); + $this->logger->expects($this->never()) + ->method('info'); $this->limiter->registerAnonRequest('MyIdentifier', 100, 100, '127.0.0.1'); } public function testRegisterUserRequestExceeded(): void { - $this->expectException(\OC\Security\RateLimiting\Exception\RateLimitExceededException::class); + $this->expectException(RateLimitExceededException::class); $this->expectExceptionMessage('Rate limit exceeded'); /** @var IUser|\PHPUnit\Framework\MockObject\MockObject $user */ @@ -87,6 +97,8 @@ class LimiterTest extends TestCase { 'ddb2ec50fa973fd49ecf3d816f677c8095143e944ad10485f30fb3dac85c13a346dace4dae2d0a15af91867320957bfd38a43d9eefbb74fe6919e15119b6d805' ) ->willReturn(101); + $this->logger->expects($this->once()) + ->method('info'); $this->limiter->registerUserRequest('MyIdentifier', 100, 100, $user); } @@ -115,6 +127,8 @@ class LimiterTest extends TestCase { 'ddb2ec50fa973fd49ecf3d816f677c8095143e944ad10485f30fb3dac85c13a346dace4dae2d0a15af91867320957bfd38a43d9eefbb74fe6919e15119b6d805', 100 ); + $this->logger->expects($this->never()) + ->method('info'); $this->limiter->registerUserRequest('MyIdentifier', 100, 100, $user); } diff --git a/tests/lib/Security/RemoteHostValidatorIntegrationTest.php b/tests/lib/Security/RemoteHostValidatorIntegrationTest.php index 6cddb8b4ce9..3d319e828ff 100644 --- a/tests/lib/Security/RemoteHostValidatorIntegrationTest.php +++ b/tests/lib/Security/RemoteHostValidatorIntegrationTest.php @@ -37,7 +37,7 @@ class RemoteHostValidatorIntegrationTest extends TestCase { ); } - public function localHostsData(): array { + public static function localHostsData(): array { return [ ['[::1]'], ['[::]'], @@ -101,7 +101,7 @@ class RemoteHostValidatorIntegrationTest extends TestCase { self::assertTrue($isValid); } - public function externalAddressesData():array { + public static function externalAddressesData():array { return [ ['8.8.8.8'], ['8.8.4.4'], diff --git a/tests/lib/Security/RemoteHostValidatorTest.php b/tests/lib/Security/RemoteHostValidatorTest.php index c698ebbc3c6..46c969d28c1 100644 --- a/tests/lib/Security/RemoteHostValidatorTest.php +++ b/tests/lib/Security/RemoteHostValidatorTest.php @@ -44,7 +44,7 @@ class RemoteHostValidatorTest extends TestCase { ); } - public function dataValid(): array { + public static function dataValid(): array { return [ ['nextcloud.com', true], ['com.one-.nextcloud-one.com', false], diff --git a/tests/lib/Security/SecureRandomTest.php b/tests/lib/Security/SecureRandomTest.php index 8000917579b..490045a4c52 100644 --- a/tests/lib/Security/SecureRandomTest.php +++ b/tests/lib/Security/SecureRandomTest.php @@ -13,7 +13,7 @@ namespace Test\Security; use OC\Security\SecureRandom; class SecureRandomTest extends \Test\TestCase { - public function stringGenerationProvider() { + public static function stringGenerationProvider(): array { return [ [1, 1], [128, 128], @@ -24,7 +24,7 @@ class SecureRandomTest extends \Test\TestCase { ]; } - public static function charCombinations() { + public static function charCombinations(): array { return [ ['CHAR_LOWER', '[a-z]'], ['CHAR_UPPER', '[A-Z]'], @@ -37,7 +37,7 @@ class SecureRandomTest extends \Test\TestCase { protected function setUp(): void { parent::setUp(); - $this->rng = new \OC\Security\SecureRandom(); + $this->rng = new SecureRandom(); } /** @@ -76,7 +76,7 @@ class SecureRandomTest extends \Test\TestCase { $this->assertSame(1, $matchesRegex); } - public static function invalidLengths() { + public static function invalidLengths(): array { return [ [0], [-1], diff --git a/tests/lib/Security/TrustedDomainHelperTest.php b/tests/lib/Security/TrustedDomainHelperTest.php index 656b7a77206..1b9ba20a906 100644 --- a/tests/lib/Security/TrustedDomainHelperTest.php +++ b/tests/lib/Security/TrustedDomainHelperTest.php @@ -63,7 +63,7 @@ class TrustedDomainHelperTest extends \Test\TestCase { /** * @return array */ - public function trustedDomainDataProvider() { + public static function trustedDomainDataProvider(): array { $trustedHostTestList = [ 'host.one.test', 'host.two.test', diff --git a/tests/lib/ServerTest.php b/tests/lib/ServerTest.php index eb9b1dab9f5..58d987a102d 100644 --- a/tests/lib/ServerTest.php +++ b/tests/lib/ServerTest.php @@ -8,6 +8,8 @@ namespace Test; use OC\App\AppStore\Fetcher\AppFetcher; +use OC\Config; +use OC\Server; use OCP\Comments\ICommentsManager; /** @@ -24,11 +26,11 @@ class ServerTest extends \Test\TestCase { protected function setUp(): void { parent::setUp(); - $config = new \OC\Config(\OC::$configDir); - $this->server = new \OC\Server('', $config); + $config = new Config(\OC::$configDir); + $this->server = new Server('', $config); } - public function dataTestQuery() { + public static function dataTestQuery(): array { return [ ['\OCP\Activity\IManager', '\OC\Activity\Manager'], ['\OCP\IConfig', '\OC\AllConfig'], diff --git a/tests/lib/Session/CryptoSessionDataTest.php b/tests/lib/Session/CryptoSessionDataTest.php index 6c1536f4769..85cdcfbf83b 100644 --- a/tests/lib/Session/CryptoSessionDataTest.php +++ b/tests/lib/Session/CryptoSessionDataTest.php @@ -8,6 +8,7 @@ namespace Test\Session; use OC\Session\CryptoSessionData; +use OC\Session\Memory; use OCP\Security\ICrypto; class CryptoSessionDataTest extends Session { @@ -20,7 +21,7 @@ class CryptoSessionDataTest extends Session { protected function setUp(): void { parent::setUp(); - $this->wrappedSession = new \OC\Session\Memory(); + $this->wrappedSession = new Memory(); $this->crypto = $this->createMock(ICrypto::class); $this->crypto->expects($this->any()) ->method('encrypt') diff --git a/tests/lib/Session/MemoryTest.php b/tests/lib/Session/MemoryTest.php index 24bfc06b274..40977f1f3fb 100644 --- a/tests/lib/Session/MemoryTest.php +++ b/tests/lib/Session/MemoryTest.php @@ -8,15 +8,18 @@ namespace Test\Session; +use OC\Session\Memory; +use OCP\Session\Exceptions\SessionNotAvailableException; + class MemoryTest extends Session { protected function setUp(): void { parent::setUp(); - $this->instance = new \OC\Session\Memory(); + $this->instance = new Memory(); } public function testThrowsExceptionOnGetId(): void { - $this->expectException(\OCP\Session\Exceptions\SessionNotAvailableException::class); + $this->expectException(SessionNotAvailableException::class); $this->instance->getId(); } diff --git a/tests/lib/Settings/DeclarativeManagerTest.php b/tests/lib/Settings/DeclarativeManagerTest.php index 522264acd8c..d279dfa46f0 100644 --- a/tests/lib/Settings/DeclarativeManagerTest.php +++ b/tests/lib/Settings/DeclarativeManagerTest.php @@ -18,6 +18,7 @@ use OCP\IAppConfig; use OCP\IConfig; use OCP\IGroupManager; use OCP\IUser; +use OCP\Security\ICrypto; use OCP\Settings\DeclarativeSettingsTypes; use OCP\Settings\Events\DeclarativeSettingsSetValueEvent; use OCP\Settings\IDeclarativeManager; @@ -50,6 +51,9 @@ class DeclarativeManagerTest extends TestCase { /** @var LoggerInterface|MockObject */ private $logger; + /** @var ICrypto|MockObject */ + private $crypto; + /** @var IUser|MockObject */ private $user; @@ -215,6 +219,36 @@ class DeclarativeManagerTest extends TestCase { ], ], ], + [ + 'id' => 'test_sensitive_field', + 'title' => 'Sensitive text field', + 'description' => 'Set some secure value setting that is stored encrypted', + 'type' => DeclarativeSettingsTypes::TEXT, + 'label' => 'Sensitive field', + 'placeholder' => 'Set secure value', + 'default' => '', + 'sensitive' => true, // only for TEXT, PASSWORD types + ], + [ + 'id' => 'test_sensitive_field_2', + 'title' => 'Sensitive password field', + 'description' => 'Set some password setting that is stored encrypted', + 'type' => DeclarativeSettingsTypes::PASSWORD, + 'label' => 'Sensitive field', + 'placeholder' => 'Set secure value', + 'default' => '', + 'sensitive' => true, // only for TEXT, PASSWORD types + ], + [ + 'id' => 'test_non_sensitive_field', + 'title' => 'Password field', + 'description' => 'Set some password setting', + 'type' => DeclarativeSettingsTypes::PASSWORD, + 'label' => 'Password field', + 'placeholder' => 'Set secure value', + 'default' => '', + 'sensitive' => false, + ], ], ]; @@ -229,6 +263,7 @@ class DeclarativeManagerTest extends TestCase { $this->config = $this->createMock(IConfig::class); $this->appConfig = $this->createMock(IAppConfig::class); $this->logger = $this->createMock(LoggerInterface::class); + $this->crypto = $this->createMock(ICrypto::class); $this->declarativeManager = new DeclarativeManager( $this->eventDispatcher, @@ -236,7 +271,8 @@ class DeclarativeManagerTest extends TestCase { $this->coordinator, $this->config, $this->appConfig, - $this->logger + $this->logger, + $this->crypto, ); $this->user = $this->createMock(IUser::class); diff --git a/tests/lib/Settings/ManagerTest.php b/tests/lib/Settings/ManagerTest.php index 38b0262bb55..e4672235711 100644 --- a/tests/lib/Settings/ManagerTest.php +++ b/tests/lib/Settings/ManagerTest.php @@ -8,6 +8,7 @@ namespace OC\Settings\Tests\AppInfo; use OC\Settings\AuthorizedGroupMapper; use OC\Settings\Manager; +use OCA\WorkflowEngine\Settings\Section; use OCP\Group\ISubAdmin; use OCP\IDBConnection; use OCP\IGroupManager; @@ -15,6 +16,7 @@ use OCP\IL10N; use OCP\IServerContainer; use OCP\IURLGenerator; use OCP\L10N\IFactory; +use OCP\Server; use OCP\Settings\ISettings; use OCP\Settings\ISubAdminSettings; use PHPUnit\Framework\MockObject\MockObject; @@ -65,11 +67,11 @@ class ManagerTest extends TestCase { } public function testGetAdminSections(): void { - $this->manager->registerSection('admin', \OCA\WorkflowEngine\Settings\Section::class); + $this->manager->registerSection('admin', Section::class); - $section = \OC::$server->query(\OCA\WorkflowEngine\Settings\Section::class); + $section = Server::get(Section::class); $this->container->method('get') - ->with(\OCA\WorkflowEngine\Settings\Section::class) + ->with(Section::class) ->willReturn($section); $this->assertEquals([ @@ -78,11 +80,11 @@ class ManagerTest extends TestCase { } public function testGetPersonalSections(): void { - $this->manager->registerSection('personal', \OCA\WorkflowEngine\Settings\Section::class); + $this->manager->registerSection('personal', Section::class); - $section = \OC::$server->query(\OCA\WorkflowEngine\Settings\Section::class); + $section = Server::get(Section::class); $this->container->method('get') - ->with(\OCA\WorkflowEngine\Settings\Section::class) + ->with(Section::class) ->willReturn($section); $this->assertEquals([ @@ -202,13 +204,13 @@ class ManagerTest extends TestCase { ->method('t') ->willReturnArgument(0); - $this->manager->registerSection('personal', \OCA\WorkflowEngine\Settings\Section::class); - $this->manager->registerSection('admin', \OCA\WorkflowEngine\Settings\Section::class); + $this->manager->registerSection('personal', Section::class); + $this->manager->registerSection('admin', Section::class); - $section = \OC::$server->query(\OCA\WorkflowEngine\Settings\Section::class); + $section = Server::get(Section::class); $this->container->method('get') - ->with(\OCA\WorkflowEngine\Settings\Section::class) + ->with(Section::class) ->willReturn($section); $this->assertEquals([ diff --git a/tests/lib/SetupTest.php b/tests/lib/SetupTest.php index b5e1b7000c3..f82060dcfa2 100644 --- a/tests/lib/SetupTest.php +++ b/tests/lib/SetupTest.php @@ -42,7 +42,7 @@ class SetupTest extends \Test\TestCase { $this->random = $this->createMock(ISecureRandom::class); $this->installer = $this->createMock(Installer::class); $this->setupClass = $this->getMockBuilder(Setup::class) - ->setMethods(['class_exists', 'is_callable', 'getAvailableDbDriversForPdo']) + ->onlyMethods(['class_exists', 'is_callable', 'getAvailableDbDriversForPdo']) ->setConstructorArgs([$this->config, $this->iniWrapper, $this->l10nFactory, $this->defaults, $this->logger, $this->random, $this->installer]) ->getMock(); } @@ -151,7 +151,7 @@ class SetupTest extends \Test\TestCase { $this->assertSame($webRoot, $expected); } - public function findWebRootProvider(): array { + public static function findWebRootProvider(): array { return [ 'https://www.example.com/nextcloud/' => ['https://www.example.com/nextcloud/', '/nextcloud'], 'https://www.example.com/nextcloud' => ['https://www.example.com/nextcloud', '/nextcloud'], diff --git a/tests/lib/Share/Backend.php b/tests/lib/Share/Backend.php index 489f4a9bfd1..8f38d216ff5 100644 --- a/tests/lib/Share/Backend.php +++ b/tests/lib/Share/Backend.php @@ -10,8 +10,9 @@ namespace Test\Share; use OC\Share20\Manager; use OCP\Server; use OCP\Share\IShare; +use OCP\Share_Backend; -class Backend implements \OCP\Share_Backend { +class Backend implements Share_Backend { public const FORMAT_SOURCE = 0; public const FORMAT_TARGET = 1; public const FORMAT_PERMISSIONS = 2; diff --git a/tests/lib/Share/HelperTest.php b/tests/lib/Share/HelperTest.php index c923bb0480a..b39720181b6 100644 --- a/tests/lib/Share/HelperTest.php +++ b/tests/lib/Share/HelperTest.php @@ -7,12 +7,14 @@ namespace Test\Share; +use OC\Share\Helper; + /** * @group DB * Class Helper */ class HelperTest extends \Test\TestCase { - public function expireDateProvider() { + public static function expireDateProvider(): array { return [ // no default expire date, we take the users expire date [['defaultExpireDateSet' => false], 2000000000, 2000010000, 2000010000], @@ -37,7 +39,7 @@ class HelperTest extends \Test\TestCase { * @dataProvider expireDateProvider */ public function testCalculateExpireDate($defaultExpireSettings, $creationTime, $userExpireDate, $expected): void { - $result = \OC\Share\Helper::calculateExpireDate($defaultExpireSettings, $creationTime, $userExpireDate); + $result = Helper::calculateExpireDate($defaultExpireSettings, $creationTime, $userExpireDate); $this->assertSame($expected, $result); } @@ -50,11 +52,11 @@ class HelperTest extends \Test\TestCase { */ public function testIsSameUserOnSameServer($user1, $server1, $user2, $server2, $expected): void { $this->assertSame($expected, - \OC\Share\Helper::isSameUserOnSameServer($user1, $server1, $user2, $server2) + Helper::isSameUserOnSameServer($user1, $server1, $user2, $server2) ); } - public function dataTestCompareServerAddresses() { + public static function dataTestCompareServerAddresses(): array { return [ ['user1', 'http://server1', 'user1', 'http://server1', true], ['user1', 'https://server1', 'user1', 'http://server1', true], diff --git a/tests/lib/Share/ShareTest.php b/tests/lib/Share/ShareTest.php index 60891e10ca2..6814eac4e3c 100644 --- a/tests/lib/Share/ShareTest.php +++ b/tests/lib/Share/ShareTest.php @@ -8,11 +8,15 @@ namespace Test\Share; use OC\Share\Share; +use OC\SystemConfig; +use OCP\Constants; +use OCP\IConfig; use OCP\IDBConnection; use OCP\IGroup; use OCP\IGroupManager; use OCP\IUser; use OCP\IUserManager; +use OCP\Server; /** * Class Test_Share @@ -45,8 +49,8 @@ class ShareTest extends \Test\TestCase { protected function setUp(): void { parent::setUp(); - $this->groupManager = \OC::$server->getGroupManager(); - $this->userManager = \OC::$server->getUserManager(); + $this->groupManager = Server::get(IGroupManager::class); + $this->userManager = Server::get(IUserManager::class); $this->userManager->clearBackends(); $this->userManager->registerBackend(new \Test\Util\User\Dummy()); @@ -66,7 +70,7 @@ class ShareTest extends \Test\TestCase { $this->group1 = $this->groupManager->createGroup($this->getUniqueID('group1_')); $this->group2 = $this->groupManager->createGroup($this->getUniqueID('group2_')); $this->groupAndUser_group = $this->groupManager->createGroup($groupAndUserId); - $this->connection = \OC::$server->get(IDBConnection::class); + $this->connection = Server::get(IDBConnection::class); $this->group1->addUser($this->user1); $this->group1->addUser($this->user2); @@ -78,9 +82,9 @@ class ShareTest extends \Test\TestCase { Share::registerBackend('test', 'Test\Share\Backend'); \OC_Hook::clear('OCP\\Share'); - \OC::registerShareHooks(\OC::$server->getSystemConfig()); - $this->resharing = \OC::$server->getConfig()->getAppValue('core', 'shareapi_allow_resharing', 'yes'); - \OC::$server->getConfig()->setAppValue('core', 'shareapi_allow_resharing', 'yes'); + \OC::registerShareHooks(Server::get(SystemConfig::class)); + $this->resharing = Server::get(IConfig::class)->getAppValue('core', 'shareapi_allow_resharing', 'yes'); + Server::get(IConfig::class)->setAppValue('core', 'shareapi_allow_resharing', 'yes'); // 20 Minutes in the past, 20 minutes in the future. $now = time(); @@ -93,7 +97,7 @@ class ShareTest extends \Test\TestCase { $query = $this->connection->getQueryBuilder(); $query->delete('share')->andWhere($query->expr()->eq('item_type', $query->createNamedParameter('test'))); $query->executeStatement(); - \OC::$server->getConfig()->setAppValue('core', 'shareapi_allow_resharing', $this->resharing); + Server::get(IConfig::class)->setAppValue('core', 'shareapi_allow_resharing', $this->resharing); $this->user1->delete(); $this->user2->delete(); @@ -132,7 +136,7 @@ class ShareTest extends \Test\TestCase { $this->assertSame($expectedResult, $result); } - public function urls() { + public static function urls(): array { return [ ['http://owncloud.org', 'owncloud.org'], ['https://owncloud.org', 'owncloud.org'], @@ -161,25 +165,25 @@ class ShareTest extends \Test\TestCase { } } - public function dataProviderTestGroupItems() { + public static function dataProviderTestGroupItems(): array { return [ // one array with one share [ [ // input - ['item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_ALL, 'item_target' => 't1']], + ['item_source' => 1, 'permissions' => Constants::PERMISSION_ALL, 'item_target' => 't1']], [ // expected result - ['item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_ALL, 'item_target' => 't1']]], + ['item_source' => 1, 'permissions' => Constants::PERMISSION_ALL, 'item_target' => 't1']]], // two shares both point to the same source [ [ // input - ['item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_READ, 'item_target' => 't1'], - ['item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_UPDATE, 'item_target' => 't1'], + ['item_source' => 1, 'permissions' => Constants::PERMISSION_READ, 'item_target' => 't1'], + ['item_source' => 1, 'permissions' => Constants::PERMISSION_UPDATE, 'item_target' => 't1'], ], [ // expected result - ['item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE, 'item_target' => 't1', + ['item_source' => 1, 'permissions' => Constants::PERMISSION_READ | Constants::PERMISSION_UPDATE, 'item_target' => 't1', 'grouped' => [ - ['item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_READ, 'item_target' => 't1'], - ['item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_UPDATE, 'item_target' => 't1'], + ['item_source' => 1, 'permissions' => Constants::PERMISSION_READ, 'item_target' => 't1'], + ['item_source' => 1, 'permissions' => Constants::PERMISSION_UPDATE, 'item_target' => 't1'], ] ], ] @@ -187,29 +191,29 @@ class ShareTest extends \Test\TestCase { // two shares both point to the same source but with different targets [ [ // input - ['item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_READ, 'item_target' => 't1'], - ['item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_UPDATE, 'item_target' => 't2'], + ['item_source' => 1, 'permissions' => Constants::PERMISSION_READ, 'item_target' => 't1'], + ['item_source' => 1, 'permissions' => Constants::PERMISSION_UPDATE, 'item_target' => 't2'], ], [ // expected result - ['item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_READ, 'item_target' => 't1'], - ['item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_UPDATE, 'item_target' => 't2'], + ['item_source' => 1, 'permissions' => Constants::PERMISSION_READ, 'item_target' => 't1'], + ['item_source' => 1, 'permissions' => Constants::PERMISSION_UPDATE, 'item_target' => 't2'], ] ], // three shares two point to the same source [ [ // input - ['item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_READ, 'item_target' => 't1'], - ['item_source' => 2, 'permissions' => \OCP\Constants::PERMISSION_CREATE, 'item_target' => 't2'], - ['item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_UPDATE, 'item_target' => 't1'], + ['item_source' => 1, 'permissions' => Constants::PERMISSION_READ, 'item_target' => 't1'], + ['item_source' => 2, 'permissions' => Constants::PERMISSION_CREATE, 'item_target' => 't2'], + ['item_source' => 1, 'permissions' => Constants::PERMISSION_UPDATE, 'item_target' => 't1'], ], [ // expected result - ['item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE, 'item_target' => 't1', + ['item_source' => 1, 'permissions' => Constants::PERMISSION_READ | Constants::PERMISSION_UPDATE, 'item_target' => 't1', 'grouped' => [ - ['item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_READ, 'item_target' => 't1'], - ['item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_UPDATE, 'item_target' => 't1'], + ['item_source' => 1, 'permissions' => Constants::PERMISSION_READ, 'item_target' => 't1'], + ['item_source' => 1, 'permissions' => Constants::PERMISSION_UPDATE, 'item_target' => 't1'], ] ], - ['item_source' => 2, 'permissions' => \OCP\Constants::PERMISSION_CREATE, 'item_target' => 't2'], + ['item_source' => 2, 'permissions' => Constants::PERMISSION_CREATE, 'item_target' => 't2'], ] ], ]; diff --git a/tests/lib/Share20/DefaultShareProviderTest.php b/tests/lib/Share20/DefaultShareProviderTest.php index 75a70d558c1..1b2745882f1 100644 --- a/tests/lib/Share20/DefaultShareProviderTest.php +++ b/tests/lib/Share20/DefaultShareProviderTest.php @@ -9,8 +9,11 @@ namespace Test\Share20; use OC\Files\Node\Node; use OC\Share20\DefaultShareProvider; +use OC\Share20\Exception\ProviderException; +use OC\Share20\Share; use OC\Share20\ShareAttributes; use OCP\AppFramework\Utility\ITimeFactory; +use OCP\Constants; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\Defaults; use OCP\Files\File; @@ -25,6 +28,8 @@ use OCP\IUser; use OCP\IUserManager; use OCP\L10N\IFactory; use OCP\Mail\IMailer; +use OCP\Server; +use OCP\Share\Exceptions\ShareNotFound; use OCP\Share\IManager as IShareManager; use OCP\Share\IShare; use PHPUnit\Framework\MockObject\MockObject; @@ -76,7 +81,7 @@ class DefaultShareProviderTest extends \Test\TestCase { protected IShareManager&MockObject $shareManager; protected function setUp(): void { - $this->dbConn = \OC::$server->getDatabaseConnection(); + $this->dbConn = Server::get(IDBConnection::class); $this->userManager = $this->createMock(IUserManager::class); $this->groupManager = $this->createMock(IGroupManager::class); $this->rootFolder = $this->createMock(IRootFolder::class); @@ -177,7 +182,7 @@ class DefaultShareProviderTest extends \Test\TestCase { public function testGetShareByIdNotExist(): void { - $this->expectException(\OCP\Share\Exceptions\ShareNotFound::class); + $this->expectException(ShareNotFound::class); $this->provider->getShareById(1); } @@ -472,7 +477,7 @@ class DefaultShareProviderTest extends \Test\TestCase { $this->logger, $this->shareManager, ]) - ->setMethods(['getShareById']) + ->onlyMethods(['getShareById']) ->getMock(); $provider->delete($share); @@ -569,7 +574,7 @@ class DefaultShareProviderTest extends \Test\TestCase { $this->logger, $this->shareManager, ]) - ->setMethods(['getShareById']) + ->onlyMethods(['getShareById']) ->getMock(); $provider->delete($share); @@ -674,7 +679,7 @@ class DefaultShareProviderTest extends \Test\TestCase { } public function testCreateUserShare(): void { - $share = new \OC\Share20\Share($this->rootFolder, $this->userManager); + $share = new Share($this->rootFolder, $this->userManager); $shareOwner = $this->createMock(IUser::class); $shareOwner->method('getUID')->willReturn('shareOwner'); @@ -746,7 +751,7 @@ class DefaultShareProviderTest extends \Test\TestCase { } public function testCreateGroupShare(): void { - $share = new \OC\Share20\Share($this->rootFolder, $this->userManager); + $share = new Share($this->rootFolder, $this->userManager); $shareOwner = $this->createMock(IUser::class); $shareOwner->method('getUID')->willReturn('shareOwner'); @@ -816,7 +821,7 @@ class DefaultShareProviderTest extends \Test\TestCase { } public function testCreateLinkShare(): void { - $share = new \OC\Share20\Share($this->rootFolder, $this->userManager); + $share = new Share($this->rootFolder, $this->userManager); $shareOwner = $this->createMock(IUser::class); $shareOwner->method('getUID')->willReturn('shareOwner'); @@ -940,7 +945,7 @@ class DefaultShareProviderTest extends \Test\TestCase { } public function testGetShareByTokenNotFound(): void { - $this->expectException(\OCP\Share\Exceptions\ShareNotFound::class); + $this->expectException(ShareNotFound::class); $this->provider->getShareByToken('invalidtoken'); } @@ -968,7 +973,7 @@ class DefaultShareProviderTest extends \Test\TestCase { return $qb->getLastInsertId(); } - public function storageAndFileNameProvider() { + public static function storageAndFileNameProvider(): array { return [ // regular file on regular storage ['home::shareOwner', 'files/test.txt', 'files/test2.txt'], @@ -1281,7 +1286,7 @@ class DefaultShareProviderTest extends \Test\TestCase { $this->assertEquals(IShare::TYPE_GROUP, $share->getShareType()); } - public function shareTypesProvider() { + public static function shareTypesProvider(): array { return [ [IShare::TYPE_USER, false], [IShare::TYPE_GROUP, false], @@ -1679,7 +1684,7 @@ class DefaultShareProviderTest extends \Test\TestCase { public function testDeleteFromSelfGroupDoesNotExist(): void { - $this->expectException(\OC\Share20\Exception\ProviderException::class); + $this->expectException(ProviderException::class); $this->expectExceptionMessage('Group "group" does not exist'); $qb = $this->dbConn->getQueryBuilder(); @@ -1770,7 +1775,7 @@ class DefaultShareProviderTest extends \Test\TestCase { public function testDeleteFromSelfUserNotRecipient(): void { - $this->expectException(\OC\Share20\Exception\ProviderException::class); + $this->expectException(ProviderException::class); $this->expectExceptionMessage('Recipient does not match'); $qb = $this->dbConn->getQueryBuilder(); @@ -1813,7 +1818,7 @@ class DefaultShareProviderTest extends \Test\TestCase { public function testDeleteFromSelfLink(): void { - $this->expectException(\OC\Share20\Exception\ProviderException::class); + $this->expectException(ProviderException::class); $this->expectExceptionMessage('Invalid shareType'); $qb = $this->dbConn->getQueryBuilder(); @@ -2276,7 +2281,7 @@ class DefaultShareProviderTest extends \Test\TestCase { $this->assertSame('/ultraNewTarget', $share->getTarget()); } - public function dataDeleteUser() { + public static function dataDeleteUser(): array { return [ [IShare::TYPE_USER, 'a', 'b', 'c', 'a', true], [IShare::TYPE_USER, 'a', 'b', 'c', 'b', false], @@ -2334,7 +2339,7 @@ class DefaultShareProviderTest extends \Test\TestCase { $this->assertCount($rowDeleted ? 0 : 1, $data); } - public function dataDeleteUserGroup() { + public static function dataDeleteUserGroup(): array { return [ ['a', 'b', 'c', 'a', true, true], ['a', 'b', 'c', 'b', false, false], @@ -2403,7 +2408,7 @@ class DefaultShareProviderTest extends \Test\TestCase { $this->assertCount($groupShareDeleted ? 0 : 1, $data); } - public function dataGroupDeleted() { + public static function dataGroupDeleted(): array { return [ [ [ @@ -2497,7 +2502,7 @@ class DefaultShareProviderTest extends \Test\TestCase { $this->assertCount($shouldBeDeleted ? 0 : count($ids), $data); } - public function dataUserDeletedFromGroup() { + public static function dataUserDeletedFromGroup(): array { return [ ['group1', 'user1', true], ['group1', 'user2', false], @@ -2556,9 +2561,9 @@ class DefaultShareProviderTest extends \Test\TestCase { } public function testGetSharesInFolder(): void { - $userManager = \OC::$server->getUserManager(); - $groupManager = \OC::$server->getGroupManager(); - $rootFolder = \OC::$server->get(IRootFolder::class); + $userManager = Server::get(IUserManager::class); + $groupManager = Server::get(IGroupManager::class); + $rootFolder = Server::get(IRootFolder::class); $provider = new DefaultShareProvider( $this->dbConn, @@ -2587,14 +2592,14 @@ class DefaultShareProviderTest extends \Test\TestCase { $file1 = $folder1->newFile('bar'); $folder2 = $folder1->newFolder('baz'); - $shareManager = \OC::$server->get(IShareManager::class); + $shareManager = Server::get(IShareManager::class); $share1 = $shareManager->newShare(); $share1->setNode($folder1) ->setSharedBy($u1->getUID()) ->setSharedWith($u2->getUID()) ->setShareOwner($u1->getUID()) ->setShareType(IShare::TYPE_USER) - ->setPermissions(\OCP\Constants::PERMISSION_ALL); + ->setPermissions(Constants::PERMISSION_ALL); $share1 = $this->provider->create($share1); $share2 = $shareManager->newShare(); @@ -2603,7 +2608,7 @@ class DefaultShareProviderTest extends \Test\TestCase { ->setSharedWith($u3->getUID()) ->setShareOwner($u1->getUID()) ->setShareType(IShare::TYPE_USER) - ->setPermissions(\OCP\Constants::PERMISSION_READ); + ->setPermissions(Constants::PERMISSION_READ); $share2 = $this->provider->create($share2); $share3 = $shareManager->newShare(); @@ -2611,7 +2616,7 @@ class DefaultShareProviderTest extends \Test\TestCase { ->setSharedBy($u2->getUID()) ->setShareOwner($u1->getUID()) ->setShareType(IShare::TYPE_LINK) - ->setPermissions(\OCP\Constants::PERMISSION_READ); + ->setPermissions(Constants::PERMISSION_READ); $share3 = $this->provider->create($share3); $share4 = $shareManager->newShare(); @@ -2620,7 +2625,7 @@ class DefaultShareProviderTest extends \Test\TestCase { ->setSharedWith($g1->getGID()) ->setShareOwner($u1->getUID()) ->setShareType(IShare::TYPE_GROUP) - ->setPermissions(\OCP\Constants::PERMISSION_READ); + ->setPermissions(Constants::PERMISSION_READ); $share4 = $this->provider->create($share4); $result = $provider->getSharesInFolder($u1->getUID(), $folder1, false); @@ -2656,9 +2661,9 @@ class DefaultShareProviderTest extends \Test\TestCase { } public function testGetAccessListNoCurrentAccessRequired(): void { - $userManager = \OC::$server->getUserManager(); - $groupManager = \OC::$server->getGroupManager(); - $rootFolder = \OC::$server->get(IRootFolder::class); + $userManager = Server::get(IUserManager::class); + $groupManager = Server::get(IGroupManager::class); + $rootFolder = Server::get(IRootFolder::class); $provider = new DefaultShareProvider( $this->dbConn, @@ -2693,14 +2698,14 @@ class DefaultShareProviderTest extends \Test\TestCase { $this->assertCount(0, $result['users']); $this->assertFalse($result['public']); - $shareManager = \OC::$server->get(IShareManager::class); + $shareManager = Server::get(IShareManager::class); $share1 = $shareManager->newShare(); $share1->setNode($folder1) ->setSharedBy($u1->getUID()) ->setSharedWith($u2->getUID()) ->setShareOwner($u1->getUID()) ->setShareType(IShare::TYPE_USER) - ->setPermissions(\OCP\Constants::PERMISSION_ALL); + ->setPermissions(Constants::PERMISSION_ALL); $share1 = $this->provider->create($share1); $share1 = $provider->acceptShare($share1, $u2->getUid()); @@ -2710,7 +2715,7 @@ class DefaultShareProviderTest extends \Test\TestCase { ->setSharedWith($g1->getGID()) ->setShareOwner($u1->getUID()) ->setShareType(IShare::TYPE_GROUP) - ->setPermissions(\OCP\Constants::PERMISSION_ALL); + ->setPermissions(Constants::PERMISSION_ALL); $share2 = $this->provider->create($share2); $shareManager->deleteFromSelf($share2, $u4->getUID()); @@ -2723,7 +2728,7 @@ class DefaultShareProviderTest extends \Test\TestCase { ->setSharedBy($u3->getUID()) ->setShareOwner($u1->getUID()) ->setShareType(IShare::TYPE_LINK) - ->setPermissions(\OCP\Constants::PERMISSION_READ); + ->setPermissions(Constants::PERMISSION_READ); $share3 = $this->provider->create($share3); $share4 = $shareManager->newShare(); @@ -2732,7 +2737,7 @@ class DefaultShareProviderTest extends \Test\TestCase { ->setSharedWith($u5->getUID()) ->setShareOwner($u1->getUID()) ->setShareType(IShare::TYPE_USER) - ->setPermissions(\OCP\Constants::PERMISSION_READ); + ->setPermissions(Constants::PERMISSION_READ); $share4 = $this->provider->create($share4); $share4 = $provider->acceptShare($share4, $u5->getUid()); @@ -2759,9 +2764,9 @@ class DefaultShareProviderTest extends \Test\TestCase { } public function testGetAccessListCurrentAccessRequired(): void { - $userManager = \OC::$server->getUserManager(); - $groupManager = \OC::$server->getGroupManager(); - $rootFolder = \OC::$server->get(IRootFolder::class); + $userManager = Server::get(IUserManager::class); + $groupManager = Server::get(IGroupManager::class); + $rootFolder = Server::get(IRootFolder::class); $provider = new DefaultShareProvider( $this->dbConn, @@ -2796,14 +2801,14 @@ class DefaultShareProviderTest extends \Test\TestCase { $this->assertCount(0, $result['users']); $this->assertFalse($result['public']); - $shareManager = \OC::$server->get(IShareManager::class); + $shareManager = Server::get(IShareManager::class); $share1 = $shareManager->newShare(); $share1->setNode($folder1) ->setSharedBy($u1->getUID()) ->setSharedWith($u2->getUID()) ->setShareOwner($u1->getUID()) ->setShareType(IShare::TYPE_USER) - ->setPermissions(\OCP\Constants::PERMISSION_ALL); + ->setPermissions(Constants::PERMISSION_ALL); $share1 = $this->provider->create($share1); $share1 = $provider->acceptShare($share1, $u2->getUid()); @@ -2813,7 +2818,7 @@ class DefaultShareProviderTest extends \Test\TestCase { ->setSharedWith($g1->getGID()) ->setShareOwner($u1->getUID()) ->setShareType(IShare::TYPE_GROUP) - ->setPermissions(\OCP\Constants::PERMISSION_ALL); + ->setPermissions(Constants::PERMISSION_ALL); $share2 = $this->provider->create($share2); $share2 = $provider->acceptShare($share2, $u3->getUid()); $share2 = $provider->acceptShare($share2, $u4->getUid()); @@ -2825,7 +2830,7 @@ class DefaultShareProviderTest extends \Test\TestCase { ->setSharedBy($u3->getUID()) ->setShareOwner($u1->getUID()) ->setShareType(IShare::TYPE_LINK) - ->setPermissions(\OCP\Constants::PERMISSION_READ); + ->setPermissions(Constants::PERMISSION_READ); $share3 = $this->provider->create($share3); $share4 = $shareManager->newShare(); @@ -2834,7 +2839,7 @@ class DefaultShareProviderTest extends \Test\TestCase { ->setSharedWith($u5->getUID()) ->setShareOwner($u1->getUID()) ->setShareType(IShare::TYPE_USER) - ->setPermissions(\OCP\Constants::PERMISSION_READ); + ->setPermissions(Constants::PERMISSION_READ); $share4 = $this->provider->create($share4); $share4 = $provider->acceptShare($share4, $u5->getUid()); diff --git a/tests/lib/Share20/LegacyHooksTest.php b/tests/lib/Share20/LegacyHooksTest.php index 0761eed592b..f7e9d77bf03 100644 --- a/tests/lib/Share20/LegacyHooksTest.php +++ b/tests/lib/Share20/LegacyHooksTest.php @@ -6,6 +6,7 @@ namespace Test\Share20; +use OC\EventDispatcher\EventDispatcher; use OC\Share20\LegacyHooks; use OC\Share20\Manager; use OCP\Constants; @@ -13,6 +14,7 @@ use OCP\EventDispatcher\IEventDispatcher; use OCP\Files\Cache\ICacheEntry; use OCP\Files\File; use OCP\IServerContainer; +use OCP\Server; use OCP\Share\Events\BeforeShareCreatedEvent; use OCP\Share\Events\BeforeShareDeletedEvent; use OCP\Share\Events\ShareCreatedEvent; @@ -20,9 +22,23 @@ use OCP\Share\Events\ShareDeletedEvent; use OCP\Share\Events\ShareDeletedFromSelfEvent; use OCP\Share\IManager as IShareManager; use OCP\Share\IShare; +use OCP\Util; use Psr\Log\LoggerInterface; use Test\TestCase; +class Dummy { + public function postShare() { + } + public function preShare() { + } + public function postFromSelf() { + } + public function post() { + } + public function pre() { + } +} + class LegacyHooksTest extends TestCase { /** @var LegacyHooks */ private $hooks; @@ -38,9 +54,9 @@ class LegacyHooksTest extends TestCase { $symfonyDispatcher = new \Symfony\Component\EventDispatcher\EventDispatcher(); $logger = $this->createMock(LoggerInterface::class); - $this->eventDispatcher = new \OC\EventDispatcher\EventDispatcher($symfonyDispatcher, \OC::$server->get(IServerContainer::class), $logger); + $this->eventDispatcher = new EventDispatcher($symfonyDispatcher, Server::get(IServerContainer::class), $logger); $this->hooks = new LegacyHooks($this->eventDispatcher); - $this->manager = \OC::$server->get(IShareManager::class); + $this->manager = Server::get(IShareManager::class); } public function testPreUnshare(): void { @@ -60,8 +76,8 @@ class LegacyHooksTest extends TestCase { ->setTarget('myTarget') ->setNodeCacheEntry($info); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['pre'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'pre_unshare', $hookListner, 'pre'); + $hookListner = $this->getMockBuilder(Dummy::class)->onlyMethods(['pre'])->getMock(); + Util::connectHook('OCP\Share', 'pre_unshare', $hookListner, 'pre'); $hookListnerExpectsPre = [ 'id' => 42, @@ -101,8 +117,8 @@ class LegacyHooksTest extends TestCase { ->setTarget('myTarget') ->setNodeCacheEntry($info); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_unshare', $hookListner, 'post'); + $hookListner = $this->getMockBuilder(Dummy::class)->onlyMethods(['post'])->getMock(); + Util::connectHook('OCP\Share', 'post_unshare', $hookListner, 'post'); $hookListnerExpectsPost = [ 'id' => 42, @@ -155,8 +171,8 @@ class LegacyHooksTest extends TestCase { ->setTarget('myTarget') ->setNodeCacheEntry($info); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['postFromSelf'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_unshareFromSelf', $hookListner, 'postFromSelf'); + $hookListner = $this->getMockBuilder(Dummy::class)->onlyMethods(['postFromSelf'])->getMock(); + Util::connectHook('OCP\Share', 'post_unshareFromSelf', $hookListner, 'postFromSelf'); $hookListnerExpectsPostFromSelf = [ 'id' => 42, @@ -212,8 +228,8 @@ class LegacyHooksTest extends TestCase { ->setToken('token'); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['preShare'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'pre_shared', $hookListner, 'preShare'); + $hookListner = $this->getMockBuilder(Dummy::class)->onlyMethods(['preShare'])->getMock(); + Util::connectHook('OCP\Share', 'pre_shared', $hookListner, 'preShare'); $run = true; $error = ''; @@ -260,8 +276,8 @@ class LegacyHooksTest extends TestCase { ->setToken('token'); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['preShare'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'pre_shared', $hookListner, 'preShare'); + $hookListner = $this->getMockBuilder(Dummy::class)->onlyMethods(['preShare'])->getMock(); + Util::connectHook('OCP\Share', 'pre_shared', $hookListner, 'preShare'); $run = true; $error = ''; @@ -285,7 +301,7 @@ class LegacyHooksTest extends TestCase { ->expects($this->exactly(1)) ->method('preShare') ->with($expected) - ->willReturnCallback(function ($data) { + ->willReturnCallback(function ($data): void { $data['run'] = false; $data['error'] = 'I error'; }); @@ -316,8 +332,8 @@ class LegacyHooksTest extends TestCase { ->setToken('token'); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['postShare'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_shared', $hookListner, 'postShare'); + $hookListner = $this->getMockBuilder(Dummy::class)->onlyMethods(['postShare'])->getMock(); + Util::connectHook('OCP\Share', 'post_shared', $hookListner, 'postShare'); $expected = [ 'id' => 42, diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php index 357ae9ee678..346e6a49206 100644 --- a/tests/lib/Share20/ManagerTest.php +++ b/tests/lib/Share20/ManagerTest.php @@ -12,10 +12,11 @@ use OC\Files\Mount\MoveableMount; use OC\Files\Utils\PathHelper; use OC\KnownUser\KnownUserService; use OC\Share20\DefaultShareProvider; -use OC\Share20\Exception; +use OC\Share20\Exception\ProviderException; use OC\Share20\Manager; use OC\Share20\Share; use OC\Share20\ShareDisableChecker; +use OCP\Constants; use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventDispatcher; use OCP\Files\File; @@ -56,6 +57,7 @@ use OCP\Share\IProviderFactory; use OCP\Share\IShare; use OCP\Share\IShareProvider; use OCP\Share\IShareProviderSupportsAllSharesInFolder; +use OCP\Util; use PHPUnit\Framework\MockObject\MockBuilder; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; @@ -278,7 +280,7 @@ class ManagerTest extends \Test\TestCase { ]; $this->dispatcher->expects($this->exactly(2)) ->method('dispatchTyped') - ->willReturnCallback(function ($event) use (&$calls, $share) { + ->willReturnCallback(function ($event) use (&$calls, $share): void { $expected = array_shift($calls); $this->assertInstanceOf($expected, $event); $this->assertEquals($share, $event->getShare()); @@ -321,7 +323,7 @@ class ManagerTest extends \Test\TestCase { ]; $this->dispatcher->expects($this->exactly(2)) ->method('dispatchTyped') - ->willReturnCallback(function ($event) use (&$calls, $share) { + ->willReturnCallback(function ($event) use (&$calls, $share): void { $expected = array_shift($calls); $this->assertInstanceOf($expected, $event); $this->assertEquals($share, $event->getShare()); @@ -381,7 +383,7 @@ class ManagerTest extends \Test\TestCase { ]; $this->defaultProvider->expects($this->exactly(3)) ->method('delete') - ->willReturnCallback(function ($share) use (&$deleteCalls) { + ->willReturnCallback(function ($share) use (&$deleteCalls): void { $expected = array_shift($deleteCalls); $this->assertEquals($expected, $share); }); @@ -396,7 +398,7 @@ class ManagerTest extends \Test\TestCase { ]; $this->dispatcher->expects($this->exactly(6)) ->method('dispatchTyped') - ->willReturnCallback(function ($event) use (&$dispatchCalls) { + ->willReturnCallback(function ($event) use (&$dispatchCalls): void { $expected = array_shift($dispatchCalls); $this->assertInstanceOf($expected[0], $event); $this->assertEquals($expected[1]->getId(), $event->getShare()->getId()); @@ -476,7 +478,7 @@ class ManagerTest extends \Test\TestCase { ]; $this->defaultProvider->expects($this->exactly(3)) ->method('delete') - ->willReturnCallback(function ($share) use (&$calls) { + ->willReturnCallback(function ($share) use (&$calls): void { $expected = array_shift($calls); $this->assertEquals($expected, $share); }); @@ -573,7 +575,7 @@ class ManagerTest extends \Test\TestCase { ]; $manager->expects($this->exactly(2)) ->method('updateShare') - ->willReturnCallback(function ($share) use (&$calls) { + ->willReturnCallback(function ($share) use (&$calls): void { $expected = array_shift($calls); $this->assertEquals($expected, $share); }); @@ -667,7 +669,7 @@ class ManagerTest extends \Test\TestCase { ]; $manager->expects($this->exactly(2)) ->method('updateShare') - ->willReturnCallback(function ($share) use (&$calls) { + ->willReturnCallback(function ($share) use (&$calls): void { $expected = array_shift($calls); $this->assertEquals($expected, $share); }); @@ -689,7 +691,7 @@ class ManagerTest extends \Test\TestCase { public function testGetExpiredShareById(): void { - $this->expectException(\OCP\Share\Exceptions\ShareNotFound::class); + $this->expectException(ShareNotFound::class); $manager = $this->createManagerMock() ->onlyMethods(['deleteShare']) @@ -774,7 +776,7 @@ class ManagerTest extends \Test\TestCase { ]); $this->dispatcher->expects($this->once())->method('dispatchTyped') - ->willReturnCallback(function (Event $event) { + ->willReturnCallback(function (Event $event): void { $this->assertInstanceOf(ValidatePasswordPolicyEvent::class, $event); /** @var ValidatePasswordPolicyEvent $event */ $this->assertSame('password', $event->getPassword()); @@ -796,7 +798,7 @@ class ManagerTest extends \Test\TestCase { ]); $this->dispatcher->expects($this->once())->method('dispatchTyped') - ->willReturnCallback(function (Event $event) { + ->willReturnCallback(function (Event $event): void { $this->assertInstanceOf(ValidatePasswordPolicyEvent::class, $event); /** @var ValidatePasswordPolicyEvent $event */ $this->assertSame('password', $event->getPassword()); @@ -891,7 +893,7 @@ class ManagerTest extends \Test\TestCase { $limitedPermssions = $this->createMock(File::class); $limitedPermssions->method('isShareable')->willReturn(true); - $limitedPermssions->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_READ); + $limitedPermssions->method('getPermissions')->willReturn(Constants::PERMISSION_READ); $limitedPermssions->method('getId')->willReturn(108); $limitedPermssions->method('getPath')->willReturn('path'); $limitedPermssions->method('getName')->willReturn('name'); @@ -915,10 +917,10 @@ class ManagerTest extends \Test\TestCase { $nonMovableStorage->method('instanceOfStorage') ->with('\OCA\Files_Sharing\External\Storage') ->willReturn(false); - $nonMovableStorage->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_ALL); + $nonMovableStorage->method('getPermissions')->willReturn(Constants::PERMISSION_ALL); $nonMoveableMountPermssions = $this->createMock(Folder::class); $nonMoveableMountPermssions->method('isShareable')->willReturn(true); - $nonMoveableMountPermssions->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_READ); + $nonMoveableMountPermssions->method('getPermissions')->willReturn(Constants::PERMISSION_READ); $nonMoveableMountPermssions->method('getId')->willReturn(108); $nonMoveableMountPermssions->method('getPath')->willReturn('path'); $nonMoveableMountPermssions->method('getName')->willReturn('name'); @@ -933,7 +935,7 @@ class ManagerTest extends \Test\TestCase { $rootFolder = $this->createMock(Folder::class); $rootFolder->method('isShareable')->willReturn(true); - $rootFolder->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_ALL); + $rootFolder->method('getPermissions')->willReturn(Constants::PERMISSION_ALL); $rootFolder->method('getId')->willReturn(42); $data[] = [$this->createShare(null, IShare::TYPE_USER, $rootFolder, $user2, $user0, $user0, 30, null, null), 'You cannot share your root folder', true]; @@ -942,7 +944,7 @@ class ManagerTest extends \Test\TestCase { $allPermssionsFiles = $this->createMock(File::class); $allPermssionsFiles->method('isShareable')->willReturn(true); - $allPermssionsFiles->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_ALL); + $allPermssionsFiles->method('getPermissions')->willReturn(Constants::PERMISSION_ALL); $allPermssionsFiles->method('getId')->willReturn(187); $allPermssionsFiles->method('getOwner') ->willReturn($owner); @@ -950,13 +952,13 @@ class ManagerTest extends \Test\TestCase { ->willReturn($storage); // test invalid CREATE or DELETE permissions - $data[] = [$this->createShare(null, IShare::TYPE_USER, $allPermssionsFiles, $user2, $user0, $user0, \OCP\Constants::PERMISSION_ALL, null, null), 'File shares cannot have create or delete permissions', true]; - $data[] = [$this->createShare(null, IShare::TYPE_GROUP, $allPermssionsFiles, $group0, $user0, $user0, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE, null, null), 'File shares cannot have create or delete permissions', true]; - $data[] = [$this->createShare(null, IShare::TYPE_LINK, $allPermssionsFiles, null, $user0, $user0, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE, null, null), 'File shares cannot have create or delete permissions', true]; + $data[] = [$this->createShare(null, IShare::TYPE_USER, $allPermssionsFiles, $user2, $user0, $user0, Constants::PERMISSION_ALL, null, null), 'File shares cannot have create or delete permissions', true]; + $data[] = [$this->createShare(null, IShare::TYPE_GROUP, $allPermssionsFiles, $group0, $user0, $user0, Constants::PERMISSION_READ | Constants::PERMISSION_CREATE, null, null), 'File shares cannot have create or delete permissions', true]; + $data[] = [$this->createShare(null, IShare::TYPE_LINK, $allPermssionsFiles, null, $user0, $user0, Constants::PERMISSION_READ | Constants::PERMISSION_DELETE, null, null), 'File shares cannot have create or delete permissions', true]; $allPermssions = $this->createMock(Folder::class); $allPermssions->method('isShareable')->willReturn(true); - $allPermssions->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_ALL); + $allPermssions->method('getPermissions')->willReturn(Constants::PERMISSION_ALL); $allPermssions->method('getId')->willReturn(108); $allPermssions->method('getOwner') ->willReturn($owner); @@ -983,7 +985,7 @@ class ManagerTest extends \Test\TestCase { ->willReturn(true); $remoteFile = $this->createMock(Folder::class); $remoteFile->method('isShareable')->willReturn(true); - $remoteFile->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_READ ^ \OCP\Constants::PERMISSION_UPDATE); + $remoteFile->method('getPermissions')->willReturn(Constants::PERMISSION_READ ^ Constants::PERMISSION_UPDATE); $remoteFile->method('getId')->willReturn(108); $remoteFile->method('getOwner') ->willReturn($owner); @@ -1032,7 +1034,7 @@ class ManagerTest extends \Test\TestCase { try { self::invokePrivate($this->manager, 'generalCreateChecks', [$share]); $thrown = false; - } catch (\OCP\Share\Exceptions\GenericShareException $e) { + } catch (GenericShareException $e) { $this->assertEquals($exceptionMessage, $e->getHint()); $thrown = true; } catch (\InvalidArgumentException $e) { @@ -1077,7 +1079,7 @@ class ManagerTest extends \Test\TestCase { * @dataProvider validateExpirationDateInternalProvider */ public function testValidateExpirationDateInternalInPast($shareType): void { - $this->expectException(\OCP\Share\Exceptions\GenericShareException::class); + $this->expectException(GenericShareException::class); $this->expectExceptionMessage('Expiration date is in the past'); // Expire date in the past @@ -1217,7 +1219,7 @@ class ManagerTest extends \Test\TestCase { * @dataProvider validateExpirationDateInternalProvider */ public function testValidateExpirationDateInternalEnforceTooFarIntoFuture($shareType): void { - $this->expectException(\OCP\Share\Exceptions\GenericShareException::class); + $this->expectException(GenericShareException::class); $this->expectExceptionMessage('Cannot set expiration date more than 3 days in the future'); $future = new \DateTime(); @@ -1278,7 +1280,7 @@ class ManagerTest extends \Test\TestCase { } $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($future) { return $data['expirationDate'] == $future; })); @@ -1304,7 +1306,7 @@ class ManagerTest extends \Test\TestCase { $share->setExpirationDate($date); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) { return $data['expirationDate'] == $expected && $data['passwordSet'] === false; })); @@ -1319,7 +1321,7 @@ class ManagerTest extends \Test\TestCase { */ public function testValidateExpirationDateInternalNoDateNoDefault($shareType): void { $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) { return $data['expirationDate'] === null && $data['passwordSet'] === true; })); @@ -1362,7 +1364,7 @@ class ManagerTest extends \Test\TestCase { } $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) { return $data['expirationDate'] == $expected; })); @@ -1404,7 +1406,7 @@ class ManagerTest extends \Test\TestCase { } $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) { return $data['expirationDate'] == $expected; })); @@ -1425,8 +1427,8 @@ class ManagerTest extends \Test\TestCase { $save = clone $nextWeek; $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); - $hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data) { + Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + $hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data): void { $data['expirationDate']->sub(new \DateInterval('P2D')); }); @@ -1456,8 +1458,8 @@ class ManagerTest extends \Test\TestCase { $share->setExpirationDate($nextWeek); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); - $hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data) { + Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + $hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data): void { $data['accepted'] = false; $data['message'] = 'Invalid date!'; }); @@ -1493,7 +1495,7 @@ class ManagerTest extends \Test\TestCase { } public function testValidateExpirationDateInPast(): void { - $this->expectException(\OCP\Share\Exceptions\GenericShareException::class); + $this->expectException(GenericShareException::class); $this->expectExceptionMessage('Expiration date is in the past'); // Expire date in the past @@ -1579,7 +1581,7 @@ class ManagerTest extends \Test\TestCase { } public function testValidateExpirationDateEnforceTooFarIntoFuture(): void { - $this->expectException(\OCP\Share\Exceptions\GenericShareException::class); + $this->expectException(GenericShareException::class); $this->expectExceptionMessage('Cannot set expiration date more than 3 days in the future'); $future = new \DateTime(); @@ -1617,7 +1619,7 @@ class ManagerTest extends \Test\TestCase { ]); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($future) { return $data['expirationDate'] == $future; })); @@ -1640,7 +1642,7 @@ class ManagerTest extends \Test\TestCase { $share->setExpirationDate($date); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) { return $data['expirationDate'] == $expected && $data['passwordSet'] === false; })); @@ -1652,7 +1654,7 @@ class ManagerTest extends \Test\TestCase { public function testValidateExpirationDateNoDateNoDefault(): void { $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) { return $data['expirationDate'] === null && $data['passwordSet'] === true; })); @@ -1681,7 +1683,7 @@ class ManagerTest extends \Test\TestCase { ]); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) { return $data['expirationDate'] == $expected; })); @@ -1711,7 +1713,7 @@ class ManagerTest extends \Test\TestCase { ]); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) { return $data['expirationDate'] == $expected; })); @@ -1742,7 +1744,7 @@ class ManagerTest extends \Test\TestCase { ]); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) { return $data['expirationDate'] == $expected; })); @@ -1762,8 +1764,8 @@ class ManagerTest extends \Test\TestCase { $save->setTimezone(new \DateTimeZone(date_default_timezone_get())); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); - $hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data) { + Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + $hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data): void { $data['expirationDate']->sub(new \DateInterval('P2D')); }); @@ -1787,8 +1789,8 @@ class ManagerTest extends \Test\TestCase { $share->setExpirationDate($nextWeek); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); - $hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data) { + Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + $hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data): void { $data['accepted'] = false; $data['message'] = 'Invalid date!'; }); @@ -2204,7 +2206,7 @@ class ManagerTest extends \Test\TestCase { public function testFileLinkCreateChecksNoPublicUpload(): void { $share = $this->manager->newShare(); - $share->setPermissions(\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE); + $share->setPermissions(Constants::PERMISSION_CREATE | Constants::PERMISSION_UPDATE); $share->setNodeType('file'); $this->config @@ -2224,7 +2226,7 @@ class ManagerTest extends \Test\TestCase { $share = $this->manager->newShare(); - $share->setPermissions(\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE); + $share->setPermissions(Constants::PERMISSION_CREATE | Constants::PERMISSION_UPDATE); $share->setNodeType('folder'); $this->config @@ -2240,7 +2242,7 @@ class ManagerTest extends \Test\TestCase { public function testLinkCreateChecksPublicUpload(): void { $share = $this->manager->newShare(); - $share->setPermissions(\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE); + $share->setPermissions(Constants::PERMISSION_CREATE | Constants::PERMISSION_UPDATE); $share->setSharedWith('sharedWith'); $folder = $this->createMock(\OC\Files\Node\Folder::class); $share->setNode($folder); @@ -2259,7 +2261,7 @@ class ManagerTest extends \Test\TestCase { public function testLinkCreateChecksReadOnly(): void { $share = $this->manager->newShare(); - $share->setPermissions(\OCP\Constants::PERMISSION_READ); + $share->setPermissions(Constants::PERMISSION_READ); $share->setSharedWith('sharedWith'); $folder = $this->createMock(\OC\Files\Node\Folder::class); $share->setNode($folder); @@ -2460,7 +2462,7 @@ class ManagerTest extends \Test\TestCase { 'sharedWith', 'sharedBy', null, - \OCP\Constants::PERMISSION_ALL); + Constants::PERMISSION_ALL); $manager->expects($this->once()) ->method('canShare') @@ -2515,7 +2517,7 @@ class ManagerTest extends \Test\TestCase { 'sharedWith', 'sharedBy', null, - \OCP\Constants::PERMISSION_ALL); + Constants::PERMISSION_ALL); $manager->expects($this->once()) ->method('canShare') @@ -2578,7 +2580,7 @@ class ManagerTest extends \Test\TestCase { $share->setShareType(IShare::TYPE_LINK) ->setNode($path) ->setSharedBy('sharedBy') - ->setPermissions(\OCP\Constants::PERMISSION_ALL) + ->setPermissions(Constants::PERMISSION_ALL) ->setExpirationDate($date) ->setPassword('password'); @@ -2630,7 +2632,7 @@ class ManagerTest extends \Test\TestCase { ]; $this->dispatcher->expects($this->exactly(2)) ->method('dispatchTyped') - ->willReturnCallback(function ($event) use (&$calls, $date, $path) { + ->willReturnCallback(function ($event) use (&$calls, $date, $path): void { $expected = array_shift($calls); $this->assertInstanceOf($expected, $event); $share = $event->getShare(); @@ -2638,7 +2640,7 @@ class ManagerTest extends \Test\TestCase { $this->assertEquals(IShare::TYPE_LINK, $share->getShareType(), 'getShareType'); $this->assertEquals($path, $share->getNode(), 'getNode'); $this->assertEquals('sharedBy', $share->getSharedBy(), 'getSharedBy'); - $this->assertEquals(\OCP\Constants::PERMISSION_ALL, $share->getPermissions(), 'getPermissions'); + $this->assertEquals(Constants::PERMISSION_ALL, $share->getPermissions(), 'getPermissions'); $this->assertEquals($date, $share->getExpirationDate(), 'getExpirationDate'); $this->assertEquals('hashed', $share->getPassword(), 'getPassword'); $this->assertEquals('token', $share->getToken(), 'getToken'); @@ -2686,7 +2688,7 @@ class ManagerTest extends \Test\TestCase { $share->setShareType(IShare::TYPE_EMAIL) ->setNode($path) ->setSharedBy('sharedBy') - ->setPermissions(\OCP\Constants::PERMISSION_ALL); + ->setPermissions(Constants::PERMISSION_ALL); $manager->expects($this->once()) ->method('canShare') @@ -2727,7 +2729,7 @@ class ManagerTest extends \Test\TestCase { ]; $this->dispatcher->expects($this->exactly(2)) ->method('dispatchTyped') - ->willReturnCallback(function ($event) use (&$calls, $path) { + ->willReturnCallback(function ($event) use (&$calls, $path): void { $expected = array_shift($calls); $this->assertInstanceOf($expected, $event); $share = $event->getShare(); @@ -2735,7 +2737,7 @@ class ManagerTest extends \Test\TestCase { $this->assertEquals(IShare::TYPE_EMAIL, $share->getShareType(), 'getShareType'); $this->assertEquals($path, $share->getNode(), 'getNode'); $this->assertEquals('sharedBy', $share->getSharedBy(), 'getSharedBy'); - $this->assertEquals(\OCP\Constants::PERMISSION_ALL, $share->getPermissions(), 'getPermissions'); + $this->assertEquals(Constants::PERMISSION_ALL, $share->getPermissions(), 'getPermissions'); $this->assertNull($share->getExpirationDate(), 'getExpirationDate'); $this->assertNull($share->getPassword(), 'getPassword'); $this->assertEquals('token', $share->getToken(), 'getToken'); @@ -2784,7 +2786,7 @@ class ManagerTest extends \Test\TestCase { 'sharedWith', 'sharedBy', null, - \OCP\Constants::PERMISSION_ALL); + Constants::PERMISSION_ALL); $manager->expects($this->once()) ->method('canShare') @@ -2814,7 +2816,7 @@ class ManagerTest extends \Test\TestCase { ->method('dispatchTyped') ->with( $this->isInstanceOf(BeforeShareCreatedEvent::class) - )->willReturnCallback(function (BeforeShareCreatedEvent $e) { + )->willReturnCallback(function (BeforeShareCreatedEvent $e): void { $e->setError('I won\'t let you share!'); $e->stopPropagation(); } @@ -2863,7 +2865,7 @@ class ManagerTest extends \Test\TestCase { 'sharedWith', 'sharedBy', null, - \OCP\Constants::PERMISSION_ALL); + Constants::PERMISSION_ALL); $manager->expects($this->once()) ->method('canShare') @@ -3001,7 +3003,7 @@ class ManagerTest extends \Test\TestCase { * Simulate the deleteShare call. */ $manager->method('deleteShare') - ->willReturnCallback(function ($share) use (&$shares2) { + ->willReturnCallback(function ($share) use (&$shares2): void { for ($i = 0; $i < count($shares2); $i++) { if ($shares2[$i]->getId() === $share->getId()) { array_splice($shares2, $i, 1); @@ -3075,7 +3077,7 @@ class ManagerTest extends \Test\TestCase { ->method('getProviderForType') ->willReturnCallback(function ($shareType) use ($roomShareProvider) { if ($shareType !== IShare::TYPE_ROOM) { - throw new Exception\ProviderException(); + throw new ProviderException(); } return $roomShareProvider; @@ -3131,7 +3133,7 @@ class ManagerTest extends \Test\TestCase { public function testGetShareByTokenHideDisabledUser(): void { - $this->expectException(\OCP\Share\Exceptions\ShareNotFound::class); + $this->expectException(ShareNotFound::class); $this->expectExceptionMessage('The requested share comes from a disabled user'); $this->config @@ -3186,7 +3188,7 @@ class ManagerTest extends \Test\TestCase { public function testGetShareByTokenExpired(): void { - $this->expectException(\OCP\Share\Exceptions\ShareNotFound::class); + $this->expectException(ShareNotFound::class); $this->expectExceptionMessage('The requested share does not exist anymore'); $this->config @@ -3247,7 +3249,7 @@ class ManagerTest extends \Test\TestCase { public function testGetShareByTokenWithPublicLinksDisabled(): void { - $this->expectException(\OCP\Share\Exceptions\ShareNotFound::class); + $this->expectException(ShareNotFound::class); $this->config ->expects($this->once()) @@ -3269,7 +3271,7 @@ class ManagerTest extends \Test\TestCase { $share = $this->manager->newShare(); $share->setShareType(IShare::TYPE_LINK) - ->setPermissions(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE); + ->setPermissions(Constants::PERMISSION_READ | Constants::PERMISSION_CREATE | Constants::PERMISSION_UPDATE); $share->setSharedWith('sharedWith'); $folder = $this->createMock(\OC\Files\Node\Folder::class); $share->setNode($folder); @@ -3281,7 +3283,7 @@ class ManagerTest extends \Test\TestCase { $res = $this->manager->getShareByToken('validToken'); - $this->assertSame(\OCP\Constants::PERMISSION_READ, $res->getPermissions()); + $this->assertSame(Constants::PERMISSION_READ, $res->getPermissions()); } public function testCheckPasswordNoLinkShare(): void { @@ -3333,7 +3335,7 @@ class ManagerTest extends \Test\TestCase { $this->defaultProvider->expects($this->once()) ->method('update') - ->with($this->callback(function (\OCP\Share\IShare $share) { + ->with($this->callback(function (IShare $share) { return $share->getPassword() === 'newHash'; })); @@ -3469,14 +3471,14 @@ class ManagerTest extends \Test\TestCase { ->willReturn($share); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); $hookListener->expects($this->never())->method('post'); $this->rootFolder->method('getUserFolder')->with('newUser')->willReturnSelf(); $this->rootFolder->method('getRelativePath')->with('/newUser/files/myPath')->willReturn('/myPath'); $hookListener2 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener2, 'post'); + Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener2, 'post'); $hookListener2->expects($this->once())->method('post')->with([ 'itemType' => 'file', 'itemSource' => 100, @@ -3527,11 +3529,11 @@ class ManagerTest extends \Test\TestCase { ->willReturn($share); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); $hookListener->expects($this->never())->method('post'); $hookListener2 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener2, 'post'); + Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener2, 'post'); $hookListener2->expects($this->never())->method('post'); $manager->updateShare($share); @@ -3589,7 +3591,7 @@ class ManagerTest extends \Test\TestCase { ->willReturn($share); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); $hookListener->expects($this->once())->method('post')->with([ 'itemType' => 'file', 'itemSource' => 100, @@ -3598,7 +3600,7 @@ class ManagerTest extends \Test\TestCase { ]); $hookListener2 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); $hookListener2->expects($this->once())->method('post')->with([ 'itemType' => 'file', 'itemSource' => 100, @@ -3608,7 +3610,7 @@ class ManagerTest extends \Test\TestCase { ]); $hookListener3 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); $hookListener3->expects($this->never())->method('post'); @@ -3670,15 +3672,15 @@ class ManagerTest extends \Test\TestCase { ->method('update'); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); $hookListener->expects($this->never())->method('post'); $hookListener2 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); $hookListener2->expects($this->never())->method('post'); $hookListener3 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); @@ -3699,7 +3701,7 @@ class ManagerTest extends \Test\TestCase { $originalShare = $this->manager->newShare(); $originalShare->setShareType(IShare::TYPE_EMAIL) - ->setPermissions(\OCP\Constants::PERMISSION_ALL); + ->setPermissions(Constants::PERMISSION_ALL); $tomorrow = new \DateTime(); $tomorrow->setTime(0, 0, 0); @@ -3718,7 +3720,7 @@ class ManagerTest extends \Test\TestCase { ->setPassword('password') ->setExpirationDate($tomorrow) ->setNode($file) - ->setPermissions(\OCP\Constants::PERMISSION_ALL); + ->setPermissions(Constants::PERMISSION_ALL); $manager->expects($this->once())->method('canShare')->willReturn(true); $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare); @@ -3739,7 +3741,7 @@ class ManagerTest extends \Test\TestCase { ->willReturn($share); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); $hookListener->expects($this->once())->method('post')->with([ 'itemType' => 'file', 'itemSource' => 100, @@ -3748,7 +3750,7 @@ class ManagerTest extends \Test\TestCase { ]); $hookListener2 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); $hookListener2->expects($this->once())->method('post')->with([ 'itemType' => 'file', 'itemSource' => 100, @@ -3758,7 +3760,7 @@ class ManagerTest extends \Test\TestCase { ]); $hookListener3 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); @@ -3779,7 +3781,7 @@ class ManagerTest extends \Test\TestCase { $originalShare = $this->manager->newShare(); $originalShare->setShareType(IShare::TYPE_EMAIL) - ->setPermissions(\OCP\Constants::PERMISSION_ALL) + ->setPermissions(Constants::PERMISSION_ALL) ->setPassword(null) ->setSendPasswordByTalk(false); @@ -3801,7 +3803,7 @@ class ManagerTest extends \Test\TestCase { ->setSendPasswordByTalk(true) ->setExpirationDate($tomorrow) ->setNode($file) - ->setPermissions(\OCP\Constants::PERMISSION_ALL); + ->setPermissions(Constants::PERMISSION_ALL); $manager->expects($this->once())->method('canShare')->willReturn(true); $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare); @@ -3822,7 +3824,7 @@ class ManagerTest extends \Test\TestCase { ->willReturn($share); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); $hookListener->expects($this->once())->method('post')->with([ 'itemType' => 'file', 'itemSource' => 100, @@ -3831,7 +3833,7 @@ class ManagerTest extends \Test\TestCase { ]); $hookListener2 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); $hookListener2->expects($this->once())->method('post')->with([ 'itemType' => 'file', 'itemSource' => 100, @@ -3841,7 +3843,7 @@ class ManagerTest extends \Test\TestCase { ]); $hookListener3 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); @@ -3862,7 +3864,7 @@ class ManagerTest extends \Test\TestCase { $originalShare = $this->manager->newShare(); $originalShare->setShareType(IShare::TYPE_EMAIL) - ->setPermissions(\OCP\Constants::PERMISSION_ALL) + ->setPermissions(Constants::PERMISSION_ALL) ->setPassword('anotherPasswordHash') ->setSendPasswordByTalk(false); @@ -3884,7 +3886,7 @@ class ManagerTest extends \Test\TestCase { ->setSendPasswordByTalk(true) ->setExpirationDate($tomorrow) ->setNode($file) - ->setPermissions(\OCP\Constants::PERMISSION_ALL); + ->setPermissions(Constants::PERMISSION_ALL); $manager->expects($this->once())->method('canShare')->willReturn(true); $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare); @@ -3910,7 +3912,7 @@ class ManagerTest extends \Test\TestCase { ->willReturn($share); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); $hookListener->expects($this->once())->method('post')->with([ 'itemType' => 'file', 'itemSource' => 100, @@ -3919,7 +3921,7 @@ class ManagerTest extends \Test\TestCase { ]); $hookListener2 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); $hookListener2->expects($this->once())->method('post')->with([ 'itemType' => 'file', 'itemSource' => 100, @@ -3929,7 +3931,7 @@ class ManagerTest extends \Test\TestCase { ]); $hookListener3 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); @@ -3953,7 +3955,7 @@ class ManagerTest extends \Test\TestCase { $originalShare = $this->manager->newShare(); $originalShare->setShareType(IShare::TYPE_EMAIL) - ->setPermissions(\OCP\Constants::PERMISSION_ALL) + ->setPermissions(Constants::PERMISSION_ALL) ->setPassword(null) ->setSendPasswordByTalk(false); @@ -3975,7 +3977,7 @@ class ManagerTest extends \Test\TestCase { ->setSendPasswordByTalk(true) ->setExpirationDate($tomorrow) ->setNode($file) - ->setPermissions(\OCP\Constants::PERMISSION_ALL); + ->setPermissions(Constants::PERMISSION_ALL); $manager->expects($this->once())->method('canShare')->willReturn(true); $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare); @@ -3993,15 +3995,15 @@ class ManagerTest extends \Test\TestCase { ->method('update'); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); $hookListener->expects($this->never())->method('post'); $hookListener2 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); $hookListener2->expects($this->never())->method('post'); $hookListener3 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); @@ -4026,7 +4028,7 @@ class ManagerTest extends \Test\TestCase { $originalShare = $this->manager->newShare(); $originalShare->setShareType(IShare::TYPE_EMAIL) - ->setPermissions(\OCP\Constants::PERMISSION_ALL) + ->setPermissions(Constants::PERMISSION_ALL) ->setPassword('passwordHash') ->setSendPasswordByTalk(false); @@ -4048,7 +4050,7 @@ class ManagerTest extends \Test\TestCase { ->setSendPasswordByTalk(true) ->setExpirationDate($tomorrow) ->setNode($file) - ->setPermissions(\OCP\Constants::PERMISSION_ALL); + ->setPermissions(Constants::PERMISSION_ALL); $manager->expects($this->once())->method('canShare')->willReturn(true); $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare); @@ -4066,15 +4068,15 @@ class ManagerTest extends \Test\TestCase { ->method('update'); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); $hookListener->expects($this->never())->method('post'); $hookListener2 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); $hookListener2->expects($this->never())->method('post'); $hookListener3 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); @@ -4099,7 +4101,7 @@ class ManagerTest extends \Test\TestCase { $originalShare = $this->manager->newShare(); $originalShare->setShareType(IShare::TYPE_EMAIL) - ->setPermissions(\OCP\Constants::PERMISSION_ALL) + ->setPermissions(Constants::PERMISSION_ALL) ->setPassword('passwordHash') ->setSendPasswordByTalk(false); @@ -4121,7 +4123,7 @@ class ManagerTest extends \Test\TestCase { ->setSendPasswordByTalk(true) ->setExpirationDate($tomorrow) ->setNode($file) - ->setPermissions(\OCP\Constants::PERMISSION_ALL); + ->setPermissions(Constants::PERMISSION_ALL); $manager->expects($this->once())->method('canShare')->willReturn(true); $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare); @@ -4139,15 +4141,15 @@ class ManagerTest extends \Test\TestCase { ->method('update'); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); $hookListener->expects($this->never())->method('post'); $hookListener2 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); $hookListener2->expects($this->never())->method('post'); $hookListener3 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); @@ -4172,7 +4174,7 @@ class ManagerTest extends \Test\TestCase { $originalShare = $this->manager->newShare(); $originalShare->setShareType(IShare::TYPE_EMAIL) - ->setPermissions(\OCP\Constants::PERMISSION_ALL) + ->setPermissions(Constants::PERMISSION_ALL) ->setPassword('password') ->setSendPasswordByTalk(false); @@ -4194,7 +4196,7 @@ class ManagerTest extends \Test\TestCase { ->setSendPasswordByTalk(true) ->setExpirationDate($tomorrow) ->setNode($file) - ->setPermissions(\OCP\Constants::PERMISSION_ALL); + ->setPermissions(Constants::PERMISSION_ALL); $manager->expects($this->once())->method('canShare')->willReturn(true); $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare); @@ -4214,15 +4216,15 @@ class ManagerTest extends \Test\TestCase { ->method('update'); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); $hookListener->expects($this->never())->method('post'); $hookListener2 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); $hookListener2->expects($this->never())->method('post'); $hookListener3 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); @@ -4246,7 +4248,7 @@ class ManagerTest extends \Test\TestCase { $originalShare = $this->manager->newShare(); $originalShare->setShareType(IShare::TYPE_EMAIL) - ->setPermissions(\OCP\Constants::PERMISSION_ALL) + ->setPermissions(Constants::PERMISSION_ALL) ->setPassword('passwordHash') ->setSendPasswordByTalk(true); @@ -4268,7 +4270,7 @@ class ManagerTest extends \Test\TestCase { ->setSendPasswordByTalk(false) ->setExpirationDate($tomorrow) ->setNode($file) - ->setPermissions(\OCP\Constants::PERMISSION_ALL); + ->setPermissions(Constants::PERMISSION_ALL); $manager->expects($this->once())->method('canShare')->willReturn(true); $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare); @@ -4288,15 +4290,15 @@ class ManagerTest extends \Test\TestCase { ->method('update'); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); $hookListener->expects($this->never())->method('post'); $hookListener2 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); $hookListener2->expects($this->never())->method('post'); $hookListener3 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); @@ -4320,7 +4322,7 @@ class ManagerTest extends \Test\TestCase { $originalShare = $this->manager->newShare(); $originalShare->setShareType(IShare::TYPE_EMAIL) - ->setPermissions(\OCP\Constants::PERMISSION_ALL) + ->setPermissions(Constants::PERMISSION_ALL) ->setPassword('passwordHash') ->setSendPasswordByTalk(true); @@ -4342,7 +4344,7 @@ class ManagerTest extends \Test\TestCase { ->setSendPasswordByTalk(false) ->setExpirationDate($tomorrow) ->setNode($file) - ->setPermissions(\OCP\Constants::PERMISSION_ALL); + ->setPermissions(Constants::PERMISSION_ALL); $manager->expects($this->once())->method('canShare')->willReturn(true); $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare); @@ -4362,15 +4364,15 @@ class ManagerTest extends \Test\TestCase { ->method('update'); $hookListener = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); $hookListener->expects($this->never())->method('post'); $hookListener2 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); $hookListener2->expects($this->never())->method('post'); $hookListener3 = $this->createMock(DummyShareManagerListener::class); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); @@ -4483,7 +4485,7 @@ class ManagerTest extends \Test\TestCase { if ($id === IShare::TYPE_USER) { return true; } - throw new Exception\ProviderException(); + throw new ProviderException(); }); $manager = $this->createManager($factory); @@ -4905,7 +4907,7 @@ class DummyFactory implements IProviderFactory { /** @var IShareProvider */ protected $provider; - public function __construct(\OCP\IServerContainer $serverContainer) { + public function __construct(IServerContainer $serverContainer) { } /** diff --git a/tests/lib/Share20/ShareByMailProviderTest.php b/tests/lib/Share20/ShareByMailProviderTest.php index bc8e9e53df0..de4dc1a820c 100644 --- a/tests/lib/Share20/ShareByMailProviderTest.php +++ b/tests/lib/Share20/ShareByMailProviderTest.php @@ -24,6 +24,7 @@ use OCP\IUserManager; use OCP\Mail\IMailer; use OCP\Security\IHasher; use OCP\Security\ISecureRandom; +use OCP\Server; use OCP\Share\IShare; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; @@ -85,7 +86,7 @@ class ShareByMailProviderTest extends TestCase { private $settingsManager; protected function setUp(): void { - $this->dbConn = \OC::$server->getDatabaseConnection(); + $this->dbConn = Server::get(IDBConnection::class); $this->userManager = $this->createMock(IUserManager::class); $this->rootFolder = $this->createMock(IRootFolder::class); $this->mailer = $this->createMock(IMailer::class); diff --git a/tests/lib/Share20/ShareHelperTest.php b/tests/lib/Share20/ShareHelperTest.php index 8aaa8350ea9..9027704bb32 100644 --- a/tests/lib/Share20/ShareHelperTest.php +++ b/tests/lib/Share20/ShareHelperTest.php @@ -27,7 +27,7 @@ class ShareHelperTest extends TestCase { $this->helper = new ShareHelper($this->manager); } - public function dataGetPathsForAccessList() { + public static function dataGetPathsForAccessList(): array { return [ [[], [], false, [], [], false, [ 'users' => [], @@ -64,7 +64,7 @@ class ShareHelperTest extends TestCase { /** @var ShareHelper|\PHPUnit\Framework\MockObject\MockObject $helper */ $helper = $this->getMockBuilder(ShareHelper::class) ->setConstructorArgs([$this->manager]) - ->setMethods(['getPathsForUsers', 'getPathsForRemotes']) + ->onlyMethods(['getPathsForUsers', 'getPathsForRemotes']) ->getMock(); $helper->expects($resolveUsers ? $this->once() : $this->never()) @@ -80,7 +80,7 @@ class ShareHelperTest extends TestCase { $this->assertSame($expected, $helper->getPathsForAccessList($node)); } - public function dataGetPathsForUsers() { + public static function dataGetPathsForUsers(): array { return [ [[], [23 => 'TwentyThree', 42 => 'FortyTwo'], []], [ @@ -133,7 +133,7 @@ class ShareHelperTest extends TestCase { $this->assertEquals($expected, self::invokePrivate($this->helper, 'getPathsForUsers', [$lastNode, $users])); } - public function dataGetPathsForRemotes() { + public static function dataGetPathsForRemotes(): array { return [ [[], [23 => 'TwentyThree', 42 => 'FortyTwo'], []], [ @@ -190,7 +190,7 @@ class ShareHelperTest extends TestCase { $this->assertEquals($expected, self::invokePrivate($this->helper, 'getPathsForRemotes', [$lastNode, $remotes])); } - public function dataGetMountedPath() { + public static function dataGetMountedPath(): array { return [ ['/admin/files/foobar', '/foobar'], ['/admin/files/foo/bar', '/foo/bar'], diff --git a/tests/lib/Share20/ShareTest.php b/tests/lib/Share20/ShareTest.php index 72f3b46190c..e95112f9abc 100644 --- a/tests/lib/Share20/ShareTest.php +++ b/tests/lib/Share20/ShareTest.php @@ -7,8 +7,10 @@ namespace Test\Share20; +use OC\Share20\Share; use OCP\Files\IRootFolder; use OCP\IUserManager; +use OCP\Share\Exceptions\IllegalIDChangeException; use PHPUnit\Framework\MockObject\MockObject; /** @@ -27,7 +29,7 @@ class ShareTest extends \Test\TestCase { protected function setUp(): void { $this->rootFolder = $this->createMock(IRootFolder::class); $this->userManager = $this->createMock(IUserManager::class); - $this->share = new \OC\Share20\Share($this->rootFolder, $this->userManager); + $this->share = new Share($this->rootFolder, $this->userManager); } @@ -51,7 +53,7 @@ class ShareTest extends \Test\TestCase { public function testSetIdOnce(): void { - $this->expectException(\OCP\Share\Exceptions\IllegalIDChangeException::class); + $this->expectException(IllegalIDChangeException::class); $this->expectExceptionMessage('Not allowed to assign a new internal id to a share'); $this->share->setId('foo'); @@ -75,7 +77,7 @@ class ShareTest extends \Test\TestCase { public function testSetProviderIdOnce(): void { - $this->expectException(\OCP\Share\Exceptions\IllegalIDChangeException::class); + $this->expectException(IllegalIDChangeException::class); $this->expectExceptionMessage('Not allowed to assign a new provider id to a share'); $this->share->setProviderId('foo'); diff --git a/tests/lib/SubAdminTest.php b/tests/lib/SubAdminTest.php index 4cda08a2945..ce5410e9b88 100644 --- a/tests/lib/SubAdminTest.php +++ b/tests/lib/SubAdminTest.php @@ -7,9 +7,14 @@ namespace Test; +use OC\SubAdmin; use OCP\EventDispatcher\IEventDispatcher; use OCP\Group\Events\SubAdminAddedEvent; use OCP\Group\Events\SubAdminRemovedEvent; +use OCP\IDBConnection; +use OCP\IGroupManager; +use OCP\IUserManager; +use OCP\Server; /** * @group DB @@ -39,10 +44,10 @@ class SubAdminTest extends \Test\TestCase { $this->users = []; $this->groups = []; - $this->userManager = \OC::$server->getUserManager(); - $this->groupManager = \OC::$server->getGroupManager(); - $this->dbConn = \OC::$server->getDatabaseConnection(); - $this->eventDispatcher = \OC::$server->get(IEventDispatcher::class); + $this->userManager = Server::get(IUserManager::class); + $this->groupManager = Server::get(IGroupManager::class); + $this->dbConn = Server::get(IDBConnection::class); + $this->eventDispatcher = Server::get(IEventDispatcher::class); // Create 3 users and 3 groups for ($i = 0; $i < 3; $i++) { @@ -95,7 +100,7 @@ class SubAdminTest extends \Test\TestCase { } public function testCreateSubAdmin(): void { - $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); + $subAdmin = new SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); $subAdmin->createSubAdmin($this->users[0], $this->groups[0]); // Look for subadmin in the database @@ -120,7 +125,7 @@ class SubAdminTest extends \Test\TestCase { } public function testDeleteSubAdmin(): void { - $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); + $subAdmin = new SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); $subAdmin->createSubAdmin($this->users[0], $this->groups[0]); $subAdmin->deleteSubAdmin($this->users[0], $this->groups[0]); @@ -136,7 +141,7 @@ class SubAdminTest extends \Test\TestCase { } public function testGetSubAdminsGroups(): void { - $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); + $subAdmin = new SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); $subAdmin->createSubAdmin($this->users[0], $this->groups[0]); $subAdmin->createSubAdmin($this->users[0], $this->groups[1]); @@ -152,7 +157,7 @@ class SubAdminTest extends \Test\TestCase { } public function testGetGroupsSubAdmins(): void { - $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); + $subAdmin = new SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); $subAdmin->createSubAdmin($this->users[0], $this->groups[0]); $subAdmin->createSubAdmin($this->users[1], $this->groups[0]); @@ -168,7 +173,7 @@ class SubAdminTest extends \Test\TestCase { } public function testGetAllSubAdmin(): void { - $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); + $subAdmin = new SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); $subAdmin->createSubAdmin($this->users[0], $this->groups[0]); $subAdmin->createSubAdmin($this->users[1], $this->groups[1]); @@ -183,7 +188,7 @@ class SubAdminTest extends \Test\TestCase { } public function testIsSubAdminofGroup(): void { - $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); + $subAdmin = new SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); $subAdmin->createSubAdmin($this->users[0], $this->groups[0]); $this->assertTrue($subAdmin->isSubAdminOfGroup($this->users[0], $this->groups[0])); @@ -194,7 +199,7 @@ class SubAdminTest extends \Test\TestCase { } public function testIsSubAdmin(): void { - $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); + $subAdmin = new SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); $subAdmin->createSubAdmin($this->users[0], $this->groups[0]); $this->assertTrue($subAdmin->isSubAdmin($this->users[0])); @@ -204,14 +209,14 @@ class SubAdminTest extends \Test\TestCase { } public function testIsSubAdminAsAdmin(): void { - $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); + $subAdmin = new SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); $this->groupManager->get('admin')->addUser($this->users[0]); $this->assertTrue($subAdmin->isSubAdmin($this->users[0])); } public function testIsUserAccessible(): void { - $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); + $subAdmin = new SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); $this->groups[0]->addUser($this->users[1]); $this->groups[1]->addUser($this->users[1]); $this->groups[1]->addUser($this->users[2]); @@ -227,12 +232,12 @@ class SubAdminTest extends \Test\TestCase { } public function testIsUserAccessibleAsUser(): void { - $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); + $subAdmin = new SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); $this->assertFalse($subAdmin->isUserAccessible($this->users[0], $this->users[1])); } public function testIsUserAccessibleAdmin(): void { - $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); + $subAdmin = new SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); $subAdmin->createSubAdmin($this->users[0], $this->groups[0]); $this->groupManager->get('admin')->addUser($this->users[1]); @@ -240,7 +245,7 @@ class SubAdminTest extends \Test\TestCase { } public function testPostDeleteUser(): void { - $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); + $subAdmin = new SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); $user = array_shift($this->users); foreach ($this->groups as $group) { @@ -252,7 +257,7 @@ class SubAdminTest extends \Test\TestCase { } public function testPostDeleteGroup(): void { - $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); + $subAdmin = new SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); $group = array_shift($this->groups); foreach ($this->users as $user) { @@ -264,20 +269,20 @@ class SubAdminTest extends \Test\TestCase { } public function testHooks(): void { - $subAdmin = new \OC\SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); + $subAdmin = new SubAdmin($this->userManager, $this->groupManager, $this->dbConn, $this->eventDispatcher); $test = $this; $u = $this->users[0]; $g = $this->groups[0]; $count = 0; - $this->eventDispatcher->addListener(SubAdminAddedEvent::class, function (SubAdminAddedEvent $event) use ($test, $u, $g, &$count) { + $this->eventDispatcher->addListener(SubAdminAddedEvent::class, function (SubAdminAddedEvent $event) use ($test, $u, $g, &$count): void { $test->assertEquals($u->getUID(), $event->getUser()->getUID()); $test->assertEquals($g->getGID(), $event->getGroup()->getGID()); $count++; }); - $this->eventDispatcher->addListener(SubAdminRemovedEvent::class, function ($event) use ($test, $u, $g, &$count) { + $this->eventDispatcher->addListener(SubAdminRemovedEvent::class, function ($event) use ($test, $u, $g, &$count): void { $test->assertEquals($u->getUID(), $event->getUser()->getUID()); $test->assertEquals($g->getGID(), $event->getGroup()->getGID()); $count++; diff --git a/tests/lib/Support/Subscription/DummySubscription.php b/tests/lib/Support/Subscription/DummySubscription.php index ca1644c91f5..4513bf278f6 100644 --- a/tests/lib/Support/Subscription/DummySubscription.php +++ b/tests/lib/Support/Subscription/DummySubscription.php @@ -9,24 +9,20 @@ declare(strict_types=1); namespace Test\Support\Subscription; -class DummySubscription implements \OCP\Support\Subscription\ISubscription { - /** @var bool */ - private $hasValidSubscription; - /** @var bool */ - private $hasExtendedSupport; - /** @var bool */ - private $isHardUserLimitReached; +use OCP\Support\Subscription\ISubscription; +class DummySubscription implements ISubscription { /** * DummySubscription constructor. * * @param bool $hasValidSubscription * @param bool $hasExtendedSupport */ - public function __construct(bool $hasValidSubscription, bool $hasExtendedSupport, bool $isHardUserLimitReached) { - $this->hasValidSubscription = $hasValidSubscription; - $this->hasExtendedSupport = $hasExtendedSupport; - $this->isHardUserLimitReached = $isHardUserLimitReached; + public function __construct( + private bool $hasValidSubscription, + private bool $hasExtendedSupport, + private bool $isHardUserLimitReached, + ) { } /** diff --git a/tests/lib/Support/Subscription/RegistryTest.php b/tests/lib/Support/Subscription/RegistryTest.php index b3a0f8e603e..3f2b9f5032f 100644 --- a/tests/lib/Support/Subscription/RegistryTest.php +++ b/tests/lib/Support/Subscription/RegistryTest.php @@ -14,6 +14,7 @@ use OCP\IGroupManager; use OCP\IServerContainer; use OCP\IUserManager; use OCP\Notification\IManager; +use OCP\Support\Subscription\Exception\AlreadyRegisteredException; use OCP\Support\Subscription\ISubscription; use OCP\Support\Subscription\ISupportedApps; use PHPUnit\Framework\MockObject\MockObject; @@ -58,7 +59,7 @@ class RegistryTest extends TestCase { public function testDoubleRegistration(): void { - $this->expectException(\OCP\Support\Subscription\Exception\AlreadyRegisteredException::class); + $this->expectException(AlreadyRegisteredException::class); /* @var ISubscription $subscription1 */ $subscription1 = $this->createMock(ISubscription::class); @@ -157,7 +158,7 @@ class RegistryTest extends TestCase { $this->assertSame(false, $this->registry->delegateIsHardUserLimitReached($this->notificationManager)); } - public function dataForUserLimitCheck() { + public static function dataForUserLimitCheck(): array { return [ // $userLimit, $userCount, $disabledUsers, $expectedResult [35, 15, 2, false], diff --git a/tests/lib/SystemTag/SystemTagManagerTest.php b/tests/lib/SystemTag/SystemTagManagerTest.php index 94103c52cb1..806c3fea240 100644 --- a/tests/lib/SystemTag/SystemTagManagerTest.php +++ b/tests/lib/SystemTag/SystemTagManagerTest.php @@ -16,8 +16,11 @@ use OCP\IDBConnection; use OCP\IGroupManager; use OCP\IUser; use OCP\IUserSession; +use OCP\Server; use OCP\SystemTag\ISystemTag; use OCP\SystemTag\ISystemTagManager; +use OCP\SystemTag\TagAlreadyExistsException; +use OCP\SystemTag\TagNotFoundException; use Test\TestCase; /** @@ -37,7 +40,7 @@ class SystemTagManagerTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->connection = \OC::$server->getDatabaseConnection(); + $this->connection = Server::get(IDBConnection::class); $this->dispatcher = $this->createMock(IEventDispatcher::class); $this->groupManager = $this->createMock(IGroupManager::class); @@ -66,7 +69,7 @@ class SystemTagManagerTest extends TestCase { $query->delete(SystemTagManager::TAG_TABLE)->execute(); } - public static function getAllTagsDataProvider() { + public static function getAllTagsDataProvider(): array { return [ [ // no tags at all @@ -113,7 +116,7 @@ class SystemTagManagerTest extends TestCase { } } - public static function getAllTagsFilteredDataProvider() { + public static function getAllTagsFilteredDataProvider(): array { return [ [ [ @@ -226,7 +229,7 @@ class SystemTagManagerTest extends TestCase { } } - public static function oneTagMultipleFlagsProvider() { + public static function oneTagMultipleFlagsProvider(): array { return [ ['one', false, false], ['one', true, false], @@ -239,7 +242,7 @@ class SystemTagManagerTest extends TestCase { * @dataProvider oneTagMultipleFlagsProvider */ public function testCreateDuplicate($name, $userVisible, $userAssignable): void { - $this->expectException(\OCP\SystemTag\TagAlreadyExistsException::class); + $this->expectException(TagAlreadyExistsException::class); try { $this->tagManager->createTag($name, $userVisible, $userAssignable); @@ -278,14 +281,14 @@ class SystemTagManagerTest extends TestCase { public function testGetNonExistingTag(): void { - $this->expectException(\OCP\SystemTag\TagNotFoundException::class); + $this->expectException(TagNotFoundException::class); $this->tagManager->getTag('nonexist', false, false); } public function testGetNonExistingTagsById(): void { - $this->expectException(\OCP\SystemTag\TagNotFoundException::class); + $this->expectException(TagNotFoundException::class); $tag1 = $this->tagManager->createTag('one', true, false); $this->tagManager->getTagsByIds([$tag1->getId(), 100, 101]); @@ -299,7 +302,7 @@ class SystemTagManagerTest extends TestCase { $this->tagManager->getTagsByIds([$tag1->getId() . 'suffix']); } - public static function updateTagProvider() { + public static function updateTagProvider(): array { return [ [ // update name @@ -360,7 +363,7 @@ class SystemTagManagerTest extends TestCase { * @dataProvider updateTagProvider */ public function testUpdateTagDuplicate($tagCreate, $tagUpdated): void { - $this->expectException(\OCP\SystemTag\TagAlreadyExistsException::class); + $this->expectException(TagAlreadyExistsException::class); $this->tagManager->createTag( $tagCreate[0], @@ -396,7 +399,7 @@ class SystemTagManagerTest extends TestCase { public function testDeleteNonExistingTag(): void { - $this->expectException(\OCP\SystemTag\TagNotFoundException::class); + $this->expectException(TagNotFoundException::class); $this->tagManager->deleteTags([100]); } @@ -424,7 +427,7 @@ class SystemTagManagerTest extends TestCase { ], $tagIdMapping); } - public static function visibilityCheckProvider() { + public static function visibilityCheckProvider(): array { return [ [false, false, false, false], [true, false, false, true], @@ -451,7 +454,7 @@ class SystemTagManagerTest extends TestCase { $this->assertEquals($expectedResult, $this->tagManager->canUserSeeTag($tag1, $user)); } - public static function assignabilityCheckProvider() { + public static function assignabilityCheckProvider(): array { return [ // no groups [false, false, false, false], @@ -529,7 +532,7 @@ class SystemTagManagerTest extends TestCase { $this->assertEquals([], $this->tagManager->getTagGroups($tag1)); } - private function allowedToCreateProvider(): array { + public static function allowedToCreateProvider(): array { return [ [true, null, true], [true, null, false], @@ -570,7 +573,7 @@ class SystemTagManagerTest extends TestCase { \OC::$CLI = $oldCli; } - private function disallowedToCreateProvider(): array { + public static function disallowedToCreateProvider(): array { return [ [false], [null], diff --git a/tests/lib/SystemTag/SystemTagObjectMapperTest.php b/tests/lib/SystemTag/SystemTagObjectMapperTest.php index 3569c98b5bc..a43bda3b659 100644 --- a/tests/lib/SystemTag/SystemTagObjectMapperTest.php +++ b/tests/lib/SystemTag/SystemTagObjectMapperTest.php @@ -13,6 +13,7 @@ use OC\SystemTag\SystemTagManager; use OC\SystemTag\SystemTagObjectMapper; use OCP\EventDispatcher\IEventDispatcher; use OCP\IDBConnection; +use OCP\Server; use OCP\SystemTag\ISystemTag; use OCP\SystemTag\ISystemTagManager; use OCP\SystemTag\ISystemTagObjectMapper; @@ -64,7 +65,7 @@ class SystemTagObjectMapperTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->connection = \OC::$server->getDatabaseConnection(); + $this->connection = Server::get(IDBConnection::class); $this->pruneTagsTables(); $this->tagManager = $this->createMock(ISystemTagManager::class); @@ -198,7 +199,7 @@ class SystemTagObjectMapperTest extends TestCase { public function testGetObjectsForNonExistingTag(): void { - $this->expectException(\OCP\SystemTag\TagNotFoundException::class); + $this->expectException(TagNotFoundException::class); $this->tagMapper->getObjectIdsForTags( [100], @@ -236,7 +237,7 @@ class SystemTagObjectMapperTest extends TestCase { public function testAssignNonExistingTags(): void { - $this->expectException(\OCP\SystemTag\TagNotFoundException::class); + $this->expectException(TagNotFoundException::class); $this->tagMapper->assignTags('1', 'testtype', [100]); } @@ -263,7 +264,7 @@ class SystemTagObjectMapperTest extends TestCase { public function testUnassignNonExistingTags(): void { - $this->expectException(\OCP\SystemTag\TagNotFoundException::class); + $this->expectException(TagNotFoundException::class); $this->tagMapper->unassignTags('1', 'testtype', [100]); } @@ -394,7 +395,7 @@ class SystemTagObjectMapperTest extends TestCase { public function testHaveTagNonExisting(): void { - $this->expectException(\OCP\SystemTag\TagNotFoundException::class); + $this->expectException(TagNotFoundException::class); $this->tagMapper->haveTag( ['1'], diff --git a/tests/lib/TagsTest.php b/tests/lib/TagsTest.php index feb6bd2a1ad..92e6f7c7dc7 100644 --- a/tests/lib/TagsTest.php +++ b/tests/lib/TagsTest.php @@ -7,6 +7,8 @@ namespace Test; +use OC\Tagging\TagMapper; +use OC\TagManager; use OCP\EventDispatcher\IEventDispatcher; use OCP\IDBConnection; use OCP\IUser; @@ -50,12 +52,12 @@ class TagsTest extends \Test\TestCase { ->willReturn($this->user); $this->objectType = $this->getUniqueID('type_'); - $this->tagMapper = new \OC\Tagging\TagMapper(\OC::$server->get(IDBConnection::class)); - $this->tagMgr = new \OC\TagManager($this->tagMapper, $this->userSession, \OC::$server->get(IDBConnection::class), \OC::$server->get(LoggerInterface::class), \OC::$server->get(IEventDispatcher::class)); + $this->tagMapper = new TagMapper(Server::get(IDBConnection::class)); + $this->tagMgr = new TagManager($this->tagMapper, $this->userSession, Server::get(IDBConnection::class), Server::get(LoggerInterface::class), Server::get(IEventDispatcher::class)); } protected function tearDown(): void { - $conn = \OC::$server->getDatabaseConnection(); + $conn = Server::get(IDBConnection::class); $conn->executeQuery('DELETE FROM `*PREFIX*vcategory_to_object`'); $conn->executeQuery('DELETE FROM `*PREFIX*vcategory`'); @@ -68,7 +70,7 @@ class TagsTest extends \Test\TestCase { ->expects($this->any()) ->method('getUser') ->willReturn(null); - $this->tagMgr = new \OC\TagManager($this->tagMapper, $this->userSession, \OC::$server->getDatabaseConnection(), \OC::$server->get(LoggerInterface::class), \OC::$server->get(IEventDispatcher::class)); + $this->tagMgr = new TagManager($this->tagMapper, $this->userSession, Server::get(IDBConnection::class), Server::get(LoggerInterface::class), Server::get(IEventDispatcher::class)); $this->assertNull($this->tagMgr->load($this->objectType)); } @@ -194,7 +196,7 @@ class TagsTest extends \Test\TestCase { $tagId = $tagData[0]['id']; $tagType = $tagData[0]['type']; - $conn = \OC::$server->getDatabaseConnection(); + $conn = Server::get(IDBConnection::class); $statement = $conn->prepare( 'INSERT INTO `*PREFIX*vcategory_to_object` ' . '(`objid`, `categoryid`, `type`) VALUES ' . diff --git a/tests/lib/TaskProcessing/TaskProcessingTest.php b/tests/lib/TaskProcessing/TaskProcessingTest.php index 73f67b07266..1995b6919ab 100644 --- a/tests/lib/TaskProcessing/TaskProcessingTest.php +++ b/tests/lib/TaskProcessing/TaskProcessingTest.php @@ -12,6 +12,7 @@ use OC\EventDispatcher\EventDispatcher; use OC\TaskProcessing\Db\TaskMapper; use OC\TaskProcessing\Manager; use OC\TaskProcessing\RemoveOldTasksBackgroundJob; +use OC\TaskProcessing\SynchronousBackgroundJob; use OCP\App\IAppManager; use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; @@ -19,6 +20,7 @@ use OCP\EventDispatcher\IEventDispatcher; use OCP\Files\AppData\IAppDataFactory; use OCP\Files\Config\ICachedMountInfo; use OCP\Files\Config\IUserMountCache; +use OCP\Files\File; use OCP\Files\IRootFolder; use OCP\Http\Client\IClientService; use OCP\ICacheFactory; @@ -27,11 +29,13 @@ use OCP\IDBConnection; use OCP\IServerContainer; use OCP\IUser; use OCP\IUserManager; +use OCP\Server; use OCP\TaskProcessing\EShapeType; use OCP\TaskProcessing\Events\GetTaskProcessingProvidersEvent; use OCP\TaskProcessing\Events\TaskFailedEvent; use OCP\TaskProcessing\Events\TaskSuccessfulEvent; use OCP\TaskProcessing\Exception\NotFoundException; +use OCP\TaskProcessing\Exception\PreConditionNotMetException; use OCP\TaskProcessing\Exception\ProcessingException; use OCP\TaskProcessing\Exception\UnauthorizedException; use OCP\TaskProcessing\Exception\ValidationException; @@ -551,7 +555,7 @@ class TaskProcessingTest extends \Test\TestCase { ConflictingExternalTaskType::class => new ConflictingExternalTaskType(), ]; - $userManager = \OCP\Server::get(IUserManager::class); + $userManager = Server::get(IUserManager::class); if (!$userManager->userExists(self::TEST_USER)) { $userManager->createUser(self::TEST_USER, 'test'); } @@ -564,19 +568,19 @@ class TaskProcessingTest extends \Test\TestCase { $this->eventDispatcher = new EventDispatcher( new \Symfony\Component\EventDispatcher\EventDispatcher(), $this->serverContainer, - \OC::$server->get(LoggerInterface::class), + Server::get(LoggerInterface::class), ); $this->registrationContext = $this->createMock(RegistrationContext::class); $this->coordinator = $this->createMock(Coordinator::class); $this->coordinator->expects($this->any())->method('getRegistrationContext')->willReturn($this->registrationContext); - $this->rootFolder = \OCP\Server::get(IRootFolder::class); + $this->rootFolder = Server::get(IRootFolder::class); - $this->taskMapper = \OCP\Server::get(TaskMapper::class); + $this->taskMapper = Server::get(TaskMapper::class); $this->jobList = $this->createPartialMock(DummyJobList::class, ['add']); - $this->jobList->expects($this->any())->method('add')->willReturnCallback(function () { + $this->jobList->expects($this->any())->method('add')->willReturnCallback(function (): void { }); $this->eventDispatcher = $this->createMock(IEventDispatcher::class); @@ -585,34 +589,34 @@ class TaskProcessingTest extends \Test\TestCase { $text2imageManager = new \OC\TextToImage\Manager( $this->serverContainer, $this->coordinator, - \OC::$server->get(LoggerInterface::class), + Server::get(LoggerInterface::class), $this->jobList, - \OC::$server->get(\OC\TextToImage\Db\TaskMapper::class), - \OC::$server->get(IConfig::class), - \OC::$server->get(IAppDataFactory::class), + Server::get(\OC\TextToImage\Db\TaskMapper::class), + Server::get(IConfig::class), + Server::get(IAppDataFactory::class), ); $this->userMountCache = $this->createMock(IUserMountCache::class); - $this->config = \OC::$server->get(IConfig::class); + $this->config = Server::get(IConfig::class); $this->manager = new Manager( $this->config, $this->coordinator, $this->serverContainer, - \OC::$server->get(LoggerInterface::class), + Server::get(LoggerInterface::class), $this->taskMapper, $this->jobList, $this->eventDispatcher, - \OC::$server->get(IAppDataFactory::class), - \OC::$server->get(IRootFolder::class), + Server::get(IAppDataFactory::class), + Server::get(IRootFolder::class), $text2imageManager, $this->userMountCache, - \OC::$server->get(IClientService::class), - \OC::$server->get(IAppManager::class), - \OC::$server->get(ICacheFactory::class), + Server::get(IClientService::class), + Server::get(IAppManager::class), + Server::get(ICacheFactory::class), ); } - private function getFile(string $name, string $content): \OCP\Files\File { + private function getFile(string $name, string $content): File { $folder = $this->rootFolder->getUserFolder(self::TEST_USER); $file = $folder->newFile($name, $content); return $file; @@ -622,7 +626,7 @@ class TaskProcessingTest extends \Test\TestCase { $this->registrationContext->expects($this->any())->method('getTaskProcessingProviders')->willReturn([]); self::assertCount(0, $this->manager->getAvailableTaskTypes()); self::assertFalse($this->manager->hasProviders()); - self::expectException(\OCP\TaskProcessing\Exception\PreConditionNotMetException::class); + self::expectException(PreConditionNotMetException::class); $this->manager->scheduleTask(new Task(TextToText::ID, ['input' => 'Hello'], 'test', null)); } @@ -637,7 +641,7 @@ class TaskProcessingTest extends \Test\TestCase { self::assertCount(0, $this->manager->getAvailableTaskTypes()); self::assertCount(1, $this->manager->getAvailableTaskTypes(true)); self::assertTrue($this->manager->hasProviders()); - self::expectException(\OCP\TaskProcessing\Exception\PreConditionNotMetException::class); + self::expectException(PreConditionNotMetException::class); $this->manager->scheduleTask(new Task(TextToText::ID, ['input' => 'Hello'], 'test', null)); } @@ -694,11 +698,11 @@ class TaskProcessingTest extends \Test\TestCase { $this->eventDispatcher->expects($this->once())->method('dispatchTyped')->with(new IsInstanceOf(TaskFailedEvent::class)); - $backgroundJob = new \OC\TaskProcessing\SynchronousBackgroundJob( - \OCP\Server::get(ITimeFactory::class), + $backgroundJob = new SynchronousBackgroundJob( + Server::get(ITimeFactory::class), $this->manager, $this->jobList, - \OCP\Server::get(LoggerInterface::class), + Server::get(LoggerInterface::class), ); $backgroundJob->start($this->jobList); @@ -722,11 +726,11 @@ class TaskProcessingTest extends \Test\TestCase { $this->eventDispatcher->expects($this->once())->method('dispatchTyped')->with(new IsInstanceOf(TaskFailedEvent::class)); - $backgroundJob = new \OC\TaskProcessing\SynchronousBackgroundJob( - \OCP\Server::get(ITimeFactory::class), + $backgroundJob = new SynchronousBackgroundJob( + Server::get(ITimeFactory::class), $this->manager, $this->jobList, - \OCP\Server::get(LoggerInterface::class), + Server::get(LoggerInterface::class), ); $backgroundJob->start($this->jobList); @@ -767,11 +771,11 @@ class TaskProcessingTest extends \Test\TestCase { $this->eventDispatcher->expects($this->once())->method('dispatchTyped')->with(new IsInstanceOf(TaskSuccessfulEvent::class)); - $backgroundJob = new \OC\TaskProcessing\SynchronousBackgroundJob( - \OCP\Server::get(ITimeFactory::class), + $backgroundJob = new SynchronousBackgroundJob( + Server::get(ITimeFactory::class), $this->manager, $this->jobList, - \OCP\Server::get(LoggerInterface::class), + Server::get(LoggerInterface::class), ); $backgroundJob->start($this->jobList); @@ -803,11 +807,11 @@ class TaskProcessingTest extends \Test\TestCase { $this->eventDispatcher->expects($this->once())->method('dispatchTyped')->with(new IsInstanceOf(TaskSuccessfulEvent::class)); - $backgroundJob = new \OC\TaskProcessing\SynchronousBackgroundJob( - \OCP\Server::get(ITimeFactory::class), + $backgroundJob = new SynchronousBackgroundJob( + Server::get(ITimeFactory::class), $this->manager, $this->jobList, - \OCP\Server::get(LoggerInterface::class), + Server::get(LoggerInterface::class), ); $backgroundJob->start($this->jobList); @@ -854,7 +858,7 @@ class TaskProcessingTest extends \Test\TestCase { $this->manager->setTaskProgress($task2->getId(), 0.1); $input = $this->manager->prepareInputData($task2); self::assertTrue(isset($input['audio'])); - self::assertInstanceOf(\OCP\Files\File::class, $input['audio']); + self::assertInstanceOf(File::class, $input['audio']); self::assertEquals($audioId, $input['audio']->getId()); $this->manager->setTaskResult($task2->getId(), null, ['spectrogram' => 'World']); @@ -865,7 +869,7 @@ class TaskProcessingTest extends \Test\TestCase { self::assertTrue(isset($task->getOutput()['spectrogram'])); $node = $this->rootFolder->getFirstNodeByIdInPath($task->getOutput()['spectrogram'], '/' . $this->rootFolder->getAppDataDirectoryName() . '/'); self::assertNotNull($node); - self::assertInstanceOf(\OCP\Files\File::class, $node); + self::assertInstanceOf(File::class, $node); self::assertEquals('World', $node->getContent()); } @@ -904,7 +908,7 @@ class TaskProcessingTest extends \Test\TestCase { $this->manager->setTaskProgress($task2->getId(), 0.1); $input = $this->manager->prepareInputData($task2); self::assertTrue(isset($input['audio'])); - self::assertInstanceOf(\OCP\Files\File::class, $input['audio']); + self::assertInstanceOf(File::class, $input['audio']); self::assertEquals($audioId, $input['audio']->getId()); $outputFileId = $this->getFile('audioOutput', 'World')->getId(); @@ -917,12 +921,12 @@ class TaskProcessingTest extends \Test\TestCase { self::assertTrue(isset($task->getOutput()['spectrogram'])); $node = $this->rootFolder->getFirstNodeById($task->getOutput()['spectrogram']); self::assertNotNull($node, 'fileId:' . $task->getOutput()['spectrogram']); - self::assertInstanceOf(\OCP\Files\File::class, $node); + self::assertInstanceOf(File::class, $node); self::assertEquals('World', $node->getContent()); } public function testNonexistentTask(): void { - $this->expectException(\OCP\TaskProcessing\Exception\NotFoundException::class); + $this->expectException(NotFoundException::class); $this->manager->getTask(2147483646); } @@ -933,7 +937,7 @@ class TaskProcessingTest extends \Test\TestCase { $timeFactory->expects($this->any())->method('getTime')->willReturnCallback(fn () => $currentTime->getTimestamp()); $this->taskMapper = new TaskMapper( - \OCP\Server::get(IDBConnection::class), + Server::get(IDBConnection::class), $timeFactory, ); @@ -947,11 +951,11 @@ class TaskProcessingTest extends \Test\TestCase { $this->eventDispatcher->expects($this->once())->method('dispatchTyped')->with(new IsInstanceOf(TaskSuccessfulEvent::class)); - $backgroundJob = new \OC\TaskProcessing\SynchronousBackgroundJob( - \OCP\Server::get(ITimeFactory::class), + $backgroundJob = new SynchronousBackgroundJob( + Server::get(ITimeFactory::class), $this->manager, $this->jobList, - \OCP\Server::get(LoggerInterface::class), + Server::get(LoggerInterface::class), ); $backgroundJob->start($this->jobList); @@ -962,8 +966,8 @@ class TaskProcessingTest extends \Test\TestCase { $bgJob = new RemoveOldTasksBackgroundJob( $timeFactory, $this->taskMapper, - \OC::$server->get(LoggerInterface::class), - \OCP\Server::get(IAppDataFactory::class), + Server::get(LoggerInterface::class), + Server::get(IAppDataFactory::class), ); $bgJob->setArgument([]); $bgJob->start($this->jobList); @@ -987,11 +991,11 @@ class TaskProcessingTest extends \Test\TestCase { $this->eventDispatcher->expects($this->once())->method('dispatchTyped')->with(new IsInstanceOf(TaskSuccessfulEvent::class)); - $backgroundJob = new \OC\TaskProcessing\SynchronousBackgroundJob( - \OCP\Server::get(ITimeFactory::class), + $backgroundJob = new SynchronousBackgroundJob( + Server::get(ITimeFactory::class), $this->manager, $this->jobList, - \OCP\Server::get(LoggerInterface::class), + Server::get(LoggerInterface::class), ); $backgroundJob->start($this->jobList); @@ -1018,11 +1022,11 @@ class TaskProcessingTest extends \Test\TestCase { $this->eventDispatcher->expects($this->once())->method('dispatchTyped')->with(new IsInstanceOf(TaskFailedEvent::class)); - $backgroundJob = new \OC\TaskProcessing\SynchronousBackgroundJob( - \OCP\Server::get(ITimeFactory::class), + $backgroundJob = new SynchronousBackgroundJob( + Server::get(ITimeFactory::class), $this->manager, $this->jobList, - \OCP\Server::get(LoggerInterface::class), + Server::get(LoggerInterface::class), ); $backgroundJob->start($this->jobList); @@ -1048,11 +1052,11 @@ class TaskProcessingTest extends \Test\TestCase { $this->eventDispatcher->expects($this->once())->method('dispatchTyped')->with(new IsInstanceOf(TaskSuccessfulEvent::class)); - $backgroundJob = new \OC\TaskProcessing\SynchronousBackgroundJob( - \OCP\Server::get(ITimeFactory::class), + $backgroundJob = new SynchronousBackgroundJob( + Server::get(ITimeFactory::class), $this->manager, $this->jobList, - \OCP\Server::get(LoggerInterface::class), + Server::get(LoggerInterface::class), ); $backgroundJob->start($this->jobList); @@ -1065,7 +1069,7 @@ class TaskProcessingTest extends \Test\TestCase { self::assertTrue($this->providers[SuccessfulTextToImageProvider::class]->ran); $node = $this->rootFolder->getFirstNodeByIdInPath($task->getOutput()['images'][0], '/' . $this->rootFolder->getAppDataDirectoryName() . '/'); self::assertNotNull($node); - self::assertInstanceOf(\OCP\Files\File::class, $node); + self::assertInstanceOf(File::class, $node); self::assertEquals('test', $node->getContent()); } @@ -1084,11 +1088,11 @@ class TaskProcessingTest extends \Test\TestCase { $this->eventDispatcher->expects($this->once())->method('dispatchTyped')->with(new IsInstanceOf(TaskFailedEvent::class)); - $backgroundJob = new \OC\TaskProcessing\SynchronousBackgroundJob( - \OCP\Server::get(ITimeFactory::class), + $backgroundJob = new SynchronousBackgroundJob( + Server::get(ITimeFactory::class), $this->manager, $this->jobList, - \OCP\Server::get(LoggerInterface::class), + Server::get(LoggerInterface::class), ); $backgroundJob->start($this->jobList); @@ -1237,28 +1241,28 @@ class TaskProcessingTest extends \Test\TestCase { $text2imageManager = new \OC\TextToImage\Manager( $this->serverContainer, $this->coordinator, - \OC::$server->get(LoggerInterface::class), + Server::get(LoggerInterface::class), $this->jobList, - \OC::$server->get(\OC\TextToImage\Db\TaskMapper::class), + Server::get(\OC\TextToImage\Db\TaskMapper::class), $this->config, // Use the shared config mock - \OC::$server->get(IAppDataFactory::class), + Server::get(IAppDataFactory::class), ); return new Manager( $this->config, $this->coordinator, $this->serverContainer, - \OC::$server->get(LoggerInterface::class), + Server::get(LoggerInterface::class), $this->taskMapper, $this->jobList, $this->eventDispatcher, // Use the potentially reconfigured mock - \OC::$server->get(IAppDataFactory::class), + Server::get(IAppDataFactory::class), $this->rootFolder, $text2imageManager, $this->userMountCache, - \OC::$server->get(IClientService::class), - \OC::$server->get(IAppManager::class), - \OC::$server->get(ICacheFactory::class), + Server::get(IClientService::class), + Server::get(IAppManager::class), + Server::get(ICacheFactory::class), ); } @@ -1271,7 +1275,7 @@ class TaskProcessingTest extends \Test\TestCase { $this->eventDispatcher->expects($dispatchExpectation) ->method('dispatchTyped') - ->willReturnCallback(function (object $event) use ($providersToAdd, $taskTypesToAdd) { + ->willReturnCallback(function (object $event) use ($providersToAdd, $taskTypesToAdd): void { if ($event instanceof GetTaskProcessingProvidersEvent) { foreach ($providersToAdd as $providerInstance) { $event->addProvider($providerInstance); diff --git a/tests/lib/TempManagerTest.php b/tests/lib/TempManagerTest.php index 63cffc0dcae..ee7778c7e88 100644 --- a/tests/lib/TempManagerTest.php +++ b/tests/lib/TempManagerTest.php @@ -9,6 +9,8 @@ namespace Test; use bantu\IniGetWrapper\IniGetWrapper; +use OC\TempManager; +use OCP\Files; use OCP\IConfig; use Psr\Log\LoggerInterface; @@ -26,7 +28,7 @@ class TempManagerTest extends \Test\TestCase { protected function tearDown(): void { if ($this->baseDir !== null) { - \OC_Helper::rmdirr($this->baseDir); + Files::rmdirr($this->baseDir); } $this->baseDir = null; parent::tearDown(); @@ -48,7 +50,7 @@ class TempManagerTest extends \Test\TestCase { ->willReturn('/tmp'); } $iniGetWrapper = $this->createMock(IniGetWrapper::class); - $manager = new \OC\TempManager($logger, $config, $iniGetWrapper); + $manager = new TempManager($logger, $config, $iniGetWrapper); if ($this->baseDir) { $manager->overrideTempBaseDir($this->baseDir); } diff --git a/tests/lib/Template/JSCombinerTest.php b/tests/lib/Template/JSCombinerTest.php index e4e6594c05c..4881a31a52b 100644 --- a/tests/lib/Template/JSCombinerTest.php +++ b/tests/lib/Template/JSCombinerTest.php @@ -15,7 +15,9 @@ use OCP\Files\SimpleFS\ISimpleFile; use OCP\Files\SimpleFS\ISimpleFolder; use OCP\ICache; use OCP\ICacheFactory; +use OCP\ITempManager; use OCP\IURLGenerator; +use OCP\Server; use Psr\Log\LoggerInterface; class JSCombinerTest extends \Test\TestCase { @@ -488,7 +490,7 @@ var b = \'world\'; public function testGetContent(): void { // Create temporary file with some content - $tmpFile = \OC::$server->getTempManager()->getTemporaryFile('JSCombinerTest'); + $tmpFile = Server::get(ITempManager::class)->getTemporaryFile('JSCombinerTest'); $pathInfo = pathinfo($tmpFile); file_put_contents($tmpFile, json_encode(['/foo/bar/test', $pathInfo['dirname'] . '/js/mytest.js'])); $tmpFilePathArray = explode('/', $pathInfo['basename']); @@ -503,7 +505,7 @@ var b = \'world\'; public function testGetContentInvalidJson(): void { // Create temporary file with some content - $tmpFile = \OC::$server->getTempManager()->getTemporaryFile('JSCombinerTest'); + $tmpFile = Server::get(ITempManager::class)->getTemporaryFile('JSCombinerTest'); $pathInfo = pathinfo($tmpFile); file_put_contents($tmpFile, 'CertainlyNotJson'); $expected = []; diff --git a/tests/lib/Template/ResourceLocatorTest.php b/tests/lib/Template/ResourceLocatorTest.php index 65d4c7938f9..311cf317129 100644 --- a/tests/lib/Template/ResourceLocatorTest.php +++ b/tests/lib/Template/ResourceLocatorTest.php @@ -60,11 +60,11 @@ class ResourceLocatorTest extends \Test\TestCase { $locator->expects($this->once()) ->method('doFind') ->with('foo') - ->will($this->throwException(new ResourceNotFoundException('foo', 'map'))); + ->willThrowException(new ResourceNotFoundException('foo', 'map')); $locator->expects($this->once()) ->method('doFindTheme') ->with('foo') - ->will($this->throwException(new ResourceNotFoundException('foo', 'map'))); + ->willThrowException(new ResourceNotFoundException('foo', 'map')); $this->logger->expects($this->exactly(2)) ->method('debug') ->with($this->stringContains('map/foo')); diff --git a/tests/lib/TestCase.php b/tests/lib/TestCase.php index 918edf7150e..da1313d3697 100644 --- a/tests/lib/TestCase.php +++ b/tests/lib/TestCase.php @@ -10,11 +10,13 @@ namespace Test; use DOMDocument; use DOMNode; use OC\Command\QueueBus; +use OC\Files\Cache\Storage; use OC\Files\Config\MountProviderCollection; use OC\Files\Filesystem; use OC\Files\Mount\CacheMountProvider; use OC\Files\Mount\LocalHomeMountProvider; use OC\Files\Mount\RootMountProvider; +use OC\Files\ObjectStore\PrimaryObjectStoreConfig; use OC\Files\SetupManager; use OC\Template\Base; use OCP\Command\IBus; @@ -23,9 +25,12 @@ use OCP\Defaults; use OCP\IConfig; use OCP\IDBConnection; use OCP\IL10N; +use OCP\IUserManager; +use OCP\IUserSession; use OCP\Lock\ILockingProvider; +use OCP\Lock\LockedException; use OCP\Security\ISecureRandom; -use Psr\Log\LoggerInterface; +use OCP\Server; if (version_compare(\PHPUnit\Runner\Version::id(), 10, '>=')) { trait OnNotSuccessfulTestTrait { @@ -84,7 +89,7 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase { return false; } - $this->services[$name] = \OC::$server->query($name); + $this->services[$name] = Server::get($name); $container = \OC::$server->getAppContainerForService($name); $container = $container ?? \OC::$server; @@ -154,9 +159,9 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase { if (!$this->IsDatabaseAccessAllowed()) { self::$wasDatabaseAllowed = false; if (is_null(self::$realDatabase)) { - self::$realDatabase = \OC::$server->getDatabaseConnection(); + self::$realDatabase = Server::get(IDBConnection::class); } - \OC::$server->registerService(IDBConnection::class, function () { + \OC::$server->registerService(IDBConnection::class, function (): void { $this->fail('Your test case is not allowed to access the database.'); }); } @@ -183,7 +188,7 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase { // further cleanup $hookExceptions = \OC_Hook::$thrownExceptions; \OC_Hook::$thrownExceptions = []; - \OC::$server->get(ILockingProvider::class)->releaseAll(); + Server::get(ILockingProvider::class)->releaseAll(); if (!empty($hookExceptions)) { throw $hookExceptions[0]; } @@ -196,7 +201,7 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase { } if ($this->IsDatabaseAccessAllowed()) { - \OC\Files\Cache\Storage::getGlobalCache()->clearCache(); + Storage::getGlobalCache()->clearCache(); } // tearDown the traits @@ -264,7 +269,7 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase { * @return string */ protected static function getUniqueID($prefix = '', $length = 13) { - return $prefix . \OC::$server->get(ISecureRandom::class)->generate( + return $prefix . Server::get(ISecureRandom::class)->generate( $length, // Do not use dots and slashes as we use the value for file names ISecureRandom::CHAR_DIGITS . ISecureRandom::CHAR_LOWER . ISecureRandom::CHAR_UPPER @@ -303,9 +308,9 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase { return self::$realDatabase; }); } - $dataDir = \OC::$server->getConfig()->getSystemValueString('datadirectory', \OC::$SERVERROOT . '/data-autotest'); - if (self::$wasDatabaseAllowed && \OC::$server->getDatabaseConnection()) { - $db = \OC::$server->getDatabaseConnection(); + $dataDir = Server::get(IConfig::class)->getSystemValueString('datadirectory', \OC::$SERVERROOT . '/data-autotest'); + if (self::$wasDatabaseAllowed && Server::get(IDBConnection::class)) { + $db = Server::get(IDBConnection::class); if ($db->inTransaction()) { $db->rollBack(); throw new \Exception('There was a transaction still in progress and needed to be rolled back. Please fix this in your test.'); @@ -321,18 +326,19 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase { self::tearDownAfterClassCleanStrayLocks(); /** @var SetupManager $setupManager */ - $setupManager = \OC::$server->get(SetupManager::class); + $setupManager = Server::get(SetupManager::class); $setupManager->tearDown(); /** @var MountProviderCollection $mountProviderCollection */ - $mountProviderCollection = \OC::$server->get(MountProviderCollection::class); + $mountProviderCollection = Server::get(MountProviderCollection::class); $mountProviderCollection->clearProviders(); /** @var IConfig $config */ - $config = \OC::$server->get(IConfig::class); + $config = Server::get(IConfig::class); $mountProviderCollection->registerProvider(new CacheMountProvider($config)); $mountProviderCollection->registerHomeProvider(new LocalHomeMountProvider()); - $mountProviderCollection->registerRootProvider(new RootMountProvider($config, \OC::$server->get(LoggerInterface::class))); + $objectStoreConfig = Server::get(PrimaryObjectStoreConfig::class); + $mountProviderCollection->registerRootProvider(new RootMountProvider($objectStoreConfig, $config)); $setupManager->setupRoot(); @@ -403,7 +409,7 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase { protected static function tearDownAfterClassCleanStrayDataUnlinkDir($dir) { if ($dh = @opendir($dir)) { while (($file = readdir($dh)) !== false) { - if (\OC\Files\Filesystem::isIgnoredDir($file)) { + if (Filesystem::isIgnoredDir($file)) { continue; } $path = $dir . '/' . $file; @@ -429,7 +435,7 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase { * Clean up the list of locks */ protected static function tearDownAfterClassCleanStrayLocks() { - \OC::$server->get(ILockingProvider::class)->releaseAll(); + Server::get(ILockingProvider::class)->releaseAll(); } /** @@ -440,14 +446,14 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase { */ protected static function loginAsUser($user = '') { self::logout(); - \OC\Files\Filesystem::tearDown(); + Filesystem::tearDown(); \OC_User::setUserId($user); - $userObject = \OC::$server->getUserManager()->get($user); + $userObject = Server::get(IUserManager::class)->get($user); if (!is_null($userObject)) { $userObject->updateLastLoginTimestamp(); } \OC_Util::setupFS($user); - if (\OC::$server->getUserManager()->userExists($user)) { + if (Server::get(IUserManager::class)->userExists($user)) { \OC::$server->getUserFolder($user); } } @@ -459,7 +465,7 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase { \OC_Util::tearDownFS(); \OC_User::setUserId(''); // needed for fully logout - \OC::$server->getUserSession()->setUser(null); + Server::get(IUserSession::class)->setUser(null); } /** @@ -500,12 +506,12 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase { // the format of the lock key depends on the storage implementation // (in our case mostly md5) - if ($type === \OCP\Lock\ILockingProvider::LOCK_SHARED) { + if ($type === ILockingProvider::LOCK_SHARED) { // to check if the file has a shared lock, try acquiring an exclusive lock - $checkType = \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE; + $checkType = ILockingProvider::LOCK_EXCLUSIVE; } else { // a shared lock cannot be set if exclusive lock is in place - $checkType = \OCP\Lock\ILockingProvider::LOCK_SHARED; + $checkType = ILockingProvider::LOCK_SHARED; } try { $view->lockFile($path, $checkType, $onMountPoint); @@ -513,7 +519,7 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase { // clean up $view->unlockFile($path, $checkType, $onMountPoint); return false; - } catch (\OCP\Lock\LockedException $e) { + } catch (LockedException $e) { // we could not acquire the counter-lock, which means // the lock of $type was in place return true; diff --git a/tests/lib/TestMoveableMountPoint.php b/tests/lib/TestMoveableMountPoint.php index 4f3feccdbe2..33a5741f6ef 100644 --- a/tests/lib/TestMoveableMountPoint.php +++ b/tests/lib/TestMoveableMountPoint.php @@ -8,11 +8,13 @@ namespace Test; use OC\Files\Mount; +use OC\Files\Mount\MountPoint; +use OC\Files\Mount\MoveableMount; /** * Test moveable mount for mocking */ -class TestMoveableMountPoint extends Mount\MountPoint implements Mount\MoveableMount { +class TestMoveableMountPoint extends MountPoint implements MoveableMount { /** * Move the mount point to $target * diff --git a/tests/lib/TextProcessing/TextProcessingTest.php b/tests/lib/TextProcessing/TextProcessingTest.php index 84c5492a4a2..7761e064834 100644 --- a/tests/lib/TextProcessing/TextProcessingTest.php +++ b/tests/lib/TextProcessing/TextProcessingTest.php @@ -23,6 +23,7 @@ use OCP\EventDispatcher\IEventDispatcher; use OCP\IConfig; use OCP\IServerContainer; use OCP\PreConditionNotMetException; +use OCP\Server; use OCP\TextProcessing\Events\TaskFailedEvent; use OCP\TextProcessing\Events\TaskSuccessfulEvent; use OCP\TextProcessing\FreePromptTaskType; @@ -118,7 +119,7 @@ class TextProcessingTest extends \Test\TestCase { $this->eventDispatcher = new EventDispatcher( new \Symfony\Component\EventDispatcher\EventDispatcher(), $this->serverContainer, - \OC::$server->get(LoggerInterface::class), + Server::get(LoggerInterface::class), ); $this->registrationContext = $this->createMock(RegistrationContext::class); @@ -158,14 +159,14 @@ class TextProcessingTest extends \Test\TestCase { $this->taskMapper ->expects($this->any()) ->method('deleteOlderThan') - ->willReturnCallback(function (int $timeout) { + ->willReturnCallback(function (int $timeout): void { $this->tasksDb = array_filter($this->tasksDb, function (array $task) use ($timeout) { return $task['last_updated'] >= $this->currentTime->getTimestamp() - $timeout; }); }); $this->jobList = $this->createPartialMock(DummyJobList::class, ['add']); - $this->jobList->expects($this->any())->method('add')->willReturnCallback(function () { + $this->jobList->expects($this->any())->method('add')->willReturnCallback(function (): void { }); $config = $this->createMock(IConfig::class); @@ -176,11 +177,11 @@ class TextProcessingTest extends \Test\TestCase { $this->manager = new Manager( $this->serverContainer, $this->coordinator, - \OC::$server->get(LoggerInterface::class), + Server::get(LoggerInterface::class), $this->jobList, $this->taskMapper, $config, - \OC::$server->get(\OCP\TaskProcessing\IManager::class), + $this->createMock(\OCP\TaskProcessing\IManager::class), ); } @@ -239,7 +240,7 @@ class TextProcessingTest extends \Test\TestCase { // run background job $bgJob = new TaskBackgroundJob( - \OC::$server->get(ITimeFactory::class), + Server::get(ITimeFactory::class), $this->manager, $this->eventDispatcher, ); @@ -314,7 +315,7 @@ class TextProcessingTest extends \Test\TestCase { // run background job $bgJob = new TaskBackgroundJob( - \OC::$server->get(ITimeFactory::class), + Server::get(ITimeFactory::class), $this->manager, $this->eventDispatcher, ); @@ -343,9 +344,9 @@ class TextProcessingTest extends \Test\TestCase { $this->currentTime = $this->currentTime->add(new \DateInterval('P1Y')); // run background job $bgJob = new RemoveOldTasksBackgroundJob( - \OC::$server->get(ITimeFactory::class), + Server::get(ITimeFactory::class), $this->taskMapper, - \OC::$server->get(LoggerInterface::class), + Server::get(LoggerInterface::class), ); $bgJob->setArgument([]); $bgJob->start($this->jobList); diff --git a/tests/lib/Traits/EncryptionTrait.php b/tests/lib/Traits/EncryptionTrait.php index e435a286685..fa0aa1541c3 100644 --- a/tests/lib/Traits/EncryptionTrait.php +++ b/tests/lib/Traits/EncryptionTrait.php @@ -11,10 +11,14 @@ use OC\Encryption\EncryptionWrapper; use OC\Files\SetupManager; use OC\Memcache\ArrayCache; use OCA\Encryption\AppInfo\Application; +use OCA\Encryption\Crypto\Encryption; use OCA\Encryption\KeyManager; use OCA\Encryption\Users\Setup; use OCP\Encryption\IManager; +use OCP\IConfig; use OCP\IUserManager; +use OCP\IUserSession; +use OCP\Server; use Psr\Log\LoggerInterface; /** @@ -51,7 +55,7 @@ trait EncryptionTrait { \OC_Util::tearDownFS(); \OC_User::setUserId(''); // needed for fully logout - \OC::$server->getUserSession()->setUser(null); + Server::get(IUserSession::class)->setUser(null); $this->setupManager->tearDown(); @@ -81,32 +85,32 @@ trait EncryptionTrait { protected function postLogin() { $encryptionWrapper = new EncryptionWrapper( new ArrayCache(), - \OC::$server->getEncryptionManager(), - \OC::$server->get(LoggerInterface::class) + Server::get(\OCP\Encryption\IManager::class), + Server::get(LoggerInterface::class) ); $this->registerStorageWrapper('oc_encryption', [$encryptionWrapper, 'wrapStorage']); } protected function setUpEncryptionTrait() { - $isReady = \OC::$server->getEncryptionManager()->isReady(); + $isReady = Server::get(\OCP\Encryption\IManager::class)->isReady(); if (!$isReady) { $this->markTestSkipped('Encryption not ready'); } - $this->userManager = \OC::$server->get(IUserManager::class); - $this->setupManager = \OC::$server->get(SetupManager::class); + $this->userManager = Server::get(IUserManager::class); + $this->setupManager = Server::get(SetupManager::class); \OC_App::loadApp('encryption'); $this->encryptionApp = new Application([], $isReady); - $this->config = \OC::$server->getConfig(); + $this->config = Server::get(IConfig::class); $this->encryptionWasEnabled = $this->config->getAppValue('core', 'encryption_enabled', 'no'); $this->originalEncryptionModule = $this->config->getAppValue('core', 'default_encryption_module'); - $this->config->setAppValue('core', 'default_encryption_module', \OCA\Encryption\Crypto\Encryption::ID); + $this->config->setAppValue('core', 'default_encryption_module', Encryption::ID); $this->config->setAppValue('core', 'encryption_enabled', 'yes'); - $this->assertTrue(\OC::$server->getEncryptionManager()->isEnabled()); + $this->assertTrue(Server::get(\OCP\Encryption\IManager::class)->isEnabled()); } protected function tearDownEncryptionTrait() { diff --git a/tests/lib/Traits/MountProviderTrait.php b/tests/lib/Traits/MountProviderTrait.php index 6d947d645dd..479e702e2f1 100644 --- a/tests/lib/Traits/MountProviderTrait.php +++ b/tests/lib/Traits/MountProviderTrait.php @@ -9,7 +9,9 @@ namespace Test\Traits; use OC\Files\Mount\MountPoint; use OC\Files\Storage\StorageFactory; +use OCP\Files\Config\IMountProviderCollection; use OCP\IUser; +use OCP\Server; /** * Allow setting mounts for users @@ -49,7 +51,7 @@ trait MountProviderTrait { $this->mountProvider = $this->getMockBuilder('\OCP\Files\Config\IMountProvider')->getMock(); $this->mountProvider->expects($this->any()) ->method('getMountsForUser') - ->will($this->returnCallback(function (IUser $user) { + ->willReturnCallback(function (IUser $user) { if (isset($this->mounts[$user->getUID()])) { return array_map(function ($config) { return new MountPoint($config['storage'], $config['mountPoint'], $config['arguments'], $this->storageFactory); @@ -57,7 +59,7 @@ trait MountProviderTrait { } else { return []; } - })); - \OC::$server->getMountProviderCollection()->registerProvider($this->mountProvider); + }); + Server::get(IMountProviderCollection::class)->registerProvider($this->mountProvider); } } diff --git a/tests/lib/Traits/UserTrait.php b/tests/lib/Traits/UserTrait.php index 05fb0caa8ca..137ca986911 100644 --- a/tests/lib/Traits/UserTrait.php +++ b/tests/lib/Traits/UserTrait.php @@ -10,14 +10,14 @@ namespace Test\Traits; use OC\User\User; use OCP\EventDispatcher\IEventDispatcher; use OCP\IUser; +use OCP\IUserManager; use OCP\Server; class DummyUser extends User { - private string $uid; - - public function __construct(string $uid) { - $this->uid = $uid; - parent::__construct($uid, null, Server::get(IEventDispatcher::class)); + public function __construct( + private string $uid, + ) { + parent::__construct($this->uid, null, Server::get(IEventDispatcher::class)); } public function getUID(): string { @@ -41,10 +41,10 @@ trait UserTrait { protected function setUpUserTrait() { $this->userBackend = new \Test\Util\User\Dummy(); - \OC::$server->getUserManager()->registerBackend($this->userBackend); + Server::get(IUserManager::class)->registerBackend($this->userBackend); } protected function tearDownUserTrait() { - \OC::$server->getUserManager()->removeBackend($this->userBackend); + Server::get(IUserManager::class)->removeBackend($this->userBackend); } } diff --git a/tests/lib/Updater/ChangesCheckTest.php b/tests/lib/Updater/ChangesCheckTest.php index 4b0c54b0881..6b5b306d8f7 100644 --- a/tests/lib/Updater/ChangesCheckTest.php +++ b/tests/lib/Updater/ChangesCheckTest.php @@ -333,10 +333,10 @@ class ChangesCheckTest extends TestCase { public static function changeDataProvider():array { $testDataFound = $testDataNotFound = self::versionProvider(); - array_walk($testDataFound, static function (&$params) { + array_walk($testDataFound, static function (&$params): void { $params[] = true; }); - array_walk($testDataNotFound, static function (&$params) { + array_walk($testDataNotFound, static function (&$params): void { $params[] = false; }); return array_merge($testDataFound, $testDataNotFound); diff --git a/tests/lib/Updater/ReleaseMetadataTest.php b/tests/lib/Updater/ReleaseMetadataTest.php index 72c6da5064d..335425b7672 100644 --- a/tests/lib/Updater/ReleaseMetadataTest.php +++ b/tests/lib/Updater/ReleaseMetadataTest.php @@ -17,9 +17,7 @@ class ReleaseMetadataTest extends \Test\TestCase { protected function setUp(): void { parent::setUp(); - $this->clientService = $this->getMockBuilder(IClientService::class) - ->disableOriginalConstructor() - ->getMock(); + $this->clientService = $this->createMock(IClientService::class); } public function testDownloadMetadata(): void { @@ -39,7 +37,7 @@ class ReleaseMetadataTest extends \Test\TestCase { $releaseMetadata = new ReleaseMetadata($this->clientService); - $this->assertSame($this->resultRequestArray(), $releaseMetadata->downloadMetadata('ouila')); + $this->assertSame(self::resultRequestArray(), $releaseMetadata->downloadMetadata('ouila')); } /** @@ -72,7 +70,7 @@ class ReleaseMetadataTest extends \Test\TestCase { /** * @return array */ - public function getMetadataUrlProvider(): array { + public static function getMetadataUrlProvider(): array { return [ [ '30.0.0', @@ -89,11 +87,11 @@ class ReleaseMetadataTest extends \Test\TestCase { ]; } - private function resultRequest(): string { - return json_encode($this->resultRequestArray()); + private static function resultRequest(): string { + return json_encode(self::resultRequestArray()); } - private function resultRequestArray(): array { + private static function resultRequestArray(): array { return [ 'migrations' => [ 'core' => [], diff --git a/tests/lib/Updater/VersionCheckTest.php b/tests/lib/Updater/VersionCheckTest.php index 51d1625ea4d..0afbed08ab6 100644 --- a/tests/lib/Updater/VersionCheckTest.php +++ b/tests/lib/Updater/VersionCheckTest.php @@ -12,6 +12,7 @@ use OCP\Http\Client\IClientService; use OCP\IAppConfig; use OCP\IConfig; use OCP\IUserManager; +use OCP\Server; use OCP\ServerVersion; use OCP\Support\Subscription\IRegistry; use Psr\Log\LoggerInterface; @@ -45,7 +46,7 @@ class VersionCheckTest extends \Test\TestCase { ->willReturn(false); $this->logger = $this->createMock(LoggerInterface::class); $this->updater = $this->getMockBuilder(VersionCheck::class) - ->setMethods(['getUrlContent']) + ->onlyMethods(['getUrlContent']) ->setConstructorArgs([ $this->serverVersion, $clientService, @@ -63,7 +64,7 @@ class VersionCheckTest extends \Test\TestCase { * @return string */ private function buildUpdateUrl($baseUrl) { - $serverVersion = \OCP\Server::get(ServerVersion::class); + $serverVersion = Server::get(ServerVersion::class); return $baseUrl . '?version=' . implode('x', $serverVersion->getVersion()) . 'xinstalledatx' . time() . 'x' . $serverVersion->getChannel() . 'xxx' . PHP_MAJOR_VERSION . 'x' . PHP_MINOR_VERSION . 'x' . PHP_RELEASE_VERSION . 'x0x0'; } diff --git a/tests/lib/UpdaterTest.php b/tests/lib/UpdaterTest.php index 81babee7029..291aaf807e5 100644 --- a/tests/lib/UpdaterTest.php +++ b/tests/lib/UpdaterTest.php @@ -54,7 +54,7 @@ class UpdaterTest extends TestCase { /** * @return array */ - public function versionCompatibilityTestData() { + public static function versionCompatibilityTestData(): array { return [ // Upgrade with invalid version ['9.1.1.13', '11.0.2.25', ['nextcloud' => ['11.0' => true]], false], diff --git a/tests/lib/UrlGeneratorTest.php b/tests/lib/UrlGeneratorTest.php index ed7b797d809..21a0286348a 100644 --- a/tests/lib/UrlGeneratorTest.php +++ b/tests/lib/UrlGeneratorTest.php @@ -8,6 +8,7 @@ namespace Test; use OC\Route\Router; +use OC\URLGenerator; use OCP\ICacheFactory; use OCP\IConfig; use OCP\IRequest; @@ -42,7 +43,7 @@ class UrlGeneratorTest extends \Test\TestCase { $this->cacheFactory = $this->createMock(ICacheFactory::class); $this->request = $this->createMock(IRequest::class); $this->router = $this->createMock(Router::class); - $this->urlGenerator = new \OC\URLGenerator( + $this->urlGenerator = new URLGenerator( $this->config, $this->userSession, $this->cacheFactory, @@ -107,14 +108,14 @@ class UrlGeneratorTest extends \Test\TestCase { $this->assertEquals($expected, $result); } - public static function provideRoutes() { + public static function provideRoutes(): array { return [ ['core.Preview.getPreview', 'http://localhost/nextcloud/index.php/core/preview.png'], ['cloud_federation_api.requesthandlercontroller.addShare', 'http://localhost/nextcloud/index.php/ocm/shares'], ]; } - public static function provideDocRootAppUrlParts() { + public static function provideDocRootAppUrlParts(): array { return [ ['files_external', 'ajax/oauth2.php', [], '/index.php/apps/files_external/ajax/oauth2.php'], ['files_external', 'ajax/oauth2.php', ['trut' => 'trat', 'dut' => 'dat'], '/index.php/apps/files_external/ajax/oauth2.php?trut=trat&dut=dat'], @@ -122,7 +123,7 @@ class UrlGeneratorTest extends \Test\TestCase { ]; } - public static function provideSubDirAppUrlParts() { + public static function provideSubDirAppUrlParts(): array { return [ ['files_external', 'ajax/oauth2.php', [], '/nextcloud/index.php/apps/files_external/ajax/oauth2.php'], ['files_external', 'ajax/oauth2.php', ['trut' => 'trat', 'dut' => 'dat'], '/nextcloud/index.php/apps/files_external/ajax/oauth2.php?trut=trat&dut=dat'], @@ -154,7 +155,7 @@ class UrlGeneratorTest extends \Test\TestCase { $this->assertEquals($expectedResult, $result); } - public function provideDocRootURLs() { + public static function provideDocRootURLs(): array { return [ ['index.php', 'http://localhost/index.php'], ['/index.php', 'http://localhost/index.php'], @@ -163,7 +164,7 @@ class UrlGeneratorTest extends \Test\TestCase { ]; } - public function provideSubDirURLs() { + public static function provideSubDirURLs(): array { return [ ['', 'http://localhost/nextcloud/'], ['/', 'http://localhost/nextcloud/'], @@ -213,7 +214,7 @@ class UrlGeneratorTest extends \Test\TestCase { $this->assertEquals($expected, $result); } - public function provideOCSRoutes(): array { + public static function provideOCSRoutes(): array { return [ ['core.OCS.getCapabilities', false, 'http://localhost/nextcloud/ocs/v2.php/cloud/capabilities'], ['core.OCS.getCapabilities', true, 'http://localhost/nextcloud/ocs/v2.php/cloud/capabilities'], @@ -268,7 +269,7 @@ class UrlGeneratorTest extends \Test\TestCase { $this->assertSame('http://localhost' . \OC::$WEBROOT . '/apps/dashboard/', $this->urlGenerator->linkToDefaultPageUrl()); } - public function imagePathProvider(): array { + public static function imagePathProvider(): array { return [ ['core', 'favicon-mask.svg', \OC::$WEBROOT . '/core/img/favicon-mask.svg'], ['files', 'folder.svg', \OC::$WEBROOT . '/apps/files/img/folder.svg'], diff --git a/tests/lib/User/DatabaseTest.php b/tests/lib/User/DatabaseTest.php index 900f0ddd3fa..225a0f75edb 100644 --- a/tests/lib/User/DatabaseTest.php +++ b/tests/lib/User/DatabaseTest.php @@ -7,6 +7,7 @@ namespace Test\User; +use OC\User\Database; use OC\User\User; use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventDispatcher; @@ -39,7 +40,7 @@ class DatabaseTest extends Backend { $this->eventDispatcher = $this->createMock(IEventDispatcher::class); - $this->backend = new \OC\User\Database($this->eventDispatcher); + $this->backend = new Database($this->eventDispatcher); } protected function tearDown(): void { @@ -58,7 +59,7 @@ class DatabaseTest extends Backend { $this->eventDispatcher->expects($this->once())->method('dispatchTyped') ->willReturnCallback( - function (Event $event) { + function (Event $event): void { $this->assertInstanceOf(ValidatePasswordPolicyEvent::class, $event); /** @var ValidatePasswordPolicyEvent $event */ $this->assertSame('newpass', $event->getPassword()); @@ -71,7 +72,7 @@ class DatabaseTest extends Backend { public function testVerifyPasswordEventFail(): void { - $this->expectException(\OCP\HintException::class); + $this->expectException(HintException::class); $this->expectExceptionMessage('password change failed'); $user = $this->getUser(); @@ -79,7 +80,7 @@ class DatabaseTest extends Backend { $this->eventDispatcher->expects($this->once())->method('dispatchTyped') ->willReturnCallback( - function (Event $event) { + function (Event $event): void { $this->assertInstanceOf(ValidatePasswordPolicyEvent::class, $event); /** @var ValidatePasswordPolicyEvent $event */ $this->assertSame('newpass', $event->getPassword()); diff --git a/tests/lib/User/ManagerTest.php b/tests/lib/User/ManagerTest.php index 5d3966cf4d8..57041c0ef22 100644 --- a/tests/lib/User/ManagerTest.php +++ b/tests/lib/User/ManagerTest.php @@ -9,14 +9,17 @@ namespace Test\User; use OC\AllConfig; +use OC\USER\BACKEND; use OC\User\Database; use OC\User\Manager; +use OC\User\User; use OCP\EventDispatcher\IEventDispatcher; use OCP\ICache; use OCP\ICacheFactory; use OCP\IConfig; use OCP\IUser; use OCP\IUserManager; +use OCP\Server; use Psr\Log\LoggerInterface; use Test\TestCase; @@ -178,7 +181,7 @@ class ManagerTest extends TestCase { $backend->expects($this->any()) ->method('implementsActions') ->willReturnCallback(function ($actions) { - if ($actions === \OC\USER\BACKEND::CHECK_PASSWORD) { + if ($actions === BACKEND::CHECK_PASSWORD) { return true; } else { return false; @@ -189,7 +192,7 @@ class ManagerTest extends TestCase { $manager->registerBackend($backend); $user = $manager->checkPassword('foo', 'bar'); - $this->assertTrue($user instanceof \OC\User\User); + $this->assertTrue($user instanceof User); } public function testCheckPasswordNotSupported(): void { @@ -545,7 +548,7 @@ class ManagerTest extends TestCase { $backend->expects($this->once()) ->method('implementsActions') - ->with(\OC\USER\BACKEND::COUNT_USERS) + ->with(BACKEND::COUNT_USERS) ->willReturn(true); $backend->expects($this->once()) @@ -574,7 +577,7 @@ class ManagerTest extends TestCase { $backend1->expects($this->once()) ->method('implementsActions') - ->with(\OC\USER\BACKEND::COUNT_USERS) + ->with(BACKEND::COUNT_USERS) ->willReturn(true); $backend1->expects($this->once()) ->method('getBackendName') @@ -587,7 +590,7 @@ class ManagerTest extends TestCase { $backend2->expects($this->once()) ->method('implementsActions') - ->with(\OC\USER\BACKEND::COUNT_USERS) + ->with(BACKEND::COUNT_USERS) ->willReturn(true); $backend2->expects($this->once()) ->method('getBackendName') @@ -609,7 +612,7 @@ class ManagerTest extends TestCase { } public function testCountUsersOnlyDisabled(): void { - $manager = \OCP\Server::get(IUserManager::class); + $manager = Server::get(IUserManager::class); // count other users in the db before adding our own $countBefore = $manager->countDisabledUsers(); @@ -634,7 +637,7 @@ class ManagerTest extends TestCase { } public function testCountUsersOnlySeen(): void { - $manager = \OCP\Server::get(IUserManager::class); + $manager = Server::get(IUserManager::class); // count other users in the db before adding our own $countBefore = $manager->countSeenUsers(); @@ -660,10 +663,10 @@ class ManagerTest extends TestCase { } public function testCallForSeenUsers(): void { - $manager = \OCP\Server::get(IUserManager::class); + $manager = Server::get(IUserManager::class); // count other users in the db before adding our own $count = 0; - $function = function (IUser $user) use (&$count) { + $function = function (IUser $user) use (&$count): void { $count++; }; $manager->callForAllUsers($function, '', true); @@ -698,8 +701,8 @@ class ManagerTest extends TestCase { * @preserveGlobalState disabled */ public function testRecentlyActive(): void { - $config = \OCP\Server::get(IConfig::class); - $manager = \OCP\Server::get(IUserManager::class); + $config = Server::get(IConfig::class); + $manager = Server::get(IUserManager::class); // Create some users $now = (string)time(); diff --git a/tests/lib/User/SessionTest.php b/tests/lib/User/SessionTest.php index 7ed02571460..685b7c13d44 100644 --- a/tests/lib/User/SessionTest.php +++ b/tests/lib/User/SessionTest.php @@ -96,7 +96,7 @@ class SessionTest extends \Test\TestCase { $this->logger, $this->dispatcher ]) - ->setMethods([ + ->onlyMethods([ 'setMagicInCookie', ]) ->getMock(); @@ -104,7 +104,7 @@ class SessionTest extends \Test\TestCase { \OC_User::setIncognitoMode(false); } - public function isLoggedInData() { + public static function isLoggedInData(): array { return [ [true], [false], @@ -121,7 +121,7 @@ class SessionTest extends \Test\TestCase { $userSession = $this->getMockBuilder(Session::class) ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager, $this->logger, $this->dispatcher]) - ->setMethods([ + ->onlyMethods([ 'getUser' ]) ->getMock(); @@ -158,7 +158,7 @@ class SessionTest extends \Test\TestCase { $this->tokenProvider->expects($this->once()) ->method('getToken') ->with('bar') - ->will($this->throwException(new InvalidTokenException())); + ->willThrowException(new InvalidTokenException()); $session->expects($this->exactly(2)) ->method('set') ->with($this->callback(function ($key) { @@ -177,7 +177,7 @@ class SessionTest extends \Test\TestCase { //keep following methods intact in order to ensure hooks are working $mockedManagerMethods = array_diff($managerMethods, ['__construct', 'emit', 'listen']); $manager = $this->getMockBuilder(Manager::class) - ->setMethods($mockedManagerMethods) + ->onlyMethods($mockedManagerMethods) ->setConstructorArgs([ $this->config, $this->createMock(ICacheFactory::class), @@ -205,7 +205,7 @@ class SessionTest extends \Test\TestCase { $userSession = $this->getMockBuilder(Session::class) ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager, $this->logger, $this->dispatcher]) - ->setMethods([ + ->onlyMethods([ 'prepareUserLogin' ]) ->getMock(); @@ -238,13 +238,13 @@ class SessionTest extends \Test\TestCase { $this->tokenProvider->expects($this->once()) ->method('getToken') ->with('bar') - ->will($this->throwException(new InvalidTokenException())); + ->willThrowException(new InvalidTokenException()); $managerMethods = get_class_methods(Manager::class); //keep following methods intact in order to ensure hooks are working $mockedManagerMethods = array_diff($managerMethods, ['__construct', 'emit', 'listen']); $manager = $this->getMockBuilder(Manager::class) - ->setMethods($mockedManagerMethods) + ->onlyMethods($mockedManagerMethods) ->setConstructorArgs([ $this->config, $this->createMock(ICacheFactory::class), @@ -278,7 +278,7 @@ class SessionTest extends \Test\TestCase { //keep following methods intact in order to ensure hooks are working $mockedManagerMethods = array_diff($managerMethods, ['__construct', 'emit', 'listen']); $manager = $this->getMockBuilder(Manager::class) - ->setMethods($mockedManagerMethods) + ->onlyMethods($mockedManagerMethods) ->setConstructorArgs([ $this->config, $this->createMock(ICacheFactory::class), @@ -298,7 +298,7 @@ class SessionTest extends \Test\TestCase { $this->tokenProvider->expects($this->once()) ->method('getToken') ->with('bar') - ->will($this->throwException(new InvalidTokenException())); + ->willThrowException(new InvalidTokenException()); $user->expects($this->never()) ->method('isEnabled'); @@ -322,7 +322,7 @@ class SessionTest extends \Test\TestCase { // Keep following methods intact in order to ensure hooks are working $mockedManagerMethods = array_diff($managerMethods, ['__construct', 'emit', 'listen']); $manager = $this->getMockBuilder(Manager::class) - ->setMethods($mockedManagerMethods) + ->onlyMethods($mockedManagerMethods) ->setConstructorArgs([ $this->config, $this->createMock(ICacheFactory::class), @@ -360,7 +360,7 @@ class SessionTest extends \Test\TestCase { // Keep following methods intact in order to ensure hooks are working $mockedManagerMethods = array_diff($managerMethods, ['__construct', 'emit', 'listen']); $manager = $this->getMockBuilder(Manager::class) - ->setMethods($mockedManagerMethods) + ->onlyMethods($mockedManagerMethods) ->setConstructorArgs([ $this->config, $this->createMock(ICacheFactory::class), @@ -404,7 +404,7 @@ class SessionTest extends \Test\TestCase { $this->tokenProvider->expects($this->once()) ->method('getToken') ->with('bar') - ->will($this->throwException(new InvalidTokenException())); + ->willThrowException(new InvalidTokenException()); $manager->expects($this->once()) ->method('checkPasswordNoLogging') @@ -424,13 +424,13 @@ class SessionTest extends \Test\TestCase { /** @var Session $userSession */ $userSession = $this->getMockBuilder(Session::class) ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager, $this->logger, $this->dispatcher]) - ->setMethods(['login', 'supportsCookies', 'createSessionToken', 'getUser']) + ->onlyMethods(['login', 'supportsCookies', 'createSessionToken', 'getUser']) ->getMock(); $this->tokenProvider->expects($this->once()) ->method('getToken') ->with('doe') - ->will($this->throwException(new InvalidTokenException())); + ->willThrowException(new InvalidTokenException()); $this->config->expects($this->once()) ->method('getSystemValueBool') ->with('token_auth_enforced', false) @@ -460,13 +460,13 @@ class SessionTest extends \Test\TestCase { /** @var Session $userSession */ $userSession = $this->getMockBuilder(Session::class) ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager, $this->logger, $this->dispatcher]) - ->setMethods(['login', 'supportsCookies', 'createSessionToken', 'getUser']) + ->onlyMethods(['login', 'supportsCookies', 'createSessionToken', 'getUser']) ->getMock(); $this->tokenProvider->expects($this->once()) ->method('getToken') ->with('doe') - ->will($this->throwException(new InvalidTokenException())); + ->willThrowException(new InvalidTokenException()); $this->config->expects($this->once()) ->method('getSystemValueBool') ->with('token_auth_enforced', false) @@ -486,7 +486,7 @@ class SessionTest extends \Test\TestCase { /** @var Session $userSession */ $userSession = $this->getMockBuilder(Session::class) ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager, $this->logger, $this->dispatcher]) - ->setMethods(['isTokenPassword', 'login', 'supportsCookies', 'createSessionToken', 'getUser']) + ->onlyMethods(['isTokenPassword', 'login', 'supportsCookies', 'createSessionToken', 'getUser']) ->getMock(); $userSession->expects($this->once()) @@ -528,13 +528,13 @@ class SessionTest extends \Test\TestCase { /** @var Session $userSession */ $userSession = $this->getMockBuilder(Session::class) ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager, $this->logger, $this->dispatcher]) - ->setMethods(['login', 'isTwoFactorEnforced']) + ->onlyMethods(['login', 'isTwoFactorEnforced']) ->getMock(); $this->tokenProvider->expects($this->once()) ->method('getToken') ->with('doe') - ->will($this->throwException(new InvalidTokenException())); + ->willThrowException(new InvalidTokenException()); $this->config->expects($this->once()) ->method('getSystemValueBool') ->with('token_auth_enforced', false) @@ -635,7 +635,7 @@ class SessionTest extends \Test\TestCase { ->with('abcde12345') ->willReturn($dbToken); $this->session->method('set') - ->willReturnCallback(function ($key, $value) { + ->willReturnCallback(function ($key, $value): void { if ($key === 'app_password') { throw new ExpectationFailedException('app_password should not be set in session'); } @@ -657,7 +657,7 @@ class SessionTest extends \Test\TestCase { //keep following methods intact in order to ensure hooks are working $mockedManagerMethods = array_diff($managerMethods, ['__construct', 'emit', 'listen']); $manager = $this->getMockBuilder(Manager::class) - ->setMethods($mockedManagerMethods) + ->onlyMethods($mockedManagerMethods) ->setConstructorArgs([ $this->config, $this->createMock(ICacheFactory::class), @@ -667,7 +667,7 @@ class SessionTest extends \Test\TestCase { ->getMock(); $userSession = $this->getMockBuilder(Session::class) //override, otherwise tests will fail because of setcookie() - ->setMethods(['setMagicInCookie', 'setLoginName']) + ->onlyMethods(['setMagicInCookie', 'setLoginName']) ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager, $this->logger, $this->dispatcher]) ->getMock(); @@ -725,7 +725,7 @@ class SessionTest extends \Test\TestCase { $setUID = false; $session ->method('set') - ->willReturnCallback(function ($k, $v) use (&$setUID) { + ->willReturnCallback(function ($k, $v) use (&$setUID): void { if ($k === 'user_id' && $v === 'foo') { $setUID = true; } @@ -747,7 +747,7 @@ class SessionTest extends \Test\TestCase { //keep following methods intact in order to ensure hooks are working $mockedManagerMethods = array_diff($managerMethods, ['__construct', 'emit', 'listen']); $manager = $this->getMockBuilder(Manager::class) - ->setMethods($mockedManagerMethods) + ->onlyMethods($mockedManagerMethods) ->setConstructorArgs([ $this->config, $this->createMock(ICacheFactory::class), @@ -757,7 +757,7 @@ class SessionTest extends \Test\TestCase { ->getMock(); $userSession = $this->getMockBuilder(Session::class) //override, otherwise tests will fail because of setcookie() - ->setMethods(['setMagicInCookie']) + ->onlyMethods(['setMagicInCookie']) ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager, $this->logger, $this->dispatcher]) ->getMock(); @@ -788,7 +788,7 @@ class SessionTest extends \Test\TestCase { $this->tokenProvider->expects($this->once()) ->method('renewSessionToken') ->with($oldSessionId, $sessionId) - ->will($this->throwException(new InvalidTokenException())); + ->willThrowException(new InvalidTokenException()); $user->expects($this->never()) ->method('getUID') @@ -812,7 +812,7 @@ class SessionTest extends \Test\TestCase { //keep following methods intact in order to ensure hooks are working $mockedManagerMethods = array_diff($managerMethods, ['__construct', 'emit', 'listen']); $manager = $this->getMockBuilder(Manager::class) - ->setMethods($mockedManagerMethods) + ->onlyMethods($mockedManagerMethods) ->setConstructorArgs([ $this->config, $this->createMock(ICacheFactory::class), @@ -822,7 +822,7 @@ class SessionTest extends \Test\TestCase { ->getMock(); $userSession = $this->getMockBuilder(Session::class) //override, otherwise tests will fail because of setcookie() - ->setMethods(['setMagicInCookie']) + ->onlyMethods(['setMagicInCookie']) ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager, $this->logger, $this->dispatcher]) ->getMock(); @@ -865,7 +865,7 @@ class SessionTest extends \Test\TestCase { //keep following methods intact in order to ensure hooks are working $mockedManagerMethods = array_diff($managerMethods, ['__construct', 'emit', 'listen']); $manager = $this->getMockBuilder(Manager::class) - ->setMethods($mockedManagerMethods) + ->onlyMethods($mockedManagerMethods) ->setConstructorArgs([ $this->config, $this->createMock(ICacheFactory::class), @@ -875,7 +875,7 @@ class SessionTest extends \Test\TestCase { ->getMock(); $userSession = $this->getMockBuilder(Session::class) //override, otherwise tests will fail because of setcookie() - ->setMethods(['setMagicInCookie']) + ->onlyMethods(['setMagicInCookie']) ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager, $this->logger, $this->dispatcher]) ->getMock(); $token = 'goodToken'; @@ -925,7 +925,7 @@ class SessionTest extends \Test\TestCase { $session->set('user_id', 'foo'); $userSession = $this->getMockBuilder(Session::class) ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager, $this->logger, $this->dispatcher]) - ->setMethods([ + ->onlyMethods([ 'validateSession' ]) ->getMock(); @@ -972,7 +972,7 @@ class SessionTest extends \Test\TestCase { $this->tokenProvider->expects($this->once()) ->method('getToken') ->with($password) - ->will($this->throwException(new InvalidTokenException())); + ->willThrowException(new InvalidTokenException()); $this->tokenProvider->expects($this->once()) ->method('generateToken') @@ -1013,7 +1013,7 @@ class SessionTest extends \Test\TestCase { $this->tokenProvider->expects($this->once()) ->method('getToken') ->with($password) - ->will($this->throwException(new InvalidTokenException())); + ->willThrowException(new InvalidTokenException()); $this->tokenProvider->expects($this->once()) ->method('generateToken') @@ -1130,7 +1130,7 @@ class SessionTest extends \Test\TestCase { $this->session ->method('set') - ->willReturnCallback(function ($k, $v) use (&$davAuthenticatedSet, &$lastPasswordConfirmSet) { + ->willReturnCallback(function ($k, $v) use (&$davAuthenticatedSet, &$lastPasswordConfirmSet): void { switch ($k) { case Auth::DAV_AUTHENTICATED: $davAuthenticatedSet = $v; @@ -1155,7 +1155,7 @@ class SessionTest extends \Test\TestCase { $this->logger, $this->dispatcher ]) - ->setMethods([ + ->onlyMethods([ 'logClientIn', 'getUser', ]) @@ -1207,7 +1207,7 @@ class SessionTest extends \Test\TestCase { $this->logger, $this->dispatcher ]) - ->setMethods([ + ->onlyMethods([ 'logClientIn', ]) ->getMock(); @@ -1235,7 +1235,7 @@ class SessionTest extends \Test\TestCase { /** @var Session $userSession */ $userSession = $this->getMockBuilder(Session::class) ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager, $this->logger, $this->dispatcher]) - ->setMethods(['isTokenPassword', 'login', 'supportsCookies', 'createSessionToken', 'getUser']) + ->onlyMethods(['isTokenPassword', 'login', 'supportsCookies', 'createSessionToken', 'getUser']) ->getMock(); $userSession->expects($this->once()) @@ -1281,7 +1281,7 @@ class SessionTest extends \Test\TestCase { /** @var Session $userSession */ $userSession = $this->getMockBuilder(Session::class) ->setConstructorArgs([$manager, $session, $this->timeFactory, $this->tokenProvider, $this->config, $this->random, $this->lockdownManager, $this->logger, $this->dispatcher]) - ->setMethods(['isTokenPassword', 'login', 'supportsCookies', 'createSessionToken', 'getUser']) + ->onlyMethods(['isTokenPassword', 'login', 'supportsCookies', 'createSessionToken', 'getUser']) ->getMock(); $userSession->expects($this->once()) diff --git a/tests/lib/User/UserTest.php b/tests/lib/User/UserTest.php index 44d28481ed5..e386d0c2c10 100644 --- a/tests/lib/User/UserTest.php +++ b/tests/lib/User/UserTest.php @@ -11,9 +11,11 @@ namespace Test\User; use OC\AllConfig; use OC\Files\Mount\ObjectHomeMountProvider; use OC\Hooks\PublicEmitter; +use OC\User\Database; use OC\User\User; use OCP\Comments\ICommentsManager; use OCP\EventDispatcher\IEventDispatcher; +use OCP\Files\FileInfo; use OCP\Files\Storage\IStorageFactory; use OCP\IConfig; use OCP\IURLGenerator; @@ -217,7 +219,7 @@ class UserTest extends TestCase { public function testDeleteWithDifferentHome(): void { /** @var ObjectHomeMountProvider $homeProvider */ - $homeProvider = \OC::$server->get(ObjectHomeMountProvider::class); + $homeProvider = Server::get(ObjectHomeMountProvider::class); $user = $this->createMock(IUser::class); $user->method('getUID') ->willReturn('foo'); @@ -283,7 +285,7 @@ class UserTest extends TestCase { public function testGetBackendClassName(): void { $user = new User('foo', new \Test\Util\User\Dummy(), $this->dispatcher); $this->assertEquals('Dummy', $user->getBackendClassName()); - $user = new User('foo', new \OC\User\Database(), $this->dispatcher); + $user = new User('foo', new Database(), $this->dispatcher); $this->assertEquals('Database', $user->getBackendClassName()); } @@ -391,7 +393,7 @@ class UserTest extends TestCase { /** * @var Backend | MockObject $backend */ - $backend = $this->createMock(\OC\User\Database::class); + $backend = $this->createMock(Database::class); $backend->expects($this->any()) ->method('implementsActions') @@ -420,7 +422,7 @@ class UserTest extends TestCase { /** * @var Backend | MockObject $backend */ - $backend = $this->createMock(\OC\User\Database::class); + $backend = $this->createMock(Database::class); $backend->expects($this->any()) ->method('implementsActions') @@ -441,7 +443,7 @@ class UserTest extends TestCase { /** * @var Backend | MockObject $backend */ - $backend = $this->createMock(\OC\User\Database::class); + $backend = $this->createMock(Database::class); $backend->expects($this->any()) ->method('implementsActions') @@ -470,7 +472,7 @@ class UserTest extends TestCase { * @param User $user * @param string $password */ - $hook = function ($user, $password) use ($test, &$hooksCalled) { + $hook = function ($user, $password) use ($test, &$hooksCalled): void { $hooksCalled++; $test->assertEquals('foo', $user->getUID()); $test->assertEquals('bar', $password); @@ -496,7 +498,7 @@ class UserTest extends TestCase { $this->assertEquals(2, $hooksCalled); } - public function dataDeleteHooks() { + public static function dataDeleteHooks(): array { return [ [true, 2], [false, 1], @@ -536,7 +538,7 @@ class UserTest extends TestCase { /** * @param User $user */ - $hook = function ($user) use ($test, &$hooksCalled) { + $hook = function ($user) use ($test, &$hooksCalled): void { $hooksCalled++; $test->assertEquals('foo', $user->getUID()); }; @@ -585,14 +587,14 @@ class UserTest extends TestCase { ->method('markProcessed'); } - $this->overwriteService(\OCP\Notification\IManager::class, $notificationManager); - $this->overwriteService(\OCP\Comments\ICommentsManager::class, $commentsManager); + $this->overwriteService(INotificationManager::class, $notificationManager); + $this->overwriteService(ICommentsManager::class, $commentsManager); $this->assertSame($result, $user->delete()); $this->restoreService(AllConfig::class); - $this->restoreService(\OCP\Comments\ICommentsManager::class); - $this->restoreService(\OCP\Notification\IManager::class); + $this->restoreService(ICommentsManager::class); + $this->restoreService(INotificationManager::class); $this->assertEquals($expectedHooks, $hooksCalled); } @@ -616,7 +618,7 @@ class UserTest extends TestCase { $userConfig = []; $config->expects(self::atLeast(2)) ->method('setUserValue') - ->willReturnCallback(function () { + ->willReturnCallback(function (): void { $userConfig[] = func_get_args(); }); @@ -625,14 +627,14 @@ class UserTest extends TestCase { ->method('deleteReferencesOfActor') ->willThrowException(new \Error('Test exception')); - $this->overwriteService(\OCP\Comments\ICommentsManager::class, $commentsManager); + $this->overwriteService(ICommentsManager::class, $commentsManager); $this->expectException(\Error::class); $user = $this->getMockBuilder(User::class) ->onlyMethods(['getHome']) ->setConstructorArgs(['foo', $backend, $this->dispatcher, null, $config]) ->getMock(); - + $user->expects(self::atLeastOnce()) ->method('getHome') ->willReturn('/home/path'); @@ -647,10 +649,10 @@ class UserTest extends TestCase { $userConfig, ); - $this->restoreService(\OCP\Comments\ICommentsManager::class); + $this->restoreService(ICommentsManager::class); } - public function dataGetCloudId(): array { + public static function dataGetCloudId(): array { return [ ['https://localhost:8888/nextcloud', 'foo@localhost:8888/nextcloud'], ['http://localhost:8888/nextcloud', 'foo@http://localhost:8888/nextcloud'], @@ -685,7 +687,7 @@ class UserTest extends TestCase { * @param string $feature * @param string $value */ - $hook = function (IUser $user, $feature, $value) use ($test, &$hooksCalled) { + $hook = function (IUser $user, $feature, $value) use ($test, &$hooksCalled): void { $hooksCalled++; $test->assertEquals('eMailAddress', $feature); $test->assertEquals('', $value); @@ -721,7 +723,7 @@ class UserTest extends TestCase { * @param string $feature * @param string $value */ - $hook = function (IUser $user, $feature, $value) use ($test, &$hooksCalled) { + $hook = function (IUser $user, $feature, $value) use ($test, &$hooksCalled): void { $hooksCalled++; $test->assertEquals('eMailAddress', $feature); $test->assertEquals('foo@bar.com', $value); @@ -784,7 +786,7 @@ class UserTest extends TestCase { * @param string $feature * @param string $value */ - $hook = function (IUser $user, $feature, $value) use ($test, &$hooksCalled) { + $hook = function (IUser $user, $feature, $value) use ($test, &$hooksCalled): void { $hooksCalled++; $test->assertEquals('quota', $feature); $test->assertEquals('23 TB', $value); @@ -830,12 +832,12 @@ class UserTest extends TestCase { ['files', 'allow_unlimited_quota', '1', '1'], ]; $config->method('getUserValue') - ->will($this->returnValueMap($userValueMap)); + ->willReturnMap($userValueMap); $config->method('getAppValue') - ->will($this->returnValueMap($appValueMap)); + ->willReturnMap($appValueMap); - $quota = $user->getQuota(); - $this->assertEquals('none', $quota); + $this->assertEquals('none', $user->getQuota()); + $this->assertEquals(FileInfo::SPACE_UNLIMITED, $user->getQuotaBytes()); } public function testGetDefaultUnlimitedQuotaForbidden(): void { @@ -864,12 +866,12 @@ class UserTest extends TestCase { ['files', 'default_quota', '1 GB', '1 GB'], ]; $config->method('getUserValue') - ->will($this->returnValueMap($userValueMap)); + ->willReturnMap($userValueMap); $config->method('getAppValue') - ->will($this->returnValueMap($appValueMap)); + ->willReturnMap($appValueMap); - $quota = $user->getQuota(); - $this->assertEquals('1 GB', $quota); + $this->assertEquals('1 GB', $user->getQuota()); + $this->assertEquals(1024 * 1024 * 1024, $user->getQuotaBytes()); } public function testSetQuotaAddressNoChange(): void { @@ -964,7 +966,7 @@ class UserTest extends TestCase { null, $config, ]) - ->setMethods(['isEnabled', 'triggerChange']) + ->onlyMethods(['isEnabled', 'triggerChange']) ->getMock(); $user->expects($this->once()) @@ -998,7 +1000,7 @@ class UserTest extends TestCase { null, $config, ]) - ->setMethods(['isEnabled', 'triggerChange']) + ->onlyMethods(['isEnabled', 'triggerChange']) ->getMock(); $user->expects($this->once()) diff --git a/tests/lib/Util/User/Dummy.php b/tests/lib/Util/User/Dummy.php index d44b9d85d72..93f457184c4 100644 --- a/tests/lib/Util/User/Dummy.php +++ b/tests/lib/Util/User/Dummy.php @@ -8,11 +8,12 @@ namespace Test\Util\User; use OC\User\Backend; +use OCP\IUserBackend; /** * dummy user backend, does not keep state, only for testing use */ -class Dummy extends Backend implements \OCP\IUserBackend { +class Dummy extends Backend implements IUserBackend { private $users = []; private $displayNames = []; diff --git a/tests/lib/UtilCheckServerTest.php b/tests/lib/UtilCheckServerTest.php index ca4cd7d108f..accac40112a 100644 --- a/tests/lib/UtilCheckServerTest.php +++ b/tests/lib/UtilCheckServerTest.php @@ -7,6 +7,11 @@ namespace Test; +use OCP\ISession; +use OCP\ITempManager; +use OCP\Server; +use OCP\Util; + /** * Tests for server check functions * @@ -37,10 +42,10 @@ class UtilCheckServerTest extends \Test\TestCase { protected function setUp(): void { parent::setUp(); - $this->datadir = \OC::$server->getTempManager()->getTemporaryFolder(); + $this->datadir = Server::get(ITempManager::class)->getTemporaryFolder(); file_put_contents($this->datadir . '/.ncdata', '# Nextcloud data directory'); - \OC::$server->getSession()->set('checkServer_succeeded', false); + Server::get(ISession::class)->set('checkServer_succeeded', false); } protected function tearDown(): void { @@ -85,7 +90,7 @@ class UtilCheckServerTest extends \Test\TestCase { // simulate old version that didn't have it unlink($this->datadir . '/.ncdata'); - $session = \OC::$server->getSession(); + $session = Server::get(ISession::class); $oldCurrentVersion = $session->get('OC_Version'); // upgrade condition to simulate needUpgrade() === true @@ -123,7 +128,7 @@ class UtilCheckServerTest extends \Test\TestCase { $result = \OC_Util::checkServer($this->getConfig([ 'installed' => true, - 'version' => implode('.', \OCP\Util::getVersion()) + 'version' => implode('.', Util::getVersion()) ])); $this->assertCount(1, $result); } @@ -134,7 +139,7 @@ class UtilCheckServerTest extends \Test\TestCase { public function testDataDirWritable(): void { $result = \OC_Util::checkServer($this->getConfig([ 'installed' => true, - 'version' => implode('.', \OCP\Util::getVersion()) + 'version' => implode('.', Util::getVersion()) ])); $this->assertEmpty($result); } @@ -148,7 +153,7 @@ class UtilCheckServerTest extends \Test\TestCase { chmod($this->datadir, 0300); $result = \OC_Util::checkServer($this->getConfig([ 'installed' => true, - 'version' => implode('.', \OCP\Util::getVersion()) + 'version' => implode('.', Util::getVersion()) ])); $this->assertCount(1, $result); } @@ -160,7 +165,7 @@ class UtilCheckServerTest extends \Test\TestCase { chmod($this->datadir, 0300); $result = \OC_Util::checkServer($this->getConfig([ 'installed' => false, - 'version' => implode('.', \OCP\Util::getVersion()) + 'version' => implode('.', Util::getVersion()) ])); chmod($this->datadir, 0700); //needed for cleanup $this->assertEmpty($result); diff --git a/tests/lib/UtilTest.php b/tests/lib/UtilTest.php index 0063a991e48..d1145fc3149 100644 --- a/tests/lib/UtilTest.php +++ b/tests/lib/UtilTest.php @@ -8,6 +8,11 @@ namespace Test; use OC_Util; +use OCP\Files; +use OCP\IConfig; +use OCP\ISession; +use OCP\ITempManager; +use OCP\Server; use OCP\Util; /** @@ -95,7 +100,7 @@ class UtilTest extends \Test\TestCase { * If no strict email check is enabled "localhost" should validate as a valid email domain */ public function testGetDefaultEmailAddress(): void { - $config = \OC::$server->getConfig(); + $config = Server::get(IConfig::class); $config->setAppValue('core', 'enforce_strict_email_check', 'no'); $email = Util::getDefaultEmailAddress('no-reply'); $this->assertEquals('no-reply@localhost', $email); @@ -103,7 +108,7 @@ class UtilTest extends \Test\TestCase { } public function testGetDefaultEmailAddressFromConfig(): void { - $config = \OC::$server->getConfig(); + $config = Server::get(IConfig::class); $config->setSystemValue('mail_domain', 'example.com'); $email = Util::getDefaultEmailAddress('no-reply'); $this->assertEquals('no-reply@example.com', $email); @@ -111,7 +116,7 @@ class UtilTest extends \Test\TestCase { } public function testGetConfiguredEmailAddressFromConfig(): void { - $config = \OC::$server->getConfig(); + $config = Server::get(IConfig::class); $config->setSystemValue('mail_domain', 'example.com'); $config->setSystemValue('mail_from_address', 'owncloud'); $email = Util::getDefaultEmailAddress('no-reply'); @@ -121,7 +126,7 @@ class UtilTest extends \Test\TestCase { } public function testGetInstanceIdGeneratesValidId(): void { - \OC::$server->getConfig()->deleteSystemValue('instanceid'); + Server::get(IConfig::class)->deleteSystemValue('instanceid'); $instanceId = OC_Util::getInstanceId(); $this->assertStringStartsWith('oc', $instanceId); $matchesRegex = preg_match('/^[a-z0-9]+$/', $instanceId); @@ -132,37 +137,37 @@ class UtilTest extends \Test\TestCase { * Test needUpgrade() when the core version is increased */ public function testNeedUpgradeCore(): void { - $config = \OC::$server->getConfig(); + $config = Server::get(IConfig::class); $oldConfigVersion = $config->getSystemValue('version', '0.0.0'); - $oldSessionVersion = \OC::$server->getSession()->get('OC_Version'); + $oldSessionVersion = Server::get(ISession::class)->get('OC_Version'); $this->assertFalse(Util::needUpgrade()); $config->setSystemValue('version', '7.0.0.0'); - \OC::$server->getSession()->set('OC_Version', [7, 0, 0, 1]); + Server::get(ISession::class)->set('OC_Version', [7, 0, 0, 1]); self::invokePrivate(new Util, 'needUpgradeCache', [null]); $this->assertTrue(Util::needUpgrade()); $config->setSystemValue('version', $oldConfigVersion); - \OC::$server->getSession()->set('OC_Version', $oldSessionVersion); + Server::get(ISession::class)->set('OC_Version', $oldSessionVersion); self::invokePrivate(new Util, 'needUpgradeCache', [null]); $this->assertFalse(Util::needUpgrade()); } public function testCheckDataDirectoryValidity(): void { - $dataDir = \OC::$server->getTempManager()->getTemporaryFolder(); + $dataDir = Server::get(ITempManager::class)->getTemporaryFolder(); touch($dataDir . '/.ncdata'); $errors = \OC_Util::checkDataDirectoryValidity($dataDir); $this->assertEmpty($errors); - \OCP\Files::rmdirr($dataDir); + Files::rmdirr($dataDir); - $dataDir = \OC::$server->getTempManager()->getTemporaryFolder(); + $dataDir = Server::get(ITempManager::class)->getTemporaryFolder(); // no touch $errors = \OC_Util::checkDataDirectoryValidity($dataDir); $this->assertNotEmpty($errors); - \OCP\Files::rmdirr($dataDir); + Files::rmdirr($dataDir); $errors = \OC_Util::checkDataDirectoryValidity('relative/path'); $this->assertNotEmpty($errors); @@ -334,4 +339,84 @@ class UtilTest extends \Test\TestCase { // each of the characters is 12 bytes $this->assertEquals('🙈', Util::shortenMultibyteString('🙈🙊🙉', 16, 2)); } + + /** + * @dataProvider humanFileSizeProvider + */ + public function testHumanFileSize($expected, $input): void { + $result = Util::humanFileSize($input); + $this->assertEquals($expected, $result); + } + + public static function humanFileSizeProvider(): array { + return [ + ['0 B', 0], + ['1 KB', 1024], + ['9.5 MB', 10000000], + ['1.3 GB', 1395864371], + ['465.7 GB', 500000000000], + ['454.7 TB', 500000000000000], + ['444.1 PB', 500000000000000000], + ]; + } + + /** + * @dataProvider providesComputerFileSize + */ + public function testComputerFileSize($expected, $input): void { + $result = Util::computerFileSize($input); + $this->assertEquals($expected, $result); + } + + public static function providesComputerFileSize(): array { + return [ + [0.0, '0 B'], + [1024.0, '1 KB'], + [1395864371.0, '1.3 GB'], + [9961472.0, '9.5 MB'], + [500041567437.0, '465.7 GB'], + [false, '12 GB etfrhzui'] + ]; + } + + public function testMb_array_change_key_case(): void { + $arrayStart = [ + 'Foo' => 'bar', + 'Bar' => 'foo', + ]; + $arrayResult = [ + 'foo' => 'bar', + 'bar' => 'foo', + ]; + $result = Util::mb_array_change_key_case($arrayStart); + $expected = $arrayResult; + $this->assertEquals($result, $expected); + + $arrayStart = [ + 'foo' => 'bar', + 'bar' => 'foo', + ]; + $arrayResult = [ + 'FOO' => 'bar', + 'BAR' => 'foo', + ]; + $result = Util::mb_array_change_key_case($arrayStart, MB_CASE_UPPER); + $expected = $arrayResult; + $this->assertEquals($result, $expected); + } + + public function testRecursiveArraySearch(): void { + $haystack = [ + 'Foo' => 'own', + 'Bar' => 'Cloud', + ]; + + $result = Util::recursiveArraySearch($haystack, 'own'); + $expected = 'Foo'; + $this->assertEquals($result, $expected); + + $result = Util::recursiveArraySearch($haystack, 'NotFound'); + $this->assertFalse($result); + } + } |