]> source.dussan.org Git - nextcloud-server.git/commitdiff
Allow overwriting isAuthenticated 26123/head
authorRoeland Jago Douma <roeland@famdouma.nl>
Mon, 8 Mar 2021 14:05:28 +0000 (15:05 +0100)
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>
Mon, 15 Mar 2021 13:59:10 +0000 (13:59 +0000)
* Some implementations might check for different things
* IT will not change how the current ones work

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
lib/public/AppFramework/PublicShareController.php
tests/lib/AppFramework/Controller/PublicShareControllerTest.php

index 4548f885133b673227fa55d4a39b2526679e54c4..c7e0e75d0e256bf06eeec65469dbe81ec855ba67 100644 (file)
@@ -109,7 +109,7 @@ abstract class PublicShareController extends Controller {
         *
         * @since 14.0.0
         */
-       final public function isAuthenticated(): bool {
+       public function isAuthenticated(): bool {
                // Always authenticated against non password protected shares
                if (!$this->isPasswordProtected()) {
                        return true;
index f2a60a574af9915627e7e5ffca2003a06063e756..deffedcec058f33eac899572b8aea868457c43c4 100644 (file)
@@ -27,6 +27,34 @@ use OCP\AppFramework\PublicShareController;
 use OCP\IRequest;
 use OCP\ISession;
 
+class TestController extends PublicShareController {
+
+       /** @var string */
+       private $hash;
+
+       /** @var bool */
+       private $isProtected;
+
+       public function __construct(string $appName, IRequest $request, ISession $session, string $hash, bool $isProtected) {
+               parent::__construct($appName, $request, $session);
+
+               $this->hash = $hash;
+               $this->isProtected = $isProtected;
+       }
+
+       protected function getPasswordHash(): string {
+               return $this->hash;
+       }
+
+       public function isValidToken(): bool {
+               return false;
+       }
+
+       protected function isPasswordProtected(): bool {
+               return $this->isProtected;
+       }
+}
+
 class PublicShareControllerTest extends \Test\TestCase {
 
        /** @var IRequest|\PHPUnit\Framework\MockObject\MockObject */
@@ -34,27 +62,18 @@ class PublicShareControllerTest extends \Test\TestCase {
        /** @var ISession|\PHPUnit\Framework\MockObject\MockObject */
        private $session;
 
-       /** @var PublicShareController|\PHPUnit\Framework\MockObject\MockObject */
-       private $controller;
-
-
        protected function setUp(): void {
                parent::setUp();
 
                $this->request = $this->createMock(IRequest::class);
                $this->session = $this->createMock(ISession::class);
-
-               $this->controller = $this->getMockBuilder(PublicShareController::class)
-                       ->setConstructorArgs([
-                               'app',
-                               $this->request,
-                               $this->session
-                       ])->getMock();
        }
 
        public function testGetToken() {
-               $this->controller->setToken('test');
-               $this->assertEquals('test', $this->controller->getToken());
+               $controller = new TestController('app', $this->request, $this->session, 'hash', false);
+
+               $controller->setToken('test');
+               $this->assertEquals('test', $controller->getToken());
        }
 
        public function dataIsAuthenticated() {
@@ -74,8 +93,7 @@ class PublicShareControllerTest extends \Test\TestCase {
         * @dataProvider dataIsAuthenticated
         */
        public function testIsAuthenticatedNotPasswordProtected(bool $protected, string $token1, string $token2, string $hash1, string $hash2, bool $expected) {
-               $this->controller->method('isPasswordProtected')
-                       ->willReturn($protected);
+               $controller = new TestController('app', $this->request, $this->session, $hash2, $protected);
 
                $this->session->method('get')
                        ->willReturnMap([
@@ -83,10 +101,8 @@ class PublicShareControllerTest extends \Test\TestCase {
                                ['public_link_authenticated_password_hash', $hash1],
                        ]);
 
-               $this->controller->setToken($token2);
-               $this->controller->method('getPasswordHash')
-                       ->willReturn($hash2);
+               $controller->setToken($token2);
 
-               $this->assertEquals($expected, $this->controller->isAuthenticated());
+               $this->assertEquals($expected, $controller->isAuthenticated());
        }
 }