summaryrefslogtreecommitdiffstats
path: root/tests/lib/Authentication/Token
diff options
context:
space:
mode:
authorChristoph Wurst <christoph@winzerhof-wurst.at>2019-05-28 17:56:01 +0200
committerChristoph Wurst <christoph@winzerhof-wurst.at>2019-06-27 17:16:18 +0200
commitaa6622ccef610b4f3bfb57facb80e3e6613fd22e (patch)
tree723d8be9abcdea889d931bc0dc3377d20d5dfd95 /tests/lib/Authentication/Token
parentbc6053eb2119b462f78098d72d665aba744826cb (diff)
downloadnextcloud-server-aa6622ccef610b4f3bfb57facb80e3e6613fd22e.tar.gz
nextcloud-server-aa6622ccef610b4f3bfb57facb80e3e6613fd22e.zip
Decouple remote wipe notifcation channels with events
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Diffstat (limited to 'tests/lib/Authentication/Token')
-rw-r--r--tests/lib/Authentication/Token/RemoteWipeTest.php131
1 files changed, 131 insertions, 0 deletions
diff --git a/tests/lib/Authentication/Token/RemoteWipeTest.php b/tests/lib/Authentication/Token/RemoteWipeTest.php
new file mode 100644
index 00000000000..e0b3e9fcae9
--- /dev/null
+++ b/tests/lib/Authentication/Token/RemoteWipeTest.php
@@ -0,0 +1,131 @@
+<?php declare(strict_types=1);
+
+/**
+ * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * @author 2019 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 Test\Authentication\Token;
+
+use OC\Authentication\Events\RemoteWipeFinished;
+use OC\Authentication\Events\RemoteWipeStarted;
+use OC\Authentication\Exceptions\WipeTokenException;
+use OC\Authentication\Token\IProvider as ITokenProvider;
+use OC\Authentication\Token\IProvider;
+use OC\Authentication\Token\IToken;
+use OC\Authentication\Token\RemoteWipe;
+use OCP\EventDispatcher\IEventDispatcher;
+use OCP\ILogger;
+use PHPUnit\Framework\MockObject\MockObject;
+use Test\TestCase;
+
+class RemoteWipeTest extends TestCase {
+
+ /** @var ITokenProvider|MockObject */
+ private $tokenProvider;
+
+ /** @var IEventDispatcher|MockObject */
+ private $eventDispatcher;
+
+ /** @var ILogger|MockObject */
+ private $logger;
+
+ /** @var RemoteWipe */
+ private $remoteWipe;
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->tokenProvider = $this->createMock(IProvider::class);
+ $this->eventDispatcher = $this->createMock(IEventDispatcher::class);
+ $this->logger = $this->createMock(ILogger::class);
+
+ $this->remoteWipe = new RemoteWipe(
+ $this->tokenProvider,
+ $this->eventDispatcher,
+ $this->logger
+ );
+ }
+
+ public function testStartWipingNotAWipeToken() {
+ $token = $this->createMock(IToken::class);
+ $this->tokenProvider->expects($this->once())
+ ->method('getToken')
+ ->with('tk1')
+ ->willReturn($token);
+ $this->eventDispatcher->expects($this->never())
+ ->method('dispatch');
+
+ $result = $this->remoteWipe->start('tk1');
+
+ $this->assertFalse($result);
+ }
+
+ public function testStartWiping() {
+ $token = $this->createMock(IToken::class);
+ $this->tokenProvider->expects($this->once())
+ ->method('getToken')
+ ->with('tk1')
+ ->willThrowException(new WipeTokenException($token));
+ $this->eventDispatcher->expects($this->once())
+ ->method('dispatch');
+ $this->eventDispatcher->expects($this->once())
+ ->method('dispatch')
+ ->with(RemoteWipeStarted::class, $this->equalTo(new RemoteWipeStarted($token)));
+
+ $result = $this->remoteWipe->start('tk1');
+
+ $this->assertTrue($result);
+ }
+
+ public function testFinishWipingNotAWipeToken() {
+ $token = $this->createMock(IToken::class);
+ $this->tokenProvider->expects($this->once())
+ ->method('getToken')
+ ->with('tk1')
+ ->willReturn($token);
+ $this->eventDispatcher->expects($this->never())
+ ->method('dispatch');
+
+ $result = $this->remoteWipe->finish('tk1');
+
+ $this->assertFalse($result);
+ }
+
+ public function startFinishWiping() {
+ $token = $this->createMock(IToken::class);
+ $this->tokenProvider->expects($this->once())
+ ->method('getToken')
+ ->with('tk1')
+ ->willThrowException(new WipeTokenException($token));
+ $this->eventDispatcher->expects($this->once())
+ ->method('dispatch');
+ $this->tokenProvider->expects($this->once())
+ ->method('invalidateToken')
+ ->with($token);
+ $this->eventDispatcher->expects($this->once())
+ ->method('dispatch')
+ ->with(RemoteWipeFinished::class, $this->equalTo(new RemoteWipeFinished($token)));
+
+ $result = $this->remoteWipe->finish('tk1');
+
+ $this->assertTrue($result);
+ }
+
+}