Вход Регистрация
Файл: symfony-2.7/src/Symfony/Component/Security/Http/Tests/RememberMe/AbstractRememberMeServicesTest.php
Строк: 352
<?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 SymfonyComponentSecurityHttpTestsRememberMe;

use 
SymfonyComponentSecurityHttpRememberMeRememberMeServicesInterface;
use 
SymfonyComponentHttpFoundationRequest;
use 
SymfonyComponentHttpFoundationResponse;

class 
AbstractRememberMeServicesTest extends PHPUnit_Framework_TestCase
{
    public function 
testGetRememberMeParameter()
    {
        
$service = $this->getService(null, array('remember_me_parameter' => 'foo'));

        
$this->assertEquals('foo', $service->getRememberMeParameter());
    }

    public function 
testGetKey()
    {
        
$service = $this->getService();
        
$this->assertEquals('fookey', $service->getKey());
    }

    public function 
testAutoLoginReturnsNullWhenNoCookie()
    {
        
$service = $this->getService(null, array('name' => 'foo', 'path' => null, 'domain' => null));

        
$this->assertNull($service->autoLogin(new Request()));
    }

    
/**
     * @expectedException RuntimeException
     */
    
public function testAutoLoginThrowsExceptionWhenImplementationDoesNotReturnUserInterface()
    {
        
$service = $this->getService(null, array('name' => 'foo', 'path' => null, 'domain' => null));
        
$request = new Request();
        
$request->cookies->set('foo', 'foo');

        
$service
            
->expects($this->once())
            ->
method('processAutoLoginCookie')
            ->
will($this->returnValue(null))
        ;

        
$service->autoLogin($request);
    }

    public function 
testAutoLogin()
    {
        
$service = $this->getService(null, array('name' => 'foo', 'path' => null, 'domain' => null));
        
$request = new Request();
        
$request->cookies->set('foo', 'foo');

        
$user = $this->getMock('SymfonyComponentSecurityCoreUserUserInterface');
        
$user
            
->expects($this->once())
            ->
method('getRoles')
            ->
will($this->returnValue(array()))
        ;

        
$service
            
->expects($this->once())
            ->
method('processAutoLoginCookie')
            ->
will($this->returnValue($user))
        ;

        
$returnedToken = $service->autoLogin($request);

        
$this->assertSame($user, $returnedToken->getUser());
        
$this->assertSame('fookey', $returnedToken->getKey());
        
$this->assertSame('fookey', $returnedToken->getProviderKey());
    }

    public function 
testLogout()
    {
        
$service = $this->getService(null, array('name' => 'foo', 'path' => null, 'domain' => null));
        
$request = new Request();
        
$response = new Response();
        
$token = $this->getMock('SymfonyComponentSecurityCoreAuthenticationTokenTokenInterface');

        
$service->logout($request, $response, $token);

        
$this->assertTrue($request->attributes->get(RememberMeServicesInterface::COOKIE_ATTR_NAME)->isCleared());
    }

    public function 
testLoginFail()
    {
        
$service = $this->getService(null, array('name' => 'foo', 'path' => null, 'domain' => null));
        
$request = new Request();

        
$service->loginFail($request);

        
$this->assertTrue($request->attributes->get(RememberMeServicesInterface::COOKIE_ATTR_NAME)->isCleared());
    }

    public function 
testLoginSuccessIsNotProcessedWhenTokenDoesNotContainUserInterfaceImplementation()
    {
        
$service = $this->getService(null, array('name' => 'foo', 'always_remember_me' => true, 'path' => null, 'domain' => null));
        
$request = new Request();
        
$response = new Response();
        
$account = $this->getMock('SymfonyComponentSecurityCoreUserUserInterface');
        
$token = $this->getMock('SymfonyComponentSecurityCoreAuthenticationTokenTokenInterface');
        
$token
            
->expects($this->once())
            ->
method('getUser')
            ->
will($this->returnValue('foo'))
        ;

        
$service
            
->expects($this->never())
            ->
method('onLoginSuccess')
        ;

        
$this->assertFalse($request->request->has('foo'));

        
$service->loginSuccess($request, $response, $token);
    }

    public function 
testLoginSuccessIsNotProcessedWhenRememberMeIsNotRequested()
    {
        
$service = $this->getService(null, array('name' => 'foo', 'always_remember_me' => false, 'remember_me_parameter' => 'foo', 'path' => null, 'domain' => null));
        
$request = new Request();
        
$response = new Response();
        
$account = $this->getMock('SymfonyComponentSecurityCoreUserUserInterface');
        
$token = $this->getMock('SymfonyComponentSecurityCoreAuthenticationTokenTokenInterface');
        
$token
            
->expects($this->once())
            ->
method('getUser')
            ->
will($this->returnValue($account))
        ;

        
$service
            
->expects($this->never())
            ->
method('onLoginSuccess')
            ->
will($this->returnValue(null))
        ;

        
$this->assertFalse($request->request->has('foo'));

        
$service->loginSuccess($request, $response, $token);
    }

    public function 
testLoginSuccessWhenRememberMeAlwaysIsTrue()
    {
        
$service = $this->getService(null, array('name' => 'foo', 'always_remember_me' => true, 'path' => null, 'domain' => null));
        
$request = new Request();
        
$response = new Response();
        
$account = $this->getMock('SymfonyComponentSecurityCoreUserUserInterface');
        
$token = $this->getMock('SymfonyComponentSecurityCoreAuthenticationTokenTokenInterface');
        
$token
            
->expects($this->once())
            ->
method('getUser')
            ->
will($this->returnValue($account))
        ;

        
$service
            
->expects($this->once())
            ->
method('onLoginSuccess')
            ->
will($this->returnValue(null))
        ;

        
$service->loginSuccess($request, $response, $token);
    }

    
/**
     * @dataProvider getPositiveRememberMeParameterValues
     */
    
public function testLoginSuccessWhenRememberMeParameterWithPathIsPositive($value)
    {
        
$service = $this->getService(null, array('name' => 'foo', 'always_remember_me' => false, 'remember_me_parameter' => 'foo[bar]', 'path' => null, 'domain' => null));

        
$request = new Request();
        
$request->request->set('foo', array('bar' => $value));
        
$response = new Response();
        
$account = $this->getMock('SymfonyComponentSecurityCoreUserUserInterface');
        
$token = $this->getMock('SymfonyComponentSecurityCoreAuthenticationTokenTokenInterface');
        
$token
            
->expects($this->once())
            ->
method('getUser')
            ->
will($this->returnValue($account))
        ;

        
$service
            
->expects($this->once())
            ->
method('onLoginSuccess')
            ->
will($this->returnValue(true))
        ;

        
$service->loginSuccess($request, $response, $token);
    }

    
/**
     * @dataProvider getPositiveRememberMeParameterValues
     */
    
public function testLoginSuccessWhenRememberMeParameterIsPositive($value)
    {
        
$service = $this->getService(null, array('name' => 'foo', 'always_remember_me' => false, 'remember_me_parameter' => 'foo', 'path' => null, 'domain' => null));

        
$request = new Request();
        
$request->request->set('foo', $value);
        
$response = new Response();
        
$account = $this->getMock('SymfonyComponentSecurityCoreUserUserInterface');
        
$token = $this->getMock('SymfonyComponentSecurityCoreAuthenticationTokenTokenInterface');
        
$token
            
->expects($this->once())
            ->
method('getUser')
            ->
will($this->returnValue($account))
        ;

        
$service
            
->expects($this->once())
            ->
method('onLoginSuccess')
            ->
will($this->returnValue(true))
        ;

        
$service->loginSuccess($request, $response, $token);
    }

    public function 
getPositiveRememberMeParameterValues()
    {
        return array(
            array(
'true'),
            array(
'1'),
            array(
'on'),
            array(
'yes'),
        );
    }

    protected function 
getService($userProvider = null, $options = array(), $logger = null)
    {
        if (
null === $userProvider) {
            
$userProvider = $this->getProvider();
        }

        return 
$this->getMockForAbstractClass('SymfonyComponentSecurityHttpRememberMeAbstractRememberMeServices', array(
            array(
$userProvider), 'fookey', 'fookey', $options, $logger,
        ));
    }

    protected function 
getProvider()
    {
        
$provider = $this->getMock('SymfonyComponentSecurityCoreUserUserProviderInterface');
        
$provider
            
->expects($this->any())
            ->
method('supportsClass')
            ->
will($this->returnValue(true))
        ;

        return 
$provider;
    }
}
Онлайн: 1
Реклама