diff --git a/app/code/Magento/PageCache/Block/Javascript.php b/app/code/Magento/PageCache/Block/Javascript.php index bfc3b4a1a1e8b64e376b0889fa5bd75a4bfb08fe..980436b677bd3b51b23aaff170c32994e4b312a6 100644 --- a/app/code/Magento/PageCache/Block/Javascript.php +++ b/app/code/Magento/PageCache/Block/Javascript.php @@ -27,9 +27,10 @@ class Javascript extends \Magento\Framework\View\Element\Template ), 'handles' => $this->_layout->getUpdate()->getHandles(), 'originalRequest' => [ - 'route' => $this->getRequest()->getRouteName(), + 'route' => $this->getRequest()->getRouteName(), 'controller' => $this->getRequest()->getControllerName(), - 'action' => $this->getRequest()->getActionName(), + 'action' => $this->getRequest()->getActionName(), + 'uri' => $this->getRequest()->getRequestUri(), ], 'versionCookieName' => \Magento\Framework\App\PageCache\Version::COOKIE_NAME ]; diff --git a/app/code/Magento/PageCache/Controller/Block/Render.php b/app/code/Magento/PageCache/Controller/Block/Render.php index 1544cca2cfacb36dfa57fa75fd8ae1138e42a8f5..789fb1b696fe0b824666f3f19a0e22dc0f3ea7a2 100644 --- a/app/code/Magento/PageCache/Controller/Block/Render.php +++ b/app/code/Magento/PageCache/Controller/Block/Render.php @@ -24,12 +24,15 @@ class Render extends \Magento\PageCache\Controller\Block $currentRoute = $this->getRequest()->getRouteName(); $currentControllerName = $this->getRequest()->getControllerName(); $currentActionName = $this->getRequest()->getActionName(); + $currentRequestUri = $this->getRequest()->getRequestUri(); $origRequest = $this->getRequest()->getParam('originalRequest'); $origRequest = json_decode($origRequest, true); $this->getRequest()->setRouteName($origRequest['route']); $this->getRequest()->setControllerName($origRequest['controller']); $this->getRequest()->setActionName($origRequest['action']); + $this->getRequest()->setRequestUri($origRequest['uri']); + /** @var \Magento\Framework\View\Element\BlockInterface[] $blocks */ $blocks = $this->_getBlocks(); $data = []; @@ -41,6 +44,7 @@ class Render extends \Magento\PageCache\Controller\Block $this->getRequest()->setRouteName($currentRoute); $this->getRequest()->setControllerName($currentControllerName); $this->getRequest()->setActionName($currentActionName); + $this->getRequest()->setRequestUri($currentRequestUri); $this->getResponse()->setPrivateHeaders(\Magento\PageCache\Helper\Data::PRIVATE_MAX_AGE_CACHE); $this->translateInline->processResponseBody($data); diff --git a/app/code/Magento/PageCache/Test/Unit/Block/JavascriptTest.php b/app/code/Magento/PageCache/Test/Unit/Block/JavascriptTest.php index 56a23aa1ac84f28e78958214c2e6db5b2c190e70..5cac08b148cf2c401bf2b58fc2b7450b805be74b 100644 --- a/app/code/Magento/PageCache/Test/Unit/Block/JavascriptTest.php +++ b/app/code/Magento/PageCache/Test/Unit/Block/JavascriptTest.php @@ -54,12 +54,14 @@ class JavascriptTest extends \PHPUnit_Framework_TestCase 'getControllerName', 'getModuleName', 'getActionName', + 'getRequestUri', 'getParam', 'setParams', 'getParams', 'setModuleName', 'isSecure', 'setActionName', + 'setRequestUri', 'getCookie' ], [], @@ -122,6 +124,9 @@ class JavascriptTest extends \PHPUnit_Framework_TestCase $this->requestMock->expects($this->once()) ->method('getActionName') ->will($this->returnValue('action')); + $this->requestMock->expects($this->once()) + ->method('getRequestUri') + ->will($this->returnValue('uri')); $this->urlBuilderMock->expects($this->once()) ->method('getUrl') ->willReturn($url); @@ -153,10 +158,11 @@ class JavascriptTest extends \PHPUnit_Framework_TestCase * @param string $route * @param string $controller * @param string $action + * @param string $uri * @param string $expectedResult * @dataProvider getScriptOptionsPrivateContentDataProvider */ - public function testGetScriptOptionsPrivateContent($url, $route, $controller, $action, $expectedResult) + public function testGetScriptOptionsPrivateContent($url, $route, $controller, $action, $uri, $expectedResult) { $handles = [ 'some', @@ -179,6 +185,10 @@ class JavascriptTest extends \PHPUnit_Framework_TestCase ->method('getActionName') ->will($this->returnValue($action)); + $this->requestMock->expects($this->once()) + ->method('getRequestUri') + ->will($this->returnValue($uri)); + $this->urlBuilderMock->expects($this->once()) ->method('getUrl') ->willReturn($url); @@ -191,14 +201,17 @@ class JavascriptTest extends \PHPUnit_Framework_TestCase public function getScriptOptionsPrivateContentDataProvider() { + // @codingStandardsIgnoreStart return [ 'http' => [ - 'url' => 'http://some-name.com/page_cache/block/render', - 'route' => 'route', - 'controller' => 'controller', - 'action' => 'action', - 'expectedResult' => '~"originalRequest":{"route":"route","controller":"controller","action":"action"}~' + 'url' => 'http://some-name.com/page_cache/block/render', + 'route' => 'route', + 'controller' => 'controller', + 'action' => 'action', + 'uri' => 'uri', + 'expectedResult' => '~"originalRequest":{"route":"route","controller":"controller","action":"action","uri":"uri"}~' ], ]; + //@codingStandardsIgnoreEnd } } diff --git a/app/code/Magento/PageCache/Test/Unit/Controller/Block/RenderTest.php b/app/code/Magento/PageCache/Test/Unit/Controller/Block/RenderTest.php index 0bd7fcee22587e778d4cf4d8a849cfa9b030d11a..a9493a7a4c3abb2b6ff6472ccfce3007d0089ea2 100644 --- a/app/code/Magento/PageCache/Test/Unit/Controller/Block/RenderTest.php +++ b/app/code/Magento/PageCache/Test/Unit/Controller/Block/RenderTest.php @@ -88,11 +88,11 @@ class RenderTest extends \PHPUnit_Framework_TestCase public function testExecuteNoParams() { $this->requestMock->expects($this->once())->method('isAjax')->will($this->returnValue(true)); - $this->requestMock->expects($this->at(8)) + $this->requestMock->expects($this->at(10)) ->method('getParam') ->with($this->equalTo('blocks'), $this->equalTo('')) ->will($this->returnValue('')); - $this->requestMock->expects($this->at(9)) + $this->requestMock->expects($this->at(11)) ->method('getParam') ->with($this->equalTo('handles'), $this->equalTo('')) ->will($this->returnValue('')); @@ -103,7 +103,7 @@ class RenderTest extends \PHPUnit_Framework_TestCase { $blocks = ['block1', 'block2']; $handles = ['handle1', 'handle2']; - $originalRequest = '{"route":"route","controller":"controller","action":"action"}'; + $originalRequest = '{"route":"route","controller":"controller","action":"action","uri":"uri"}'; $expectedData = ['block1' => 'data1', 'block2' => 'data2']; $blockInstance1 = $this->getMock( @@ -136,15 +136,18 @@ class RenderTest extends \PHPUnit_Framework_TestCase ->method('getActionName') ->will($this->returnValue('render')); $this->requestMock->expects($this->at(4)) + ->method('getRequestUri') + ->will($this->returnValue('uri')); + $this->requestMock->expects($this->at(5)) ->method('getParam') ->with($this->equalTo('originalRequest')) ->will($this->returnValue($originalRequest)); - $this->requestMock->expects($this->at(8)) + $this->requestMock->expects($this->at(10)) ->method('getParam') ->with($this->equalTo('blocks'), $this->equalTo('')) ->will($this->returnValue(json_encode($blocks))); - $this->requestMock->expects($this->at(9)) + $this->requestMock->expects($this->at(11)) ->method('getParam') ->with($this->equalTo('handles'), $this->equalTo('')) ->will($this->returnValue(json_encode($handles))); diff --git a/dev/tests/integration/testsuite/Magento/Framework/Url/Helper/DataTest.php b/dev/tests/integration/testsuite/Magento/Framework/Url/Helper/DataTest.php index ce94b1e855a8acbcf54132c42c930a80783fa932..d40ef433bcc0a6c958bded00ad3a9a6bc78e7173 100644 --- a/dev/tests/integration/testsuite/Magento/Framework/Url/Helper/DataTest.php +++ b/dev/tests/integration/testsuite/Magento/Framework/Url/Helper/DataTest.php @@ -14,8 +14,6 @@ class DataTest extends \PHPUnit_Framework_TestCase protected function setUp() { - $_SERVER['HTTP_HOST'] = 'example.com'; - $_SERVER['REQUEST_URI'] = '/fancy_uri'; $this->_helper = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get( 'Magento\Framework\Url\Helper\Data' ); @@ -23,12 +21,12 @@ class DataTest extends \PHPUnit_Framework_TestCase public function testGetCurrentBase64Url() { - $this->assertEquals('aHR0cDovL2xvY2FsaG9zdDo4MQ,,', $this->_helper->getCurrentBase64Url()); + $this->assertEquals('aHR0cDovL2xvY2FsaG9zdDo4MS8,', $this->_helper->getCurrentBase64Url()); } public function testGetEncodedUrl() { - $this->assertEquals('aHR0cDovL2xvY2FsaG9zdDo4MQ,,', $this->_helper->getEncodedUrl()); + $this->assertEquals('aHR0cDovL2xvY2FsaG9zdDo4MS8,', $this->_helper->getEncodedUrl()); $this->assertEquals('aHR0cDovL2V4YW1wbGUuY29tLw,,', $this->_helper->getEncodedUrl('http://example.com/')); } } diff --git a/lib/internal/Magento/Framework/Test/Unit/UrlTest.php b/lib/internal/Magento/Framework/Test/Unit/UrlTest.php index baa556bb19f789d773d6c48fdf9ac454ac19f951..c5bcc5175ab5dbe63db53e0ea4fcad888e96c8fa 100644 --- a/lib/internal/Magento/Framework/Test/Unit/UrlTest.php +++ b/lib/internal/Magento/Framework/Test/Unit/UrlTest.php @@ -121,7 +121,7 @@ class UrlTest extends \PHPUnit_Framework_TestCase public function testGetCurrentUrl($httpHost, $url) { $requestMock = $this->getRequestMock(); - $requestMock->expects($this->once())->method('getServer')->with('REQUEST_URI')->willReturn('/fancy_uri'); + $requestMock->expects($this->once())->method('getRequestUri')->willReturn('/fancy_uri'); $requestMock->expects($this->once())->method('getScheme')->will($this->returnValue('http')); $requestMock->expects($this->once())->method('getHttpHost')->will($this->returnValue($httpHost)); $model = $this->getUrlModel(['request' => $requestMock]); diff --git a/lib/internal/Magento/Framework/Url.php b/lib/internal/Magento/Framework/Url.php index 7d4c4c33399ac0ae5ee53379727681a291cc7bfd..a300ebe01f4858c06dd598d769d1352ed79394d8 100644 --- a/lib/internal/Magento/Framework/Url.php +++ b/lib/internal/Magento/Framework/Url.php @@ -1045,7 +1045,7 @@ class Url extends \Magento\Framework\Object implements \Magento\Framework\UrlInt $port = ':' . $httpHostWithPort[1]; } } - return $this->_request->getScheme() . '://' . $httpHost . $port . $this->_request->getServer('REQUEST_URI'); + return $this->_request->getScheme() . '://' . $httpHost . $port . $this->_request->getRequestUri(); } /**