From b4f86c032cea947ef20dec3cc91deeec9e612890 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Wed, 10 Jun 2026 10:52:24 +0200 Subject: [PATCH] chore(tests): Avoid deprecation in PublicKeyTokenProvider MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also cleaned up the test a bit. Signed-off-by: Côme Chilliet Signed-off-by: Benjamin Gaussorgues --- .../Token/PublicKeyTokenProvider.php | 16 ++++---- .../Token/PublicKeyTokenProviderTest.php | 40 ++++++++----------- 2 files changed, 25 insertions(+), 31 deletions(-) diff --git a/lib/private/Authentication/Token/PublicKeyTokenProvider.php b/lib/private/Authentication/Token/PublicKeyTokenProvider.php index a079c5e38f1..9f0d4ccbe96 100644 --- a/lib/private/Authentication/Token/PublicKeyTokenProvider.php +++ b/lib/private/Authentication/Token/PublicKeyTokenProvider.php @@ -531,16 +531,18 @@ class PublicKeyTokenProvider implements IProvider { $hashNeedsUpdate = []; foreach ($tokens as $t) { - if (!isset($hashNeedsUpdate[$t->getPasswordHash()])) { - if ($t->getPasswordHash() === null) { - $hashNeedsUpdate[$t->getPasswordHash() ?: ''] = true; - } elseif (!$this->hasher->verify(sha1($password) . $password, $t->getPasswordHash())) { - $hashNeedsUpdate[$t->getPasswordHash() ?: ''] = true; + $passwordHash = $t->getPasswordHash(); + if ($passwordHash === null) { + $hashNeedsUpdate[''] = true; + $needsUpdating = true; + } elseif (!isset($hashNeedsUpdate[$passwordHash])) { + if (!$this->hasher->verify(sha1($password) . $password, $passwordHash)) { + $hashNeedsUpdate[$passwordHash] = true; } else { - $hashNeedsUpdate[$t->getPasswordHash() ?: ''] = false; + $hashNeedsUpdate[$passwordHash] = false; } + $needsUpdating = $hashNeedsUpdate[$passwordHash] ?? true; } - $needsUpdating = $hashNeedsUpdate[$t->getPasswordHash() ?: ''] ?? true; if ($needsUpdating) { if ($newPasswordHash === null) { diff --git a/tests/lib/Authentication/Token/PublicKeyTokenProviderTest.php b/tests/lib/Authentication/Token/PublicKeyTokenProviderTest.php index 1c4bfba202d..f08a7be279d 100644 --- a/tests/lib/Authentication/Token/PublicKeyTokenProviderTest.php +++ b/tests/lib/Authentication/Token/PublicKeyTokenProviderTest.php @@ -30,36 +30,25 @@ use Psr\Log\LoggerInterface; use Test\TestCase; class PublicKeyTokenProviderTest extends TestCase { - /** @var PublicKeyTokenProvider|\PHPUnit\Framework\MockObject\MockObject */ - private $tokenProvider; - /** @var PublicKeyTokenMapper|\PHPUnit\Framework\MockObject\MockObject */ - private $mapper; - /** @var IHasher|\PHPUnit\Framework\MockObject\MockObject */ - private $hasher; - /** @var ICrypto */ - private $crypto; - /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */ - private $config; - /** @var IDBConnection|MockObject */ - private IDBConnection $db; - /** @var LoggerInterface|\PHPUnit\Framework\MockObject\MockObject */ - private $logger; - /** @var ITimeFactory|\PHPUnit\Framework\MockObject\MockObject */ - private $timeFactory; - /** @var ICacheFactory|\PHPUnit\Framework\MockObject\MockObject */ - private $cacheFactory; - /** @var int */ - private $time; - /** @var IEventDispatcher */ - private $eventDispatcher; + private PublicKeyTokenProvider $tokenProvider; + + private PublicKeyTokenMapper&MockObject $mapper; + private IConfig&MockObject $config; + private IDBConnection&MockObject $db; + private LoggerInterface&MockObject $logger; + private ITimeFactory&MockObject $timeFactory; + private ICacheFactory&MockObject $cacheFactory; + + private int $time; + private IHasher $hasher; + private ICrypto $crypto; + private IEventDispatcher $eventDispatcher; #[\Override] protected function setUp(): void { parent::setUp(); $this->mapper = $this->createMock(PublicKeyTokenMapper::class); - $this->hasher = Server::get(IHasher::class); - $this->crypto = Server::get(ICrypto::class); $this->config = $this->createMock(IConfig::class); $this->config->method('getSystemValue') ->willReturnMap([ @@ -76,6 +65,9 @@ class PublicKeyTokenProviderTest extends TestCase { $this->timeFactory->method('getTime') ->willReturn($this->time); $this->cacheFactory = $this->createMock(ICacheFactory::class); + + $this->hasher = Server::get(IHasher::class); + $this->crypto = Server::get(ICrypto::class); $this->eventDispatcher = Server::get(IEventDispatcher::class); $this->tokenProvider = new PublicKeyTokenProvider(