Skip to content

Commit

Permalink
EZEE-2145: [Router] Fixed generating Req. Context to include URI sche…
Browse files Browse the repository at this point in the history
…me (ezsystems#2362)

* EZEE-2145: [Router] Fixed generating Req. Context to include URI scheme

* EZEE-2145: Added test for getting proper Context from SimplifiedRequest
  • Loading branch information
alongosz authored and Łukasz Serwatka committed Jun 28, 2018
1 parent 29f099d commit 87ed20e
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 2 deletions.
9 changes: 8 additions & 1 deletion eZ/Bundle/EzPublishCoreBundle/Routing/DefaultRouter.php
Expand Up @@ -164,7 +164,14 @@ public function getContextBySimplifiedRequest(SimplifiedRequest $simplifiedReque
}

if ($simplifiedRequest->port) {
$context->setHttpPort($simplifiedRequest->port);
switch ($simplifiedRequest->scheme) {
case 'https':
$context->setHttpsPort($simplifiedRequest->port);
break;
default:
$context->setHttpPort($simplifiedRequest->port);
break;
}
}

if ($simplifiedRequest->host) {
Expand Down
56 changes: 56 additions & 0 deletions eZ/Bundle/EzPublishCoreBundle/Tests/Routing/DefaultRouterTest.php
Expand Up @@ -281,4 +281,60 @@ public function testGenerateReverseSiteAccessMatch()
$router->generate($routeName, array('siteaccess' => $siteAccessName), DefaultRouter::ABSOLUTE_PATH)
);
}

/**
* @dataProvider providerGetContextBySimplifiedRequest
*
* @param string $uri
*/
public function testGetContextBySimplifiedRequest($uri)
{
$this->getExpectedRequestContext($uri);

$router = new DefaultRouter($this->container, 'foo', [], $this->requestContext);

self::assertEquals(
$this->getExpectedRequestContext($uri),
$router->getContextBySimplifiedRequest(SimplifiedRequest::fromUrl($uri))
);
}

/**
* Data provider for testGetContextBySimplifiedRequest.
*
* @see testGetContextBySimplifiedRequest
*
* @return array
*/
public function providerGetContextBySimplifiedRequest()
{
return [
['/foo/bar'],
['http://ezpublish.dev/foo/bar'],
['http://ezpublish.dev:8080/foo/bar'],
['https://ezpublish.dev/secured'],
['https://ezpublish.dev:445/secured'],
['http://ezpublish.dev:8080/foo/root_folder/bar/baz'],
];
}

private function getExpectedRequestContext($uri)
{
$requestContext = new RequestContext();
$uriComponents = parse_url($uri);
if (isset($uriComponents['host'])) {
$requestContext->setHost($uriComponents['host']);
$requestContext->setScheme($uriComponents['scheme']);
if (isset($uriComponents['port']) && $uriComponents['scheme'] === 'http') {
$requestContext->setHttpPort($uriComponents['port']);
} elseif (isset($uriComponents['port']) && $uriComponents['scheme'] === 'https') {
$requestContext->setHttpsPort($uriComponents['port']);
}
}
if (isset($uriComponents['path'])) {
$requestContext->setPathInfo($uriComponents['path']);
}

return $requestContext;
}
}
9 changes: 8 additions & 1 deletion eZ/Publish/Core/MVC/Symfony/Routing/Generator.php
Expand Up @@ -161,7 +161,14 @@ private function getContextBySimplifiedRequest(SimplifiedRequest $simplifiedRequ
}

if ($simplifiedRequest->port) {
$context->setHttpPort($simplifiedRequest->port);
switch ($simplifiedRequest->scheme) {
case 'https':
$context->setHttpsPort($simplifiedRequest->port);
break;
default:
$context->setHttpPort($simplifiedRequest->port);
break;
}
}

if ($simplifiedRequest->host) {
Expand Down

0 comments on commit 87ed20e

Please sign in to comment.