diff options
Diffstat (limited to 'apps/twofactor_backupcodes/tests')
4 files changed, 225 insertions, 38 deletions
diff --git a/apps/twofactor_backupcodes/tests/Unit/Event/CodesGeneratedTest.php b/apps/twofactor_backupcodes/tests/Unit/Event/CodesGeneratedTest.php new file mode 100644 index 00000000000..fa363dccc96 --- /dev/null +++ b/apps/twofactor_backupcodes/tests/Unit/Event/CodesGeneratedTest.php @@ -0,0 +1,40 @@ +<?php + +declare(strict_types=1); + +/** + * @author Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\TwoFactorBackupCodes\Tests\Unit\Event; + +use OCA\TwoFactorBackupCodes\Event\CodesGenerated; +use OCP\IUser; +use Test\TestCase; + +class CodesGeneratedTest extends TestCase { + + public function testCodeGeneratedEvent() { + $user = $this->createMock(IUser::class); + + $event = new CodesGenerated($user); + + $this->assertSame($user, $event->getUser()); + } +} diff --git a/apps/twofactor_backupcodes/tests/Unit/Listener/ActivityPublisherTest.php b/apps/twofactor_backupcodes/tests/Unit/Listener/ActivityPublisherTest.php new file mode 100644 index 00000000000..a6c38701a30 --- /dev/null +++ b/apps/twofactor_backupcodes/tests/Unit/Listener/ActivityPublisherTest.php @@ -0,0 +1,97 @@ +<?php + +declare(strict_types=1); + +/** + * @author Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\TwoFactorBackupCodes\Tests\Unit\Listener; + +use OCA\TwoFactorBackupCodes\Event\CodesGenerated; +use OCA\TwoFactorBackupCodes\Listener\ActivityPublisher; +use OCP\Activity\IEvent; +use OCP\Activity\IManager; +use OCP\ILogger; +use OCP\IUser; +use PHPUnit_Framework_MockObject_MockObject; +use Symfony\Component\EventDispatcher\Event; +use Test\TestCase; + +class ActivityPublisherTest extends TestCase { + + /** @var IManager|PHPUnit_Framework_MockObject_MockObject */ + private $activityManager; + + /** @var ILogger */ + + private $logger; + + /** @var ActivityPublisher */ + private $listener; + + protected function setUp() { + parent::setUp(); + + $this->activityManager = $this->createMock(IManager::class); + $this->logger = $this->createMock(ILogger::class); + + $this->listener = new ActivityPublisher($this->activityManager, $this->logger); + } + + public function testHandleGenericEvent() { + $event = $this->createMock(Event::class); + $this->activityManager->expects($this->never()) + ->method('publish'); + + $this->listener->handle($event); + } + + public function testHandleCodesGeneratedEvent() { + $user = $this->createMock(IUser::class); + $user->method('getUID')->willReturn('fritz'); + $event = new CodesGenerated($user); + $activityEvent = $this->createMock(IEvent::class); + $this->activityManager->expects($this->once()) + ->method('generateEvent') + ->will($this->returnValue($activityEvent)); + $activityEvent->expects($this->once()) + ->method('setApp') + ->with('twofactor_backupcodes') + ->will($this->returnSelf()); + $activityEvent->expects($this->once()) + ->method('setType') + ->with('security') + ->will($this->returnSelf()); + $activityEvent->expects($this->once()) + ->method('setAuthor') + ->with('fritz') + ->will($this->returnSelf()); + $activityEvent->expects($this->once()) + ->method('setAffectedUser') + ->with('fritz') + ->will($this->returnSelf()); + $this->activityManager->expects($this->once()) + ->method('publish') + ->will($this->returnValue($activityEvent)); + + $this->listener->handle($event); + } + +} diff --git a/apps/twofactor_backupcodes/tests/Unit/Listener/RegistryUpdaterTest.php b/apps/twofactor_backupcodes/tests/Unit/Listener/RegistryUpdaterTest.php new file mode 100644 index 00000000000..2e75804661b --- /dev/null +++ b/apps/twofactor_backupcodes/tests/Unit/Listener/RegistryUpdaterTest.php @@ -0,0 +1,75 @@ +<?php + +declare(strict_types=1); + +/** + * @author Christoph Wurst <christoph@winzerhof-wurst.at> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\TwoFactorBackupCodes\Tests\Unit\Listener; + +use OCA\TwoFactorBackupCodes\Event\CodesGenerated; +use OCA\TwoFactorBackupCodes\Listener\RegistryUpdater; +use OCA\TwoFactorBackupCodes\Provider\BackupCodesProvider; +use OCP\Authentication\TwoFactorAuth\IRegistry; +use OCP\IUser; +use Symfony\Component\EventDispatcher\Event; +use Test\TestCase; + +class RegistryUpdaterTest extends TestCase { + + /** @var IRegistry */ + private $registry; + + /** @var BackupCodesProvider */ + private $provider; + + /** @var RegistryUpdater */ + private $listener; + + protected function setUp() { + parent::setUp(); + + $this->registry = $this->createMock(IRegistry::class); + $this->provider = $this->createMock(BackupCodesProvider::class); + + $this->listener = new RegistryUpdater($this->registry, $this->provider); + } + + public function testHandleGenericEvent() { + $event = $this->createMock(Event::class); + $this->registry->expects($this->never()) + ->method('enableProviderFor'); + + $this->listener->handle($event); + } + + public function testHandleCodesGeneratedEvent() { + $user = $this->createMock(IUser::class); + $event = new CodesGenerated($user); + $this->registry->expects($this->once()) + ->method('enableProviderFor') + ->with( + $this->provider, + $user + ); + + $this->listener->handle($event); + } +} diff --git a/apps/twofactor_backupcodes/tests/Unit/Service/BackupCodeStorageTest.php b/apps/twofactor_backupcodes/tests/Unit/Service/BackupCodeStorageTest.php index d2387bd6ccd..2aa323a0a73 100644 --- a/apps/twofactor_backupcodes/tests/Unit/Service/BackupCodeStorageTest.php +++ b/apps/twofactor_backupcodes/tests/Unit/Service/BackupCodeStorageTest.php @@ -24,14 +24,13 @@ namespace OCA\TwoFactorBackupCodes\Tests\Unit\Service; use OCA\TwoFactorBackupCodes\Db\BackupCode; use OCA\TwoFactorBackupCodes\Db\BackupCodeMapper; +use OCA\TwoFactorBackupCodes\Event\CodesGenerated; use OCA\TwoFactorBackupCodes\Service\BackupCodeStorage; -use OCP\Activity\IEvent; -use OCP\Activity\IManager; -use OCP\ILogger; use OCP\IUser; use OCP\Security\IHasher; use OCP\Security\ISecureRandom; use PHPUnit_Framework_MockObject_MockObject; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Test\TestCase; class BackupCodeStorageTest extends TestCase { @@ -45,11 +44,8 @@ class BackupCodeStorageTest extends TestCase { /** @var IHasher|PHPUnit_Framework_MockObject_MockObject */ private $hasher; - /** @var IManager|PHPUnit_Framework_MockObject_MockObject */ - private $activityManager; - - /** @var ILogger|PHPUnit_Framework_MockObject_MockObject */ - private $logger; + /** @var EventDispatcherInterface|PHPUnit_Framework_MockObject_MockObject */ + private $eventDispatcher; /** @var BackupCodeStorage */ private $storage; @@ -60,20 +56,15 @@ class BackupCodeStorageTest extends TestCase { $this->mapper = $this->createMock(BackupCodeMapper::class); $this->random = $this->createMock(ISecureRandom::class); $this->hasher = $this->createMock(IHasher::class); - $this->activityManager = $this->createMock(IManager::class); - $this->logger = $this->createMock(ILogger::class); + $this->eventDispatcher = $this->createMock(EventDispatcherInterface::class); - $this->storage = new BackupCodeStorage($this->mapper, $this->random, $this->hasher, $this->activityManager, $this->logger); + $this->storage = new BackupCodeStorage($this->mapper, $this->random, $this->hasher, $this->eventDispatcher); } public function testCreateCodes() { $user = $this->createMock(IUser::class); $number = 5; - $event = $this->createMock(IEvent::class); - - $user->expects($this->any()) - ->method('getUID') - ->will($this->returnValue('fritz')); + $user->method('getUID')->willReturn('fritz'); $this->random->expects($this->exactly($number)) ->method('generate') ->with(16, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789') @@ -89,28 +80,12 @@ class BackupCodeStorageTest extends TestCase { $this->mapper->expects($this->exactly($number)) ->method('insert') ->with($this->equalTo($row)); - $this->activityManager->expects($this->once()) - ->method('generateEvent') - ->will($this->returnValue($event)); - $event->expects($this->once()) - ->method('setApp') - ->with('twofactor_backupcodes') - ->will($this->returnSelf()); - $event->expects($this->once()) - ->method('setType') - ->with('security') - ->will($this->returnSelf()); - $event->expects($this->once()) - ->method('setAuthor') - ->with('fritz') - ->will($this->returnSelf()); - $event->expects($this->once()) - ->method('setAffectedUser') - ->with('fritz') - ->will($this->returnSelf()); - $this->activityManager->expects($this->once()) - ->method('publish') - ->will($this->returnValue($event)); + $this->eventDispatcher->expects($this->once()) + ->method('dispatch') + ->with( + $this->equalTo(CodesGenerated::class), + $this->equalTo(new CodesGenerated($user)) + ); $codes = $this->storage->createCodes($user, $number); $this->assertCount($number, $codes); |