diff options
Diffstat (limited to 'apps/settings/tests/Settings/Personal/Security/AuthtokensTest.php')
-rw-r--r-- | apps/settings/tests/Settings/Personal/Security/AuthtokensTest.php | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/apps/settings/tests/Settings/Personal/Security/AuthtokensTest.php b/apps/settings/tests/Settings/Personal/Security/AuthtokensTest.php new file mode 100644 index 00000000000..0a0ff4d84af --- /dev/null +++ b/apps/settings/tests/Settings/Personal/Security/AuthtokensTest.php @@ -0,0 +1,110 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCA\Settings\Tests\Settings\Personal\Security; + +use OC\Authentication\Token\IProvider as IAuthTokenProvider; +use OC\Authentication\Token\PublicKeyToken; +use OCA\Settings\Settings\Personal\Security\Authtokens; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\AppFramework\Services\IInitialState; +use OCP\Authentication\Token\IToken; +use OCP\ISession; +use OCP\IUserSession; +use PHPUnit\Framework\MockObject\MockObject; +use Test\TestCase; + +class AuthtokensTest extends TestCase { + private IAuthTokenProvider&MockObject $authTokenProvider; + private ISession&MockObject $session; + private IUserSession&MockObject $userSession; + private IInitialState&MockObject $initialState; + private string $uid; + private Authtokens $section; + + protected function setUp(): void { + parent::setUp(); + + $this->authTokenProvider = $this->createMock(IAuthTokenProvider::class); + $this->session = $this->createMock(ISession::class); + $this->userSession = $this->createMock(IUserSession::class); + $this->initialState = $this->createMock(IInitialState::class); + $this->uid = 'test123'; + + $this->section = new Authtokens( + $this->authTokenProvider, + $this->session, + $this->userSession, + $this->initialState, + $this->uid + ); + } + + public function testGetForm(): void { + $token1 = new PublicKeyToken(); + $token1->setId(100); + $token2 = new PublicKeyToken(); + $token2->setId(200); + $tokens = [ + $token1, + $token2, + ]; + $sessionToken = new PublicKeyToken(); + $sessionToken->setId(100); + + $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); + + $calls = [ + [ + 'app_tokens', [ + [ + 'id' => 100, + 'name' => null, + 'lastActivity' => 0, + 'type' => 0, + 'canDelete' => false, + 'current' => true, + 'scope' => [IToken::SCOPE_FILESYSTEM => true], + 'canRename' => false, + ], + [ + 'id' => 200, + 'name' => null, + 'lastActivity' => 0, + 'type' => 0, + 'canDelete' => true, + 'scope' => [IToken::SCOPE_FILESYSTEM => true], + 'canRename' => true, + ], + ] + ], + ['can_create_app_token', true], + ]; + $this->initialState->expects($this->exactly(2)) + ->method('provideInitialState') + ->willReturnCallback(function () use (&$calls): void { + $expected = array_shift($calls); + $this->assertEquals($expected, func_get_args()); + }); + + $form = $this->section->getForm(); + + $expected = new TemplateResponse('settings', 'settings/personal/security/authtokens'); + $this->assertEquals($expected, $form); + } +} |