Skip to content

Commit cc5855c

Browse files
committed
[FrameworkBundle] fixed duplicated RequestContext instances
1 parent e511951 commit cc5855c

File tree

2 files changed

+17
-25
lines changed

2 files changed

+17
-25
lines changed

EventListener/RouterListener.php

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,19 +49,16 @@ public function onEarlyKernelRequest(GetResponseEvent $event)
4949
}
5050

5151
$request = $event->getRequest();
52+
$context = $this->router->getContext();
5253

5354
// set the context even if the parsing does not need to be done
5455
// to have correct link generation
55-
$context = new RequestContext(
56-
$request->getBaseUrl(),
57-
$request->getMethod(),
58-
$request->getHost(),
59-
$request->getScheme(),
60-
$request->isSecure() ? $this->httpPort : $request->getPort(),
61-
$request->isSecure() ? $request->getPort() : $this->httpsPort
62-
);
63-
64-
$this->router->setContext($context);
56+
$context->setBaseUrl($request->getBaseUrl());
57+
$context->setMethod($request->getMethod());
58+
$context->setHost($request->getHost());
59+
$context->setScheme($request->getScheme());
60+
$context->setHttpPort($request->isSecure() ? $this->httpPort : $request->getPort());
61+
$context->setHttpsPort($request->isSecure() ? $request->getPort() : $this->httpsPort);
6562
}
6663

6764
public function onKernelRequest(GetResponseEvent $event)

Tests/EventListener/RouterListenerTest.php

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,17 @@
2020
class RouterListenerTest extends \PHPUnit_Framework_TestCase
2121
{
2222
private $router;
23+
private $context;
2324

2425
protected function setUp()
2526
{
26-
$this->router = $this->getMockBuilder('Symfony\Component\Routing\RouterInterface')
27+
$this->router = $this->getMockBuilder('Symfony\Component\Routing\Router')
2728
->disableOriginalConstructor()
2829
->getMock();
29-
}
30-
31-
protected function tearDown()
32-
{
33-
$this->router = null;
30+
$this->context = new RequestContext();
31+
$this->router->expects($this->any())
32+
->method('getContext')
33+
->will($this->returnValue($this->context));
3434
}
3535

3636
/**
@@ -39,17 +39,12 @@ protected function tearDown()
3939
public function testPort($defaultHttpPort, $defaultHttpsPort, $uri, $expectedHttpPort, $expectedHttpsPort)
4040
{
4141
$listener = new RouterListener($this->router, $defaultHttpPort, $defaultHttpsPort);
42-
43-
$expectedContext = new RequestContext();
44-
$expectedContext->setHttpPort($expectedHttpPort);
45-
$expectedContext->setHttpsPort($expectedHttpsPort);
46-
$expectedContext->setScheme(0 === strpos($uri, 'https') ? 'https' : 'http');
47-
$this->router->expects($this->once())
48-
->method('setContext')
49-
->with($expectedContext);
50-
5142
$event = $this->createGetResponseEventForUri($uri);
5243
$listener->onEarlyKernelRequest($event);
44+
45+
$this->assertEquals($expectedHttpPort, $this->context->getHttpPort());
46+
$this->assertEquals($expectedHttpsPort, $this->context->getHttpsPort());
47+
$this->assertEquals(0 === strpos($uri, 'https') ? 'https' : 'http', $this->context->getScheme());
5348
}
5449

5550
public function getPortData()

0 commit comments

Comments
 (0)