* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Security\Guard\Tests\Authenticator; use PHPUnit\Framework\TestCase; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Security\Core\Exception\AuthenticationException; use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserProviderInterface; use Symfony\Component\Security\Guard\Authenticator\AbstractFormLoginAuthenticator; /** * @author Jean Pasdeloup */ class FormLoginAuthenticatorTest extends TestCase { private $requestWithoutSession; private $requestWithSession; private $authenticator; const LOGIN_URL = 'http://login'; const DEFAULT_SUCCESS_URL = 'http://defaultsuccess'; const CUSTOM_SUCCESS_URL = 'http://customsuccess'; public function testAuthenticationFailureWithoutSession() { $failureResponse = $this->authenticator->onAuthenticationFailure($this->requestWithoutSession, new AuthenticationException()); $this->assertInstanceOf('Symfony\\Component\\HttpFoundation\\RedirectResponse', $failureResponse); $this->assertEquals(self::LOGIN_URL, $failureResponse->getTargetUrl()); } public function testAuthenticationFailureWithSession() { $this->requestWithSession->getSession() ->expects($this->once()) ->method('set'); $failureResponse = $this->authenticator->onAuthenticationFailure($this->requestWithSession, new AuthenticationException()); $this->assertInstanceOf('Symfony\\Component\\HttpFoundation\\RedirectResponse', $failureResponse); $this->assertEquals(self::LOGIN_URL, $failureResponse->getTargetUrl()); } /** * @group legacy */ public function testAuthenticationSuccessWithoutSession() { $token = $this->getMockBuilder('Symfony\\Component\\Security\\Core\\Authentication\\Token\\TokenInterface') ->disableOriginalConstructor() ->getMock(); $redirectResponse = $this->authenticator->onAuthenticationSuccess($this->requestWithoutSession, $token, 'providerkey'); $this->assertInstanceOf('Symfony\\Component\\HttpFoundation\\RedirectResponse', $redirectResponse); $this->assertEquals(self::DEFAULT_SUCCESS_URL, $redirectResponse->getTargetUrl()); } /** * @group legacy */ public function testAuthenticationSuccessWithSessionButEmpty() { $token = $this->getMockBuilder('Symfony\\Component\\Security\\Core\\Authentication\\Token\\TokenInterface') ->disableOriginalConstructor() ->getMock(); $this->requestWithSession->getSession() ->expects($this->once()) ->method('get') ->will($this->returnValue(null)); $redirectResponse = $this->authenticator->onAuthenticationSuccess($this->requestWithSession, $token, 'providerkey'); $this->assertInstanceOf('Symfony\\Component\\HttpFoundation\\RedirectResponse', $redirectResponse); $this->assertEquals(self::DEFAULT_SUCCESS_URL, $redirectResponse->getTargetUrl()); } /** * @group legacy */ public function testAuthenticationSuccessWithSessionAndTarget() { $token = $this->getMockBuilder('Symfony\\Component\\Security\\Core\\Authentication\\Token\\TokenInterface') ->disableOriginalConstructor() ->getMock(); $this->requestWithSession->getSession() ->expects($this->once()) ->method('get') ->will($this->returnValue(self::CUSTOM_SUCCESS_URL)); $redirectResponse = $this->authenticator->onAuthenticationSuccess($this->requestWithSession, $token, 'providerkey'); $this->assertInstanceOf('Symfony\\Component\\HttpFoundation\\RedirectResponse', $redirectResponse); $this->assertEquals(self::CUSTOM_SUCCESS_URL, $redirectResponse->getTargetUrl()); } public function testRememberMe() { $doSupport = $this->authenticator->supportsRememberMe(); $this->assertTrue($doSupport); } public function testStartWithoutSession() { $failureResponse = $this->authenticator->start($this->requestWithoutSession, new AuthenticationException()); $this->assertInstanceOf('Symfony\\Component\\HttpFoundation\\RedirectResponse', $failureResponse); $this->assertEquals(self::LOGIN_URL, $failureResponse->getTargetUrl()); } public function testStartWithSession() { $failureResponse = $this->authenticator->start($this->requestWithSession, new AuthenticationException()); $this->assertInstanceOf('Symfony\\Component\\HttpFoundation\\RedirectResponse', $failureResponse); $this->assertEquals(self::LOGIN_URL, $failureResponse->getTargetUrl()); } protected function setUp() { $this->requestWithoutSession = new Request(array(), array(), array(), array(), array(), array()); $this->requestWithSession = new Request(array(), array(), array(), array(), array(), array()); $session = $this->getMockBuilder('Symfony\\Component\\HttpFoundation\\Session\\SessionInterface') ->disableOriginalConstructor() ->getMock(); $this->requestWithSession->setSession($session); $this->authenticator = new TestFormLoginAuthenticator(); $this->authenticator ->setLoginUrl(self::LOGIN_URL) ->setDefaultSuccessRedirectUrl(self::DEFAULT_SUCCESS_URL) ; } protected function tearDown() { $this->request = null; $this->requestWithSession = null; } } class TestFormLoginAuthenticator extends AbstractFormLoginAuthenticator { private $loginUrl; private $defaultSuccessRedirectUrl; /** * @param mixed $defaultSuccessRedirectUrl * * @return TestFormLoginAuthenticator */ public function setDefaultSuccessRedirectUrl($defaultSuccessRedirectUrl) { $this->defaultSuccessRedirectUrl = $defaultSuccessRedirectUrl; return $this; } /** * @param mixed $loginUrl * * @return TestFormLoginAuthenticator */ public function setLoginUrl($loginUrl) { $this->loginUrl = $loginUrl; return $this; } /** * {@inheritdoc} */ protected function getLoginUrl() { return $this->loginUrl; } /** * {@inheritdoc} */ protected function getDefaultSuccessRedirectUrl() { return $this->defaultSuccessRedirectUrl; } /** * {@inheritdoc} */ public function getCredentials(Request $request) { return 'credentials'; } /** * {@inheritdoc} */ public function getUser($credentials, UserProviderInterface $userProvider) { return $userProvider->loadUserByUsername($credentials); } /** * {@inheritdoc} */ public function checkCredentials($credentials, UserInterface $user) { return true; } } __halt_compiler();----SIGNATURE:----dfokz7CTmHhsBZ9YrcV+dHhrK3OVEpM/pZsp7PgOq86CabGB1MkrlG+uhgwvM0z/8/ihOs7YtdzJyu7W/tPgAJ0nJ3wQygMY4JPO9A7c9/5sI9VamNCp8lrnEd+sjGY/ExhSBYlIHkiH9D9QM7lxlHBOir7BgO/pqLnnEv+hPdvVAU1VzysVkOJvpiAXB5BsJphRWfNHWvkz7sOg2YLxo0V/kMvteov50ZYe380XZHkaEdcB/mrEip1HvD/AzqeKEtJpVZzfohSeeIk/0Mf+Mx8QwVSTwGWl0afwiRSGeljGuCVvRrFF8D2d5Z1h4B0wr7MRcBr76uf3Vtr9Xg1At2DpyTONRVL7wXl0kcIWawKuDqj7v9S1YJfXoRkgmcLuZ1gVZbiitmakAOf+7qoiyv7Xo0F2svN6BaWa6ey45Kwo/KYEDS5RE9XA2LOqb2q9f8o/lwus7rBSgDEOA83YUcNzlh96CPihZAaAoCUXi+zVQhYFsMuCB4TmHGrN5jFxWvEOfaeWr9dtxNXcIazRi8do0ObeCAI8WpOrkae87FxESgQRuAB4tiWMht8yAY3jfo1gJBdRe+5c5J+yS2TFKaWXnMgqO+dM3e103TWbO/4/pxyEMioMMeEoMTJGOOaBgWF2l/08q/PlrcKgi1E0UZseXxAKLyZnvUbpbuzLsFU=----ATTACHMENT:----MjI5NTkwMDM4OTk1NzY1IDM4NzAwODkzMDA4NzI2ODkgOTE2NzcwNzI3ODYxMTU0Mg==