diff options
Diffstat (limited to 'tests/lib/Command')
-rw-r--r-- | tests/lib/Command/AsyncBusTestCase.php (renamed from tests/lib/Command/AsyncBusTest.php) | 37 | ||||
-rw-r--r-- | tests/lib/Command/BackgroundModeTest.php | 9 | ||||
-rw-r--r-- | tests/lib/Command/CronBusTest.php | 9 | ||||
-rw-r--r-- | tests/lib/Command/Integrity/SignAppTest.php | 218 | ||||
-rw-r--r-- | tests/lib/Command/Integrity/SignCoreTest.php | 167 |
5 files changed, 199 insertions, 241 deletions
diff --git a/tests/lib/Command/AsyncBusTest.php b/tests/lib/Command/AsyncBusTestCase.php index e8d7a857129..bb47de30b11 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 * @@ -65,7 +64,7 @@ abstract class AsyncBusTest extends TestCase { public static $lastCommand; /** - * @var \OCP\Command\IBus + * @var IBus */ private $bus; @@ -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..ab036ef87ee 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; @@ -32,9 +35,7 @@ class BackgroundModeTest extends TestCase { $this->command->setDefinition($inputDefinition); } - /** - * @dataProvider dataModeCommand - */ + #[\PHPUnit\Framework\Attributes\DataProvider('dataModeCommand')] public function testModeCommand(string $mode): void { $this->appConfig->expects($this->once()) ->method('setValueString') @@ -49,7 +50,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..c86cdcb1da0 100644 --- a/tests/lib/Command/CronBusTest.php +++ b/tests/lib/Command/CronBusTest.php @@ -1,4 +1,5 @@ <?php + /** * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -7,11 +8,15 @@ namespace Test\Command; use OC\Command\CronBus; +use OCP\BackgroundJob\IJobList; use Test\BackgroundJob\DummyJobList; -class CronBusTest extends AsyncBusTest { +/** + * @group DB + */ +class CronBusTest extends AsyncBusTestCase { /** - * @var \OCP\BackgroundJob\IJobList + * @var IJobList */ private $jobList; diff --git a/tests/lib/Command/Integrity/SignAppTest.php b/tests/lib/Command/Integrity/SignAppTest.php index d4921c79431..237afe3a5b5 100644 --- a/tests/lib/Command/Integrity/SignAppTest.php +++ b/tests/lib/Command/Integrity/SignAppTest.php @@ -1,4 +1,5 @@ <?php + /** * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -44,22 +45,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 +78,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 +111,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 +144,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 +175,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 +206,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 +228,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 +242,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 +263,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..843084eebd9 100644 --- a/tests/lib/Command/Integrity/SignCoreTest.php +++ b/tests/lib/Command/Integrity/SignCoreTest.php @@ -1,4 +1,5 @@ <?php + /** * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -39,22 +40,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 +63,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 +86,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 +115,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 +146,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 +168,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 +182,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 +203,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])); } |