Вход Регистрация
Файл: symfony-2.7/src/Symfony/Bundle/SecurityBundle/Tests/Functional/SecurityRoutingIntegrationTest.php
Строк: 211
<?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 SymfonyBundleSecurityBundleTestsFunctional;

class 
SecurityRoutingIntegrationTest extends WebTestCase
{
    
/**
     * @dataProvider getConfigs
     */
    
public function testRoutingErrorIsNotExposedForProtectedResourceWhenAnonymous($config)
    {
        
$client $this->createClient(array('test_case' => 'StandardFormLogin''root_config' => $config));
        
$client->insulate();
        
$client->request('GET''/protected_resource');

        
$this->assertRedirect($client->getResponse(), '/login');
    }

    
/**
     * @dataProvider getConfigs
     */
    
public function testRoutingErrorIsExposedWhenNotProtected($config)
    {
        
$client $this->createClient(array('test_case' => 'StandardFormLogin''root_config' => $config));
        
$client->insulate();
        
$client->request('GET''/unprotected_resource');

        
$this->assertEquals(404$client->getResponse()->getStatusCode(), (string) $client->getResponse());
    }

    
/**
     * @dataProvider getConfigs
     */
    
public function testRoutingErrorIsNotExposedForProtectedResourceWhenLoggedInWithInsufficientRights($config)
    {
        
$client $this->createClient(array('test_case' => 'StandardFormLogin''root_config' => $config));
        
$client->insulate();

        
$form $client->request('GET''/login')->selectButton('login')->form();
        
$form['_username'] = 'johannes';
        
$form['_password'] = 'test';
        
$client->submit($form);

        
$client->request('GET''/highly_protected_resource');

        
$this->assertNotEquals(404$client->getResponse()->getStatusCode());
    }

    
/**
     * @dataProvider getConfigs
     * @group ip_whitelist
     */
    
public function testSecurityConfigurationForSingleIPAddress($config)
    {
        
$allowedClient $this->createClient(array('test_case' => 'StandardFormLogin''root_config' => $config), array("REMOTE_ADDR" => "10.10.10.10"));
        
$barredClient $this->createClient(array('test_case' => 'StandardFormLogin''root_config' => $config), array("REMOTE_ADDR" => "10.10.20.10"));

        
$this->assertAllowed($allowedClient'/secured-by-one-ip');
        
$this->assertRestricted($barredClient'/secured-by-one-ip');
    }

    
/**
     * @dataProvider getConfigs
     * @group ip_whitelist
     */
    
public function testSecurityConfigurationForMultipleIPAddresses($config)
    {
        
$allowedClientA $this->createClient(array('test_case' => 'StandardFormLogin''root_config' => $config), array("REMOTE_ADDR" => "1.1.1.1"));
        
$allowedClientB $this->createClient(array('test_case' => 'StandardFormLogin''root_config' => $config), array("REMOTE_ADDR" => "2.2.2.2"));
        
$barredClient $this->createClient(array('test_case' => 'StandardFormLogin''root_config' => $config), array("REMOTE_ADDR" => "192.168.1.1"));

        
$this->assertAllowed($allowedClientA'/secured-by-two-ips');
        
$this->assertAllowed($allowedClientB'/secured-by-two-ips');
        
$this->assertRestricted($barredClient'/secured-by-two-ips');
    }

   
/**
    * @dataProvider getConfigs
    */
   
public function testSecurityConfigurationForExpression($config)
   {
       
$allowedClient $this->createClient(array('test_case' => 'StandardFormLogin''root_config' => $config), array('HTTP_USER_AGENT' => 'Firefox 1.0'));
       
$this->assertAllowed($allowedClient'/protected-via-expression');

       
$barredClient $this->createClient(array('test_case' => 'StandardFormLogin''root_config' => $config), array());
       
$this->assertRestricted($barredClient'/protected-via-expression');

       
$allowedClient $this->createClient(array('test_case' => 'StandardFormLogin''root_config' => $config), array());

       
$allowedClient->request('GET''/protected-via-expression');
       
$form $allowedClient->followRedirect()->selectButton('login')->form();
       
$form['_username'] = 'johannes';
       
$form['_password'] = 'test';
       
$allowedClient->submit($form);
       
$this->assertRedirect($allowedClient->getResponse(), '/protected-via-expression');
       
$this->assertAllowed($allowedClient'/protected-via-expression');
   }

    private function 
assertAllowed($client$path)
    {
        
$client->request('GET'$path);
        
$this->assertEquals(404$client->getResponse()->getStatusCode());
    }

    private function 
assertRestricted($client$path)
    {
        
$client->request('GET'$path);
        
$this->assertEquals(302$client->getResponse()->getStatusCode());
    }

    public function 
getConfigs()
    {
        return array(array(
'config.yml'), array('routes_as_path.yml'));
    }

    protected function 
setUp()
    {
        
parent::setUp();

        
$this->deleteTmpDir('StandardFormLogin');
    }

    protected function 
tearDown()
    {
        
parent::tearDown();

        
$this->deleteTmpDir('StandardFormLogin');
    }
}
Онлайн: 0
Реклама