Skip to content

Commit

Permalink
[FrameworkBundle] fixed duplicated RequestContext instances
Browse files Browse the repository at this point in the history
  • Loading branch information
fabpot committed Aug 24, 2011
1 parent 755e0d4 commit d7f0789
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 25 deletions.
Expand Up @@ -49,19 +49,16 @@ public function onEarlyKernelRequest(GetResponseEvent $event)
}

$request = $event->getRequest();
$context = $this->router->getContext();

This comment has been minimized.

Copy link
@stof

stof Aug 24, 2011

Member

This method is not part of the interface. This means that this listener now depends of this particular implementation of the interface instead of depending on the interface (and so the typehint is wrong)


// 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)
Expand Down
Expand Up @@ -20,17 +20,17 @@
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));
}

/**
Expand All @@ -39,17 +39,12 @@ protected function tearDown()
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()
Expand Down

0 comments on commit d7f0789

Please sign in to comment.