[FrameworkBundle] fixed duplicated RequestContext instances

This commit is contained in:
Fabien Potencier 2011-08-24 15:10:47 +02:00
parent 755e0d4a37
commit d7f078929c
2 changed files with 17 additions and 25 deletions

View File

@ -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)

View File

@ -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()