diff --git a/lib/public/AppFramework/PublicShareController.php b/lib/public/AppFramework/PublicShareController.php
index 4548f885133b673227fa55d4a39b2526679e54c4..c7e0e75d0e256bf06eeec65469dbe81ec855ba67 100644
--- a/lib/public/AppFramework/PublicShareController.php
+++ b/lib/public/AppFramework/PublicShareController.php
@@ -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;
diff --git a/tests/lib/AppFramework/Controller/PublicShareControllerTest.php b/tests/lib/AppFramework/Controller/PublicShareControllerTest.php
index f2a60a574af9915627e7e5ffca2003a06063e756..deffedcec058f33eac899572b8aea868457c43c4 100644
--- a/tests/lib/AppFramework/Controller/PublicShareControllerTest.php
+++ b/tests/lib/AppFramework/Controller/PublicShareControllerTest.php
@@ -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());
 	}
 }