1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Security\Http\Tests\Authenticator;
use PHPUnit\Framework\TestCase;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Authentication\Token\PreAuthenticatedToken;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Symfony\Component\Security\Core\User\InMemoryUser;
use Symfony\Component\Security\Core\User\InMemoryUserProvider;
use Symfony\Component\Security\Http\Authenticator\RemoteUserAuthenticator;
class RemoteUserAuthenticatorTest extends TestCase
{
#[\PHPUnit\Framework\Attributes\DataProvider('provideAuthenticators')]
public function testSupport(InMemoryUserProvider $userProvider, RemoteUserAuthenticator $authenticator, $parameterName)
{
$request = $this->createRequest([$parameterName => 'TheUsername']);
$this->assertTrue($authenticator->supports($request));
}
public function testSupportNoUser()
{
$authenticator = new RemoteUserAuthenticator(new InMemoryUserProvider(), new TokenStorage(), 'main');
$this->assertFalse($authenticator->supports($this->createRequest([])));
$this->assertFalse($authenticator->supports($this->createRequest(['REMOTE_USER' => ''])));
}
public function testSupportTokenStorageWithToken()
{
$tokenStorage = new TokenStorage();
$tokenStorage->setToken(new PreAuthenticatedToken(new InMemoryUser('username', null), 'main'));
$authenticator = new RemoteUserAuthenticator(new InMemoryUserProvider(), $tokenStorage, 'main');
$this->assertFalse($authenticator->supports($this->createRequest(['REMOTE_USER' => 'username'])));
$this->assertTrue($authenticator->supports($this->createRequest(['REMOTE_USER' => 'another_username'])));
}
#[\PHPUnit\Framework\Attributes\DataProvider('provideAuthenticators')]
public function testAuthenticate(InMemoryUserProvider $userProvider, RemoteUserAuthenticator $authenticator, $parameterName)
{
$request = $this->createRequest([$parameterName => 'TheUsername']);
$authenticator->supports($request);
$userProvider->createUser($user = new InMemoryUser('TheUsername', null));
$passport = $authenticator->authenticate($request);
$this->assertTrue($user->isEqualTo($passport->getUser()));
}
public static function provideAuthenticators()
{
$userProvider = new InMemoryUserProvider();
yield [$userProvider, new RemoteUserAuthenticator($userProvider, new TokenStorage(), 'main'), 'REMOTE_USER'];
$userProvider = new InMemoryUserProvider();
yield [$userProvider, new RemoteUserAuthenticator($userProvider, new TokenStorage(), 'main', 'CUSTOM_USER_PARAMETER'), 'CUSTOM_USER_PARAMETER'];
}
private function createRequest(array $server)
{
return new Request([], [], [], [], [], $server);
}
}
|