[FrameworkBundle] fixed duplicated RequestContext instances
This commit is contained in:
parent
755e0d4a37
commit
d7f078929c
@ -49,19 +49,16 @@ class RouterListener
|
||||
}
|
||||
|
||||
$request = $event->getRequest();
|
||||
$context = $this->router->getContext();
|
||||
|
||||
// set the context even if the parsing does not need to be done
|
||||
// to have correct link generation
|
||||
$context = new RequestContext(
|
||||
$request->getBaseUrl(),
|
||||
$request->getMethod(),
|
||||
$request->getHost(),
|
||||
$request->getScheme(),
|
||||
$request->isSecure() ? $this->httpPort : $request->getPort(),
|
||||
$request->isSecure() ? $request->getPort() : $this->httpsPort
|
||||
);
|
||||
|
||||
$this->router->setContext($context);
|
||||
$context->setBaseUrl($request->getBaseUrl());
|
||||
$context->setMethod($request->getMethod());
|
||||
$context->setHost($request->getHost());
|
||||
$context->setScheme($request->getScheme());
|
||||
$context->setHttpPort($request->isSecure() ? $this->httpPort : $request->getPort());
|
||||
$context->setHttpsPort($request->isSecure() ? $request->getPort() : $this->httpsPort);
|
||||
}
|
||||
|
||||
public function onKernelRequest(GetResponseEvent $event)
|
||||
|
@ -20,17 +20,17 @@ use Symfony\Component\Routing\RequestContext;
|
||||
class RouterListenerTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
private $router;
|
||||
private $context;
|
||||
|
||||
protected function setUp()
|
||||
{
|
||||
$this->router = $this->getMockBuilder('Symfony\Component\Routing\RouterInterface')
|
||||
$this->router = $this->getMockBuilder('Symfony\Component\Routing\Router')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
}
|
||||
|
||||
protected function tearDown()
|
||||
{
|
||||
$this->router = null;
|
||||
$this->context = new RequestContext();
|
||||
$this->router->expects($this->any())
|
||||
->method('getContext')
|
||||
->will($this->returnValue($this->context));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -39,17 +39,12 @@ class RouterListenerTest extends \PHPUnit_Framework_TestCase
|
||||
public function testPort($defaultHttpPort, $defaultHttpsPort, $uri, $expectedHttpPort, $expectedHttpsPort)
|
||||
{
|
||||
$listener = new RouterListener($this->router, $defaultHttpPort, $defaultHttpsPort);
|
||||
|
||||
$expectedContext = new RequestContext();
|
||||
$expectedContext->setHttpPort($expectedHttpPort);
|
||||
$expectedContext->setHttpsPort($expectedHttpsPort);
|
||||
$expectedContext->setScheme(0 === strpos($uri, 'https') ? 'https' : 'http');
|
||||
$this->router->expects($this->once())
|
||||
->method('setContext')
|
||||
->with($expectedContext);
|
||||
|
||||
$event = $this->createGetResponseEventForUri($uri);
|
||||
$listener->onEarlyKernelRequest($event);
|
||||
|
||||
$this->assertEquals($expectedHttpPort, $this->context->getHttpPort());
|
||||
$this->assertEquals($expectedHttpsPort, $this->context->getHttpsPort());
|
||||
$this->assertEquals(0 === strpos($uri, 'https') ? 'https' : 'http', $this->context->getScheme());
|
||||
}
|
||||
|
||||
public function getPortData()
|
||||
|
Reference in New Issue
Block a user