153 linhas
		
	
	
		
			5.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			153 linhas
		
	
	
		
			5.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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\Routing\Tests\Matcher;
 | |
| 
 | |
| use Symfony\Component\Routing\RouteCollection;
 | |
| use Symfony\Component\Routing\RequestContext;
 | |
| use Symfony\Component\Routing\Matcher\ApacheUrlMatcher;
 | |
| 
 | |
| class ApacheUrlMatcherTest extends \PHPUnit_Framework_TestCase
 | |
| {
 | |
|     protected $server;
 | |
| 
 | |
|     protected function setUp()
 | |
|     {
 | |
|         $this->server = $_SERVER;
 | |
|     }
 | |
| 
 | |
|     protected function tearDown()
 | |
|     {
 | |
|         $_SERVER = $this->server;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @dataProvider getMatchData
 | |
|      */
 | |
|     public function testMatch($name, $pathinfo, $server, $expect)
 | |
|     {
 | |
|         $collection = new RouteCollection();
 | |
|         $context = new RequestContext();
 | |
|         $matcher = new ApacheUrlMatcher($collection, $context);
 | |
| 
 | |
|         $_SERVER = $server;
 | |
| 
 | |
|         $result = $matcher->match($pathinfo, $server);
 | |
|         $this->assertSame(var_export($expect, true), var_export($result, true));
 | |
|     }
 | |
| 
 | |
|     public function getMatchData()
 | |
|     {
 | |
|         return array(
 | |
|             array(
 | |
|                 'Simple route',
 | |
|                 '/hello/world',
 | |
|                 array(
 | |
|                     '_ROUTING_route' => 'hello',
 | |
|                     '_ROUTING_param__controller' => 'AcmeBundle:Default:index',
 | |
|                     '_ROUTING_param_name' => 'world',
 | |
|                 ),
 | |
|                 array(
 | |
|                     '_controller' => 'AcmeBundle:Default:index',
 | |
|                     'name' => 'world',
 | |
|                     '_route' => 'hello',
 | |
|                 ),
 | |
|             ),
 | |
|             array(
 | |
|                 'Route with params and defaults',
 | |
|                 '/hello/hugo',
 | |
|                 array(
 | |
|                     '_ROUTING_route' => 'hello',
 | |
|                     '_ROUTING_param__controller' => 'AcmeBundle:Default:index',
 | |
|                     '_ROUTING_param_name' => 'hugo',
 | |
|                     '_ROUTING_default_name' => 'world',
 | |
|                 ),
 | |
|                 array(
 | |
|                     'name' => 'hugo',
 | |
|                     '_controller' => 'AcmeBundle:Default:index',
 | |
|                     '_route' => 'hello',
 | |
|                 ),
 | |
|             ),
 | |
|             array(
 | |
|                 'Route with defaults only',
 | |
|                 '/hello',
 | |
|                 array(
 | |
|                     '_ROUTING_route' => 'hello',
 | |
|                     '_ROUTING_param__controller' => 'AcmeBundle:Default:index',
 | |
|                     '_ROUTING_default_name' => 'world',
 | |
|                 ),
 | |
|                 array(
 | |
|                     'name' => 'world',
 | |
|                     '_controller' => 'AcmeBundle:Default:index',
 | |
|                     '_route' => 'hello',
 | |
|                 ),
 | |
|             ),
 | |
|             array(
 | |
|                 'Redirect with many ignored attributes',
 | |
|                 '/legacy/{cat1}/{cat2}/{id}.html',
 | |
|                 array(
 | |
|                     '_ROUTING_route' => 'product_view',
 | |
|                     '_ROUTING_param__controller' => 'FrameworkBundle:Redirect:redirect',
 | |
|                     '_ROUTING_default_ignoreAttributes[0]' => 'attr_a',
 | |
|                     '_ROUTING_default_ignoreAttributes[1]' => 'attr_b',
 | |
|                 ),
 | |
|                 array(
 | |
|                     'ignoreAttributes' => array('attr_a', 'attr_b'),
 | |
|                     '_controller' => 'FrameworkBundle:Redirect:redirect',
 | |
|                     '_route' => 'product_view',
 | |
|                 )
 | |
|             ),
 | |
|             array(
 | |
|                 'REDIRECT_ envs',
 | |
|                 '/hello/world',
 | |
|                 array(
 | |
|                     'REDIRECT__ROUTING_route' => 'hello',
 | |
|                     'REDIRECT__ROUTING_param__controller' => 'AcmeBundle:Default:index',
 | |
|                     'REDIRECT__ROUTING_param_name' => 'world',
 | |
|                 ),
 | |
|                 array(
 | |
|                     '_controller' => 'AcmeBundle:Default:index',
 | |
|                     'name' => 'world',
 | |
|                     '_route' => 'hello',
 | |
|                 ),
 | |
|             ),
 | |
|             array(
 | |
|                 'REDIRECT_REDIRECT_ envs',
 | |
|                 '/hello/world',
 | |
|                 array(
 | |
|                     'REDIRECT_REDIRECT__ROUTING_route' => 'hello',
 | |
|                     'REDIRECT_REDIRECT__ROUTING_param__controller' => 'AcmeBundle:Default:index',
 | |
|                     'REDIRECT_REDIRECT__ROUTING_param_name' => 'world',
 | |
|                 ),
 | |
|                 array(
 | |
|                     '_controller' => 'AcmeBundle:Default:index',
 | |
|                     'name' => 'world',
 | |
|                     '_route' => 'hello',
 | |
|                 ),
 | |
|             ),
 | |
|             array(
 | |
|                 'REDIRECT_REDIRECT_ envs',
 | |
|                 '/hello/world',
 | |
|                 array(
 | |
|                     'REDIRECT_REDIRECT__ROUTING_route' => 'hello',
 | |
|                     'REDIRECT_REDIRECT__ROUTING_param__controller' => 'AcmeBundle:Default:index',
 | |
|                     'REDIRECT_REDIRECT__ROUTING_param_name' => 'world',
 | |
|                 ),
 | |
|                 array(
 | |
|                     '_controller' => 'AcmeBundle:Default:index',
 | |
|                     'name' => 'world',
 | |
|                     '_route' => 'hello',
 | |
|                 ),
 | |
|             )
 | |
|         );
 | |
|     }
 | |
| }
 |