Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>pull/14457/head
parent
2398d1183e
commit
102f700d96
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -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); |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue