diff options
author | Christoph Wurst <christoph@winzerhof-wurst.at> | 2019-03-01 14:09:54 +0100 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2019-03-01 21:24:44 +0100 |
commit | 102f700d96556424e4b59fcc9fadd65c1a377225 (patch) | |
tree | bdd172ea009b5869960a78145d0d49489cae899f /tests/lib/Settings | |
parent | 2398d1183e7e561c8d3db7c06d8919d09c26b9e8 (diff) | |
download | nextcloud-server-102f700d96556424e4b59fcc9fadd65c1a377225.tar.gz nextcloud-server-102f700d96556424e4b59fcc9fadd65c1a377225.zip |
Load auth tokens with the initial state API
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Diffstat (limited to 'tests/lib/Settings')
-rw-r--r-- | tests/lib/Settings/Personal/SecurityTest.php | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/tests/lib/Settings/Personal/SecurityTest.php b/tests/lib/Settings/Personal/SecurityTest.php new file mode 100644 index 00000000000..dcef9ab0d7d --- /dev/null +++ b/tests/lib/Settings/Personal/SecurityTest.php @@ -0,0 +1,167 @@ +<?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\Settings\Personal; + +use OC\Authentication\Token\DefaultToken; +use OC\Authentication\Token\IProvider as IAuthTokenProvider; +use OC\Authentication\TwoFactorAuth\Manager as TwoFactorManager; +use OC\Authentication\TwoFactorAuth\ProviderLoader; +use OC\Settings\Personal\Security; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\IInitialStateService; +use OCP\ISession; +use OCP\IUser; +use OCP\IUserManager; +use OCP\IUserSession; +use PHPUnit\Framework\MockObject\MockObject; +use Test\TestCase; + +class SecurityTest extends TestCase { + + /** @var IUserManager|MockObject */ + private $userManager; + + /** @var TwoFactorManager|MockObject */ + private $twoFactorManager; + + /** @var IAuthTokenProvider|MockObject */ + private $authTokenProvider; + + /** @var ProviderLoader|MockObject */ + private $providerLoader; + + /** @var IUserSession|MockObject */ + private $userSession; + + /** @var ISession|MockObject */ + private $session; + + /** @var IInitialStateService|MockObject */ + private $initialStateService; + + /** @var string */ + private $uid; + + /** @var Security */ + private $section; + + public function setUp() { + parent::setUp(); + + $this->userManager = $this->createMock(IUserManager::class); + $this->twoFactorManager = $this->createMock(TwoFactorManager::class); + $this->authTokenProvider = $this->createMock(IAuthTokenProvider::class); + $this->providerLoader = $this->createMock(ProviderLoader::class); + $this->userSession = $this->createMock(IUserSession::class); + $this->session = $this->createMock(ISession::class); + $this->initialStateService = $this->createMock(IInitialStateService::class); + $this->uid = 'test123'; + + $this->section = new Security( + $this->userManager, + $this->twoFactorManager, + $this->authTokenProvider, + $this->providerLoader, + $this->userSession, + $this->session, + $this->initialStateService, + $this->uid + ); + } + + public function testGetForm() { + $token1 = new DefaultToken(); + $token1->setId(100); + $token2 = new DefaultToken(); + $token2->setId(200); + $tokens = [ + $token1, + $token2, + ]; + $sessionToken = new DefaultToken(); + $sessionToken->setId(100); + $user = $this->createMock(IUser::class); + $this->userManager->expects($this->once()) + ->method('get') + ->with($this->uid) + ->willReturn($user); + $user->expects($this->once()) + ->method('canChangePassword') + ->willReturn(true); + $this->authTokenProvider->expects($this->once()) + ->method('getTokenByUser') + ->with($this->uid) + ->willReturn($tokens); + $this->session->expects($this->once()) + ->method('getId') + ->willReturn('session123'); + $this->authTokenProvider->expects($this->once()) + ->method('getToken') + ->with('session123') + ->willReturn($sessionToken); + $this->initialStateService->expects($this->once()) + ->method('provideInitialState') + ->with('settings', 'app_tokens', [ + [ + 'id' => 100, + 'name' => null, + 'lastActivity' => 0, + 'type' => 0, + 'canDelete' => false, + 'current' => true, + 'scope' => ['filesystem' => true], + 'canRename' => false, + ], + [ + 'id' => 200, + 'name' => null, + 'lastActivity' => 0, + 'type' => 0, + 'canDelete' => true, + 'scope' => ['filesystem' => true], + 'canRename' => true, + ], + ]); + $this->userSession->expects($this->once()) + ->method('getUser') + ->willReturn($user); + $this->providerLoader->expects($this->once()) + ->method('getProviders') + ->with($user) + ->willReturn([]); + + $form = $this->section->getForm(); + + $expected = new TemplateResponse('settings', 'settings/personal/security', [ + 'passwordChangeSupported' => true, + 'twoFactorProviderData' => [ + 'providers' => [], + ], + ]); + $this->assertEquals($expected, $form); + } + +} |