aboutsummaryrefslogtreecommitdiffstats
path: root/apps/twofactor_backupcodes/tests
diff options
context:
space:
mode:
Diffstat (limited to 'apps/twofactor_backupcodes/tests')
-rw-r--r--apps/twofactor_backupcodes/tests/Unit/Event/CodesGeneratedTest.php40
-rw-r--r--apps/twofactor_backupcodes/tests/Unit/Listener/ActivityPublisherTest.php97
-rw-r--r--apps/twofactor_backupcodes/tests/Unit/Listener/RegistryUpdaterTest.php75
-rw-r--r--apps/twofactor_backupcodes/tests/Unit/Service/BackupCodeStorageTest.php51
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);