From f82276dd3bdfcc6a6c336933c6fda58499df8115 Mon Sep 17 00:00:00 2001 From: Marcin Nowak Date: Tue, 5 Nov 2024 18:31:23 +0100 Subject: [PATCH 1/5] Make ChainUserProvider::loadUserByIdentifier() to pass all arguments to its nodes --- src/Symfony/Component/Security/Core/CHANGELOG.md | 5 +++++ .../Component/Security/Core/User/ChainUserProvider.php | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Security/Core/CHANGELOG.md b/src/Symfony/Component/Security/Core/CHANGELOG.md index 7cf09c70d4413..6871309a1d08f 100644 --- a/src/Symfony/Component/Security/Core/CHANGELOG.md +++ b/src/Symfony/Component/Security/Core/CHANGELOG.md @@ -1,6 +1,11 @@ CHANGELOG ========= +7.3 +--- + + * Make `ChainUserProvider::loadUserByIdentifier()` to pass all arguments to its nodes, not only `$identifier` + 7.2 --- diff --git a/src/Symfony/Component/Security/Core/User/ChainUserProvider.php b/src/Symfony/Component/Security/Core/User/ChainUserProvider.php index 21e2e618e777b..5f39ab707a7cd 100644 --- a/src/Symfony/Component/Security/Core/User/ChainUserProvider.php +++ b/src/Symfony/Component/Security/Core/User/ChainUserProvider.php @@ -50,7 +50,7 @@ public function loadUserByIdentifier(string $identifier): UserInterface { foreach ($this->providers as $provider) { try { - return $provider->loadUserByIdentifier($identifier); + return $provider->loadUserByIdentifier(...func_get_args()); } catch (UserNotFoundException) { // try next one } From be52ee32cffdab8db7230240b51cc5e8bdb72139 Mon Sep 17 00:00:00 2001 From: Marcin Nowak Date: Tue, 5 Nov 2024 18:35:24 +0100 Subject: [PATCH 2/5] Updated CHANGELOG --- src/Symfony/Component/Security/Core/CHANGELOG.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/Symfony/Component/Security/Core/CHANGELOG.md b/src/Symfony/Component/Security/Core/CHANGELOG.md index 6871309a1d08f..5cf976903dc9c 100644 --- a/src/Symfony/Component/Security/Core/CHANGELOG.md +++ b/src/Symfony/Component/Security/Core/CHANGELOG.md @@ -1,11 +1,6 @@ CHANGELOG ========= -7.3 ---- - - * Make `ChainUserProvider::loadUserByIdentifier()` to pass all arguments to its nodes, not only `$identifier` - 7.2 --- @@ -13,6 +8,7 @@ CHANGELOG * Add `$token` argument to `UserCheckerInterface::checkPostAuth()` * Deprecate argument `$secret` of `RememberMeToken` * Deprecate returning an empty string in `UserInterface::getUserIdentifier()` + * Make `ChainUserProvider::loadUserByIdentifier()` to pass all arguments to its nodes, not only `$identifier` 7.0 --- From 6e608f36bcb2247b238b73baf6db8cfd37b7f40a Mon Sep 17 00:00:00 2001 From: Marcin Nowak Date: Wed, 6 Nov 2024 08:37:14 +0100 Subject: [PATCH 3/5] Added test case --- .../Component/HttpClient/phpunit.stderr | 0 .../Component/HttpClient/phpunit.stdout | 8 +++++++ .../Core/Tests/User/ChainUserProviderTest.php | 23 +++++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 src/Symfony/Component/HttpClient/phpunit.stderr create mode 100644 src/Symfony/Component/HttpClient/phpunit.stdout diff --git a/src/Symfony/Component/HttpClient/phpunit.stderr b/src/Symfony/Component/HttpClient/phpunit.stderr new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/src/Symfony/Component/HttpClient/phpunit.stdout b/src/Symfony/Component/HttpClient/phpunit.stdout new file mode 100644 index 0000000000000..4b76fc1e7a84b --- /dev/null +++ b/src/Symfony/Component/HttpClient/phpunit.stdout @@ -0,0 +1,8 @@ +PHPUnit 9.6.21 by Sebastian Bergmann and contributors. + +Testing /home/marcin/Development/symfony/src/Symfony/Component/HttpClient +S..........S...S............................................... 63 / 794 ( 7%) +.......................................SSSS.............S...... 126 / 794 ( 15%) +............................................................... 189 / 794 ( 23%) +...................S..........S...S............................ 252 / 794 ( 31%) +....................... \ No newline at end of file diff --git a/src/Symfony/Component/Security/Core/Tests/User/ChainUserProviderTest.php b/src/Symfony/Component/Security/Core/Tests/User/ChainUserProviderTest.php index 3f6d223dea178..19c2939211655 100644 --- a/src/Symfony/Component/Security/Core/Tests/User/ChainUserProviderTest.php +++ b/src/Symfony/Component/Security/Core/Tests/User/ChainUserProviderTest.php @@ -14,6 +14,7 @@ use PHPUnit\Framework\TestCase; use Symfony\Component\Security\Core\Exception\UnsupportedUserException; use Symfony\Component\Security\Core\Exception\UserNotFoundException; +use Symfony\Component\Security\Core\User\AttributesBasedUserProviderInterface; use Symfony\Component\Security\Core\User\ChainUserProvider; use Symfony\Component\Security\Core\User\InMemoryUser; use Symfony\Component\Security\Core\User\InMemoryUserProvider; @@ -70,6 +71,28 @@ public function testLoadUserByIdentifierThrowsUserNotFoundException() $provider->loadUserByIdentifier('foo'); } + public function testLoadUserByIdentifierPassesAllArgumentsToInternalProviders(): void + { + $provider1 = $this->createMock(InMemoryUserProvider::class); + $provider1 + ->expects($this->once()) + ->method('loadUserByIdentifier') + ->with($this->equalTo('foo')) + ->willThrowException(new UserNotFoundException('not found')) + ; + + $provider2 = $this->createMock(AttributesBasedUserProviderInterface::class); + $provider2 + ->expects($this->once()) + ->method('loadUserByIdentifier') + ->with($this->equalTo('foo'), $this->equalTo(['bar' => 'baz'])) + ->willReturn($account = $this->createMock(UserInterface::class)) + ; + + $provider = new ChainUserProvider([$provider1, $provider2]); + $this->assertSame($account, $provider->loadUserByIdentifier('foo', ['bar' => 'baz'])); + } + public function testRefreshUser() { $provider1 = $this->createMock(InMemoryUserProvider::class); From 6ac38ca7c3461579ec64fe2bea3408ff1d17761a Mon Sep 17 00:00:00 2001 From: Marcin Nowak Date: Wed, 6 Nov 2024 08:38:31 +0100 Subject: [PATCH 4/5] removed files --- src/Symfony/Component/HttpClient/phpunit.stderr | 0 src/Symfony/Component/HttpClient/phpunit.stdout | 8 -------- 2 files changed, 8 deletions(-) delete mode 100644 src/Symfony/Component/HttpClient/phpunit.stderr delete mode 100644 src/Symfony/Component/HttpClient/phpunit.stdout diff --git a/src/Symfony/Component/HttpClient/phpunit.stderr b/src/Symfony/Component/HttpClient/phpunit.stderr deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/src/Symfony/Component/HttpClient/phpunit.stdout b/src/Symfony/Component/HttpClient/phpunit.stdout deleted file mode 100644 index 4b76fc1e7a84b..0000000000000 --- a/src/Symfony/Component/HttpClient/phpunit.stdout +++ /dev/null @@ -1,8 +0,0 @@ -PHPUnit 9.6.21 by Sebastian Bergmann and contributors. - -Testing /home/marcin/Development/symfony/src/Symfony/Component/HttpClient -S..........S...S............................................... 63 / 794 ( 7%) -.......................................SSSS.............S...... 126 / 794 ( 15%) -............................................................... 189 / 794 ( 23%) -...................S..........S...S............................ 252 / 794 ( 31%) -....................... \ No newline at end of file From 64ddeb1dfbe0212d2c121e43cf5e0f325db7dfd7 Mon Sep 17 00:00:00 2001 From: Marcin Nowak Date: Wed, 6 Nov 2024 09:18:58 +0100 Subject: [PATCH 5/5] Removed calls to equalTo --- .../Security/Core/Tests/User/ChainUserProviderTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Security/Core/Tests/User/ChainUserProviderTest.php b/src/Symfony/Component/Security/Core/Tests/User/ChainUserProviderTest.php index 19c2939211655..5cbeea98385c1 100644 --- a/src/Symfony/Component/Security/Core/Tests/User/ChainUserProviderTest.php +++ b/src/Symfony/Component/Security/Core/Tests/User/ChainUserProviderTest.php @@ -77,7 +77,7 @@ public function testLoadUserByIdentifierPassesAllArgumentsToInternalProviders(): $provider1 ->expects($this->once()) ->method('loadUserByIdentifier') - ->with($this->equalTo('foo')) + ->with('foo') ->willThrowException(new UserNotFoundException('not found')) ; @@ -85,7 +85,7 @@ public function testLoadUserByIdentifierPassesAllArgumentsToInternalProviders(): $provider2 ->expects($this->once()) ->method('loadUserByIdentifier') - ->with($this->equalTo('foo'), $this->equalTo(['bar' => 'baz'])) + ->with('foo', ['bar' => 'baz']) ->willReturn($account = $this->createMock(UserInterface::class)) ;