View source
<?php
namespace Symfony\Component\Routing\Tests\Matcher;
use Symfony\Component\Routing\Route;
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\RequestContext;
class RedirectableUrlMatcherTest extends \PHPUnit_Framework_TestCase {
public function testRedirectWhenNoSlash() {
$coll = new RouteCollection();
$coll
->add('foo', new Route('/foo/'));
$matcher = $this
->getMockForAbstractClass('Symfony\\Component\\Routing\\Matcher\\RedirectableUrlMatcher', array(
$coll,
new RequestContext(),
));
$matcher
->expects($this
->once())
->method('redirect');
$matcher
->match('/foo');
}
public function testRedirectWhenNoSlashForNonSafeMethod() {
$coll = new RouteCollection();
$coll
->add('foo', new Route('/foo/'));
$context = new RequestContext();
$context
->setMethod('POST');
$matcher = $this
->getMockForAbstractClass('Symfony\\Component\\Routing\\Matcher\\RedirectableUrlMatcher', array(
$coll,
$context,
));
$matcher
->match('/foo');
}
public function testSchemeRedirectRedirectsToFirstScheme() {
$coll = new RouteCollection();
$coll
->add('foo', new Route('/foo', array(), array(), array(), '', array(
'FTP',
'HTTPS',
)));
$matcher = $this
->getMockForAbstractClass('Symfony\\Component\\Routing\\Matcher\\RedirectableUrlMatcher', array(
$coll,
new RequestContext(),
));
$matcher
->expects($this
->once())
->method('redirect')
->with('/foo', 'foo', 'ftp')
->will($this
->returnValue(array(
'_route' => 'foo',
)));
$matcher
->match('/foo');
}
public function testNoSchemaRedirectIfOnOfMultipleSchemesMatches() {
$coll = new RouteCollection();
$coll
->add('foo', new Route('/foo', array(), array(), array(), '', array(
'https',
'http',
)));
$matcher = $this
->getMockForAbstractClass('Symfony\\Component\\Routing\\Matcher\\RedirectableUrlMatcher', array(
$coll,
new RequestContext(),
));
$matcher
->expects($this
->never())
->method('redirect');
$matcher
->match('/foo');
}
}