* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\HttpKernel\Tests\EventListener; use PHPUnit\Framework\TestCase; use Symfony\Component\HttpKernel\EventListener\FragmentListener; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\HttpKernel\UriSigner; class FragmentListenerTest extends TestCase { public function testOnlyTriggeredOnFragmentRoute() { $request = Request::create('http://example.com/foo?_path=foo%3Dbar%26_controller%3Dfoo'); $listener = new FragmentListener(new UriSigner('foo')); $event = $this->createGetResponseEvent($request); $expected = $request->attributes->all(); $listener->onKernelRequest($event); $this->assertEquals($expected, $request->attributes->all()); $this->assertTrue($request->query->has('_path')); } public function testOnlyTriggeredIfControllerWasNotDefinedYet() { $request = Request::create('http://example.com/_fragment?_path=foo%3Dbar%26_controller%3Dfoo'); $request->attributes->set('_controller', 'bar'); $listener = new FragmentListener(new UriSigner('foo')); $event = $this->createGetResponseEvent($request, HttpKernelInterface::SUB_REQUEST); $expected = $request->attributes->all(); $listener->onKernelRequest($event); $this->assertEquals($expected, $request->attributes->all()); } /** * @expectedException \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException */ public function testAccessDeniedWithNonSafeMethods() { $request = Request::create('http://example.com/_fragment', 'POST'); $listener = new FragmentListener(new UriSigner('foo')); $event = $this->createGetResponseEvent($request); $listener->onKernelRequest($event); } /** * @expectedException \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException */ public function testAccessDeniedWithWrongSignature() { $request = Request::create('http://example.com/_fragment', 'GET', array(), array(), array(), array('REMOTE_ADDR' => '10.0.0.1')); $listener = new FragmentListener(new UriSigner('foo')); $event = $this->createGetResponseEvent($request); $listener->onKernelRequest($event); } public function testWithSignature() { $signer = new UriSigner('foo'); $request = Request::create($signer->sign('http://example.com/_fragment?_path=foo%3Dbar%26_controller%3Dfoo'), 'GET', array(), array(), array(), array('REMOTE_ADDR' => '10.0.0.1')); $listener = new FragmentListener($signer); $event = $this->createGetResponseEvent($request); $listener->onKernelRequest($event); $this->assertEquals(array('foo' => 'bar', '_controller' => 'foo'), $request->attributes->get('_route_params')); $this->assertFalse($request->query->has('_path')); } public function testRemovesPathWithControllerDefined() { $request = Request::create('http://example.com/_fragment?_path=foo%3Dbar%26_controller%3Dfoo'); $listener = new FragmentListener(new UriSigner('foo')); $event = $this->createGetResponseEvent($request, HttpKernelInterface::SUB_REQUEST); $listener->onKernelRequest($event); $this->assertFalse($request->query->has('_path')); } public function testRemovesPathWithControllerNotDefined() { $signer = new UriSigner('foo'); $request = Request::create($signer->sign('http://example.com/_fragment?_path=foo%3Dbar'), 'GET', array(), array(), array(), array('REMOTE_ADDR' => '10.0.0.1')); $listener = new FragmentListener($signer); $event = $this->createGetResponseEvent($request); $listener->onKernelRequest($event); $this->assertFalse($request->query->has('_path')); } private function createGetResponseEvent(Request $request, $requestType = HttpKernelInterface::MASTER_REQUEST) { return new GetResponseEvent($this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(), $request, $requestType); } } __halt_compiler();----SIGNATURE:----I/Nl8YkfUzlwHEL92g5og6fn/bJHewNz03TEvASqrwjK58ToeJrZoKcWSJh0c9qCyqI9mqBIlVr5AVEejYtTooYQPueRu4GdnO41Lw4tWm5ykTDPXw1zrk3CeYLDrY+B0vfy+bngMht/jbKwnDlN+SSguNPjYDcmllWPa4xtInTSc97oIdVoD3U0JnORDLiqRqjHI0FOYeT8wvSgCY0ODFgKDCGb9ya44TSDHyd2GXgSEct9uTwfCYbqM395/ELObNhqC2QsoAsqaLwJVBOoecHoRJ0srCPFTgtPO7um3JYbCm3e4pOQ/WZemtVkJYNfJtS3588DsQ1vTtob6ENp82ltmFUbZ+50jGOVb/GpBiaunj7Q6Yxa7Db3vOYezE1LtPallP3xVo4BOxk8IYcwPN/D5+jpGqvOuwNYTRJHJMlt8p/2R0ngcCI5DJpp63KSx7q2VYhuHDwdVMjaKULT1R1Rr6MqPOoCN7B1IeV4FjHRN4cN61lupAhCx4X0cO/e0uDHhfRtavT3yVMGUnaVFErV9aSTAyBpqycfuUR31yXwW+wLPvStjxMfqYoRtgeeuUJOTzq5g1H/jf51490IOEUBfj7NMFg//LpcGRJt6jwEL7By+ebpnCy+JBXD5g0wFSAI1oRyRNSARFAjwlPZmoFUred5pqPe3AAv29YxPgM=----ATTACHMENT:----Mjg2ODUwOTA0NDI5NTQyNCAzMDcwNTc1NTc0NTQ1MjIwIDkxNzIyNzY3Mzk4OTU3ODY=