5���#��a`,>����������1T���W�����{X�ɘ�}G�4�"��ҕ4z�5F>e6*��[��\�;��%*U0LUUr2�cp�n��ݢ�kɜ��Y��͌3��+bG�����0#el���۴�o�e,,�jO�*M���1X��/3�z�)W^�,p>��s{��İQs��:�ޝd|w
���:f�I��e$���~�+ajX�jnT8����0'���S��>KI�UP���&���kN
Server IP : 78.111.106.131 / Your IP : 216.73.216.50 Web Server : Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips mod_fcgid/2.3.9 PHP/7.2.34 System : User : nobody ( 99) PHP Version : 7.2.34 Disable Function : proc_open,system,passthru,exec,popen,shell_exec,dbmopen,suexec,escapeshellcmd,show_source,escapeshellarg,symlink,eval,php_uname,pcntl_exec MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /webler/tggtd.org/core/vendor/symfony/routing/Tests/Matcher/ |
Upload File : |
<?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\RequestContext; use Symfony\Component\Routing\Route; use Symfony\Component\Routing\RouteCollection; class RedirectableUrlMatcherTest extends UrlMatcherTest { public function testMissingTrailingSlash() { $coll = new RouteCollection(); $coll->add('foo', new Route('/foo/')); $matcher = $this->getUrlMatcher($coll); $matcher->expects($this->once())->method('redirect')->willReturn([]); $matcher->match('/foo'); } public function testExtraTrailingSlash() { $coll = new RouteCollection(); $coll->add('foo', new Route('/foo')); $matcher = $this->getUrlMatcher($coll); $matcher->expects($this->once())->method('redirect')->willReturn([]); $matcher->match('/foo/'); } /** * @expectedException \Symfony\Component\Routing\Exception\ResourceNotFoundException */ public function testRedirectWhenNoSlashForNonSafeMethod() { $coll = new RouteCollection(); $coll->add('foo', new Route('/foo/')); $context = new RequestContext(); $context->setMethod('POST'); $matcher = $this->getUrlMatcher($coll, $context); $matcher->match('/foo'); } public function testSchemeRedirectRedirectsToFirstScheme() { $coll = new RouteCollection(); $coll->add('foo', new Route('/foo', [], [], [], '', ['FTP', 'HTTPS'])); $matcher = $this->getUrlMatcher($coll); $matcher ->expects($this->once()) ->method('redirect') ->with('/foo', 'foo', 'ftp') ->willReturn(['_route' => 'foo']) ; $matcher->match('/foo'); } public function testNoSchemaRedirectIfOneOfMultipleSchemesMatches() { $coll = new RouteCollection(); $coll->add('foo', new Route('/foo', [], [], [], '', ['https', 'http'])); $matcher = $this->getUrlMatcher($coll); $matcher ->expects($this->never()) ->method('redirect'); $matcher->match('/foo'); } public function testSchemeRedirectWithParams() { $coll = new RouteCollection(); $coll->add('foo', new Route('/foo/{bar}', [], [], [], '', ['https'])); $matcher = $this->getUrlMatcher($coll); $matcher ->expects($this->once()) ->method('redirect') ->with('/foo/baz', 'foo', 'https') ->willReturn(['redirect' => 'value']) ; $this->assertEquals(['_route' => 'foo', 'bar' => 'baz', 'redirect' => 'value'], $matcher->match('/foo/baz')); } public function testSchemeRedirectForRoot() { $coll = new RouteCollection(); $coll->add('foo', new Route('/', [], [], [], '', ['https'])); $matcher = $this->getUrlMatcher($coll); $matcher ->expects($this->once()) ->method('redirect') ->with('/', 'foo', 'https') ->willReturn(['redirect' => 'value']); $this->assertEquals(['_route' => 'foo', 'redirect' => 'value'], $matcher->match('/')); } public function testSlashRedirectWithParams() { $coll = new RouteCollection(); $coll->add('foo', new Route('/foo/{bar}/')); $matcher = $this->getUrlMatcher($coll); $matcher ->expects($this->once()) ->method('redirect') ->with('/foo/baz/', 'foo', null) ->willReturn(['redirect' => 'value']) ; $this->assertEquals(['_route' => 'foo', 'bar' => 'baz', 'redirect' => 'value'], $matcher->match('/foo/baz')); } public function testRedirectPreservesUrlEncoding() { $coll = new RouteCollection(); $coll->add('foo', new Route('/foo:bar/')); $matcher = $this->getUrlMatcher($coll); $matcher->expects($this->once())->method('redirect')->with('/foo%3Abar/')->willReturn([]); $matcher->match('/foo%3Abar'); } public function testSchemeRequirement() { $coll = new RouteCollection(); $coll->add('foo', new Route('/foo', [], [], [], '', ['https'])); $matcher = $this->getUrlMatcher($coll, new RequestContext()); $matcher->expects($this->once())->method('redirect')->with('/foo', 'foo', 'https')->willReturn([]); $this->assertSame(['_route' => 'foo'], $matcher->match('/foo')); } public function testFallbackPage() { $coll = new RouteCollection(); $coll->add('foo', new Route('/foo/')); $coll->add('bar', new Route('/{name}')); $matcher = $this->getUrlMatcher($coll); $matcher->expects($this->once())->method('redirect')->with('/foo/', 'foo')->willReturn(['_route' => 'foo']); $this->assertSame(['_route' => 'foo'], $matcher->match('/foo')); $coll = new RouteCollection(); $coll->add('foo', new Route('/foo')); $coll->add('bar', new Route('/{name}/')); $matcher = $this->getUrlMatcher($coll); $matcher->expects($this->once())->method('redirect')->with('/foo', 'foo')->willReturn(['_route' => 'foo']); $this->assertSame(['_route' => 'foo'], $matcher->match('/foo/')); } public function testMissingTrailingSlashAndScheme() { $coll = new RouteCollection(); $coll->add('foo', (new Route('/foo/'))->setSchemes(['https'])); $matcher = $this->getUrlMatcher($coll); $matcher->expects($this->once())->method('redirect')->with('/foo/', 'foo', 'https')->willReturn([]); $matcher->match('/foo'); } public function testSlashAndVerbPrecedenceWithRedirection() { $coll = new RouteCollection(); $coll->add('a', new Route('/api/customers/{customerId}/contactpersons', [], [], [], '', [], ['post'])); $coll->add('b', new Route('/api/customers/{customerId}/contactpersons/', [], [], [], '', [], ['get'])); $matcher = $this->getUrlMatcher($coll); $expected = [ '_route' => 'b', 'customerId' => '123', ]; $this->assertEquals($expected, $matcher->match('/api/customers/123/contactpersons/')); $matcher->expects($this->once())->method('redirect')->with('/api/customers/123/contactpersons/')->willReturn([]); $this->assertEquals($expected, $matcher->match('/api/customers/123/contactpersons')); } public function testNonGreedyTrailingRequirement() { $coll = new RouteCollection(); $coll->add('a', new Route('/{a}', [], ['a' => '\d+'])); $matcher = $this->getUrlMatcher($coll); $matcher->expects($this->once())->method('redirect')->with('/123')->willReturn([]); $this->assertEquals(['_route' => 'a', 'a' => '123'], $matcher->match('/123/')); } public function testTrailingRequirementWithDefault_A() { $coll = new RouteCollection(); $coll->add('a', new Route('/fr-fr/{a}', ['a' => 'aaa'], ['a' => '.+'])); $matcher = $this->getUrlMatcher($coll); $matcher->expects($this->once())->method('redirect')->with('/fr-fr')->willReturn([]); $this->assertEquals(['_route' => 'a', 'a' => 'aaa'], $matcher->match('/fr-fr/')); } protected function getUrlMatcher(RouteCollection $routes, RequestContext $context = null) { return $this->getMockForAbstractClass('Symfony\Component\Routing\Matcher\RedirectableUrlMatcher', [$routes, $context ?: new RequestContext()]); } }