From 979e0590aeae3b9d38fa0ede7e38cc6a7a253149 Mon Sep 17 00:00:00 2001 From: torhoehn Date: Wed, 30 Oct 2019 00:33:25 +0100 Subject: [PATCH 1/6] add document root check for vcl generation remove line fix tests fix codestyle fix code style again --- .../PageCache/Model/Varnish/VclGenerator.php | 24 ++++++++++++ .../PageCache/Test/Unit/Model/ConfigTest.php | 38 +++++++++++++------ app/code/Magento/PageCache/etc/varnish4.vcl | 4 +- app/code/Magento/PageCache/etc/varnish5.vcl | 4 +- app/code/Magento/PageCache/etc/varnish6.vcl | 4 +- .../Magento/PageCache/Model/ConfigTest.php | 38 +++++++++++++------ 6 files changed, 84 insertions(+), 28 deletions(-) diff --git a/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php b/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php index a50fa090de2d8..7ee3299b219f5 100644 --- a/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php +++ b/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php @@ -6,6 +6,7 @@ namespace Magento\PageCache\Model\Varnish; +use Magento\Framework\App\Filesystem\DirectoryList; use Magento\PageCache\Model\VclGeneratorInterface; use Magento\PageCache\Model\VclTemplateLocatorInterface; @@ -49,6 +50,11 @@ class VclGenerator implements VclGeneratorInterface */ private $designExceptions; + /** + * @var DirectoryList + */ + private $directoryList; + /** * VclGenerator constructor. * @@ -58,6 +64,7 @@ class VclGenerator implements VclGeneratorInterface * @param array $accessList * @param int $gracePeriod * @param string $sslOffloadedHeader + * @param DirectoryList $directoryList * @param array $designExceptions */ public function __construct( @@ -67,6 +74,7 @@ public function __construct( $accessList, $gracePeriod, $sslOffloadedHeader, + DirectoryList $directoryList, $designExceptions = [] ) { $this->backendHost = $backendHost; @@ -76,6 +84,7 @@ public function __construct( $this->vclTemplateLocator = $vclTemplateLocator; $this->sslOffloadedHeader = $sslOffloadedHeader; $this->designExceptions = $designExceptions; + $this->directoryList = $directoryList; } /** @@ -101,6 +110,7 @@ private function getReplacements() return [ '/* {{ host }} */' => $this->getBackendHost(), '/* {{ port }} */' => $this->getBackendPort(), + '/* {{ health_check }} */' => $this->getHealthCheck(), '/* {{ ips }} */' => $this->getTransformedAccessList(), '/* {{ design_exceptions_code }} */' => $this->getRegexForDesignExceptions(), // http headers get transformed by php `X-Forwarded-Proto: https` @@ -228,4 +238,18 @@ private function getDesignExceptions() { return $this->designExceptions; } + + /** + * Check if document root contains pub + * + * @return string + */ + private function getHealthCheck() + { + if (strpos($this->directoryList->getRoot(), 'pub') === false) { + return '/pub/health_check.php'; + } else { + return '/health_check.php'; + } + } } diff --git a/app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php b/app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php index 94d432a84574f..88c1d14925007 100644 --- a/app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php +++ b/app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php @@ -102,6 +102,7 @@ protected function setUp() null, 'X_Forwarded_Proto: https' ], + [ \Magento\PageCache\Model\Config::XML_VARNISH_PAGECACHE_GRACE_PERIOD, \Magento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT, @@ -115,7 +116,9 @@ protected function setUp() $this->moduleReader = $this->createMock(\Magento\Framework\Module\Dir\Reader::class); $this->serializerMock = $this->createMock(Json::class); - /** @var \PHPUnit_Framework_MockObject_MockObject $vclTemplateLocator */ + /** + * @var \PHPUnit_Framework_MockObject_MockObject $vclTemplateLocator + */ $vclTemplateLocator = $this->getMockBuilder(\Magento\PageCache\Model\Varnish\VclTemplateLocator::class) ->disableOriginalConstructor() ->setMethods(['getTemplate']) @@ -123,7 +126,15 @@ protected function setUp() $vclTemplateLocator->expects($this->any()) ->method('getTemplate') ->will($this->returnValue(file_get_contents(__DIR__ . '/_files/test.vcl'))); - /** @var \PHPUnit_Framework_MockObject_MockObject $vclTemplateLocator */ + /** + * @var \PHPUnit_Framework_MockObject_MockObject $directoryList + */ + $directoryList = $this->getMockBuilder(\Magento\Framework\App\Filesystem\DirectoryList::class) + ->disableOriginalConstructor() + ->getMock(); + /** + * @var \PHPUnit_Framework_MockObject_MockObject $vclTemplateLocator + */ $vclGeneratorFactory = $this->getMockBuilder(\Magento\PageCache\Model\Varnish\VclGeneratorFactory::class) ->disableOriginalConstructor() ->setMethods(['create']) @@ -139,15 +150,20 @@ protected function setUp() $vclGeneratorFactory->expects($this->any()) ->method('create') ->with($expectedParams) - ->will($this->returnValue(new \Magento\PageCache\Model\Varnish\VclGenerator( - $vclTemplateLocator, - 'example.com', - '8080', - explode(',', '127.0.0.1,192.168.0.1,127.0.0.2'), - 120, - 'X_Forwarded_Proto: https', - [['regexp' => '(?i)pattern', 'value' => 'value_for_pattern']] - ))); + ->will( + $this->returnValue( + new \Magento\PageCache\Model\Varnish\VclGenerator( + $vclTemplateLocator, + 'example.com', + '8080', + explode(',', '127.0.0.1,192.168.0.1,127.0.0.2'), + 120, + 'X_Forwarded_Proto: https', + $directoryList, + [['regexp' => '(?i)pattern', 'value' => 'value_for_pattern']] + ) + ) + ); $this->config = $objectManager->getObject( \Magento\PageCache\Model\Config::class, [ diff --git a/app/code/Magento/PageCache/etc/varnish4.vcl b/app/code/Magento/PageCache/etc/varnish4.vcl index 6de6b4e917044..8c3d775c97d90 100644 --- a/app/code/Magento/PageCache/etc/varnish4.vcl +++ b/app/code/Magento/PageCache/etc/varnish4.vcl @@ -9,7 +9,7 @@ backend default { .port = "/* {{ port }} */"; .first_byte_timeout = 600s; .probe = { - .url = "/pub/health_check.php"; + .url = "/* {{ health_check }} */"; .timeout = 2s; .interval = 5s; .window = 10; @@ -63,7 +63,7 @@ sub vcl_recv { } # Bypass health check requests - if (req.url ~ "/pub/health_check.php") { + if (req.url ~ "/* {{ health_check }} */") { return (pass); } diff --git a/app/code/Magento/PageCache/etc/varnish5.vcl b/app/code/Magento/PageCache/etc/varnish5.vcl index 4505e74629714..8cf3b4a8d4db8 100644 --- a/app/code/Magento/PageCache/etc/varnish5.vcl +++ b/app/code/Magento/PageCache/etc/varnish5.vcl @@ -10,7 +10,7 @@ backend default { .port = "/* {{ port }} */"; .first_byte_timeout = 600s; .probe = { - .url = "/pub/health_check.php"; + .url = "/* {{ health_check }} */"; .timeout = 2s; .interval = 5s; .window = 10; @@ -64,7 +64,7 @@ sub vcl_recv { } # Bypass health check requests - if (req.url ~ "/pub/health_check.php") { + if (req.url ~ "/* {{ health_check }} */") { return (pass); } diff --git a/app/code/Magento/PageCache/etc/varnish6.vcl b/app/code/Magento/PageCache/etc/varnish6.vcl index b43c8a77bca74..257d0c861e8fd 100644 --- a/app/code/Magento/PageCache/etc/varnish6.vcl +++ b/app/code/Magento/PageCache/etc/varnish6.vcl @@ -10,7 +10,7 @@ backend default { .port = "/* {{ port }} */"; .first_byte_timeout = 600s; .probe = { - .url = "/pub/health_check.php"; + .url = "/* {{ health_check }} */"; .timeout = 2s; .interval = 5s; .window = 10; @@ -64,7 +64,7 @@ sub vcl_recv { } # Bypass health check requests - if (req.url ~ "/pub/health_check.php") { + if (req.url ~ "/* {{ health_check }} */") { return (pass); } diff --git a/dev/tests/integration/testsuite/Magento/PageCache/Model/ConfigTest.php b/dev/tests/integration/testsuite/Magento/PageCache/Model/ConfigTest.php index b72d022121ae2..de4d2f441a28c 100644 --- a/dev/tests/integration/testsuite/Magento/PageCache/Model/ConfigTest.php +++ b/dev/tests/integration/testsuite/Magento/PageCache/Model/ConfigTest.php @@ -31,7 +31,9 @@ protected function setUp() $this->returnValue(file_get_contents(__DIR__ . '/_files/test.vcl')) ); - /** @var \PHPUnit_Framework_MockObject_MockObject $vclTemplateLocator */ + /** + * @var \PHPUnit_Framework_MockObject_MockObject $vclTemplateLocator + */ $vclTemplateLocator = $this->getMockBuilder(\Magento\PageCache\Model\Varnish\VclTemplateLocator::class) ->disableOriginalConstructor() ->setMethods(['getTemplate']) @@ -40,7 +42,16 @@ protected function setUp() ->method('getTemplate') ->will($this->returnValue(file_get_contents(__DIR__ . '/_files/test.vcl'))); - /** @var \PHPUnit_Framework_MockObject_MockObject $vclTemplateLocator */ + /** + * @var \PHPUnit_Framework_MockObject_MockObject $directoryList + */ + $directoryList = $this->getMockBuilder(\Magento\Framework\App\Filesystem\DirectoryList::class) + ->disableOriginalConstructor() + ->getMock(); + + /** + * @var \PHPUnit_Framework_MockObject_MockObject $vclTemplateLocator + */ $vclGeneratorFactory = $this->getMockBuilder(\Magento\PageCache\Model\Varnish\VclGeneratorFactory::class) ->disableOriginalConstructor() ->setMethods(['create']) @@ -56,15 +67,20 @@ protected function setUp() $vclGeneratorFactory->expects($this->any()) ->method('create') ->with($expectedParams) - ->will($this->returnValue(new \Magento\PageCache\Model\Varnish\VclGenerator( - $vclTemplateLocator, - 'example.com', - '8080', - explode(',', '127.0.0.1,192.168.0.1,127.0.0.2'), - 1234, - 'X-Forwarded-Proto', - json_decode('{"_":{"regexp":"\/firefox\/i","value":"Magento\/blank"}}', true) - ))); + ->will( + $this->returnValue( + new \Magento\PageCache\Model\Varnish\VclGenerator( + $vclTemplateLocator, + 'example.com', + '8080', + explode(',', '127.0.0.1,192.168.0.1,127.0.0.2'), + 1234, + 'X-Forwarded-Proto', + $directoryList, + json_decode('{"_":{"regexp":"\/firefox\/i","value":"Magento\/blank"}}', true) + ) + ) + ); $this->config = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create( \Magento\PageCache\Model\Config::class, [ From eda2e372ee401255b23d3097b63c1aae40be05d7 Mon Sep 17 00:00:00 2001 From: torhoehn Date: Thu, 7 Nov 2019 18:39:30 +0100 Subject: [PATCH 2/6] fix constructor params --- app/code/Magento/PageCache/Model/Varnish/VclGenerator.php | 6 +++--- app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php | 4 ++-- .../testsuite/Magento/PageCache/Model/ConfigTest.php | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php b/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php index 7ee3299b219f5..6805100aa461a 100644 --- a/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php +++ b/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php @@ -64,8 +64,8 @@ class VclGenerator implements VclGeneratorInterface * @param array $accessList * @param int $gracePeriod * @param string $sslOffloadedHeader - * @param DirectoryList $directoryList * @param array $designExceptions + * @param DirectoryList $directoryList */ public function __construct( VclTemplateLocatorInterface $vclTemplateLocator, @@ -74,8 +74,8 @@ public function __construct( $accessList, $gracePeriod, $sslOffloadedHeader, - DirectoryList $directoryList, - $designExceptions = [] + $designExceptions = [], + DirectoryList $directoryList ) { $this->backendHost = $backendHost; $this->backendPort = $backendPort; diff --git a/app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php b/app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php index 88c1d14925007..8802698329c53 100644 --- a/app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php +++ b/app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php @@ -159,8 +159,8 @@ protected function setUp() explode(',', '127.0.0.1,192.168.0.1,127.0.0.2'), 120, 'X_Forwarded_Proto: https', - $directoryList, - [['regexp' => '(?i)pattern', 'value' => 'value_for_pattern']] + [['regexp' => '(?i)pattern', 'value' => 'value_for_pattern']], + $directoryList ) ) ); diff --git a/dev/tests/integration/testsuite/Magento/PageCache/Model/ConfigTest.php b/dev/tests/integration/testsuite/Magento/PageCache/Model/ConfigTest.php index de4d2f441a28c..9db76ef9afc09 100644 --- a/dev/tests/integration/testsuite/Magento/PageCache/Model/ConfigTest.php +++ b/dev/tests/integration/testsuite/Magento/PageCache/Model/ConfigTest.php @@ -76,8 +76,8 @@ protected function setUp() explode(',', '127.0.0.1,192.168.0.1,127.0.0.2'), 1234, 'X-Forwarded-Proto', - $directoryList, - json_decode('{"_":{"regexp":"\/firefox\/i","value":"Magento\/blank"}}', true) + json_decode('{"_":{"regexp":"\/firefox\/i","value":"Magento\/blank"}}', true), + $directoryList ) ) ); From 88f2927e53a49a8c49186f4f822482652462f4ff Mon Sep 17 00:00:00 2001 From: torhoehn Date: Mon, 18 Nov 2019 22:19:38 +0100 Subject: [PATCH 3/6] introduce new parameter as optional parameter --- app/code/Magento/PageCache/Model/Varnish/VclGenerator.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php b/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php index 6805100aa461a..b0aac36132960 100644 --- a/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php +++ b/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php @@ -75,7 +75,7 @@ public function __construct( $gracePeriod, $sslOffloadedHeader, $designExceptions = [], - DirectoryList $directoryList + ?DirectoryList $directoryList = null ) { $this->backendHost = $backendHost; $this->backendPort = $backendPort; @@ -84,7 +84,8 @@ public function __construct( $this->vclTemplateLocator = $vclTemplateLocator; $this->sslOffloadedHeader = $sslOffloadedHeader; $this->designExceptions = $designExceptions; - $this->directoryList = $directoryList; + $this->directoryList = $directoryList ?: + \Magento\Framework\App\ObjectManager::getInstance()->get(DirectoryList::class); } /** From e276863e225bba98477258c6f57e7bc7e0925b11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torben=20Ho=CC=88hn?= Date: Wed, 29 Jan 2020 18:36:28 +0100 Subject: [PATCH 4/6] get document root out of request server vars --- .../PageCache/Model/Varnish/VclGenerator.php | 32 +++++++++---------- .../PageCache/Test/Unit/Model/ConfigTest.php | 16 +++++++--- .../Magento/PageCache/Model/ConfigTest.php | 14 +++++--- 3 files changed, 37 insertions(+), 25 deletions(-) diff --git a/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php b/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php index b0aac36132960..4307901afe34c 100644 --- a/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php +++ b/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php @@ -3,10 +3,11 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ +declare(strict_types=1); namespace Magento\PageCache\Model\Varnish; -use Magento\Framework\App\Filesystem\DirectoryList; +use Magento\Framework\App\RequestInterface; use Magento\PageCache\Model\VclGeneratorInterface; use Magento\PageCache\Model\VclTemplateLocatorInterface; @@ -51,21 +52,21 @@ class VclGenerator implements VclGeneratorInterface private $designExceptions; /** - * @var DirectoryList + * @var RequestInterface|null */ - private $directoryList; + private $request; /** * VclGenerator constructor. * * @param VclTemplateLocatorInterface $vclTemplateLocator - * @param string $backendHost - * @param int $backendPort - * @param array $accessList - * @param int $gracePeriod - * @param string $sslOffloadedHeader - * @param array $designExceptions - * @param DirectoryList $directoryList + * @param string $backendHost + * @param int $backendPort + * @param array $accessList + * @param int $gracePeriod + * @param string $sslOffloadedHeader + * @param array $designExceptions + * @param RequestInterface|null $request */ public function __construct( VclTemplateLocatorInterface $vclTemplateLocator, @@ -75,7 +76,7 @@ public function __construct( $gracePeriod, $sslOffloadedHeader, $designExceptions = [], - ?DirectoryList $directoryList = null + ?RequestInterface $request = null ) { $this->backendHost = $backendHost; $this->backendPort = $backendPort; @@ -84,8 +85,7 @@ public function __construct( $this->vclTemplateLocator = $vclTemplateLocator; $this->sslOffloadedHeader = $sslOffloadedHeader; $this->designExceptions = $designExceptions; - $this->directoryList = $directoryList ?: - \Magento\Framework\App\ObjectManager::getInstance()->get(DirectoryList::class); + $this->request = $request ?: \Magento\Framework\App\ObjectManager::getInstance()->get(RequestInterface::class); } /** @@ -247,10 +247,10 @@ private function getDesignExceptions() */ private function getHealthCheck() { - if (strpos($this->directoryList->getRoot(), 'pub') === false) { + if (strpos($this->request->getServer('DOCUMENT_ROOT'), 'pub') === false) { return '/pub/health_check.php'; - } else { - return '/health_check.php'; } + + return '/health_check.php'; } } diff --git a/app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php b/app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php index 8802698329c53..39fbe8386b2d8 100644 --- a/app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php +++ b/app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php @@ -3,6 +3,8 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ +declare(strict_types=1); + namespace Magento\PageCache\Test\Unit\Model; use Magento\Framework\Serialize\Serializer\Json; @@ -127,11 +129,15 @@ protected function setUp() ->method('getTemplate') ->will($this->returnValue(file_get_contents(__DIR__ . '/_files/test.vcl'))); /** - * @var \PHPUnit_Framework_MockObject_MockObject $directoryList - */ - $directoryList = $this->getMockBuilder(\Magento\Framework\App\Filesystem\DirectoryList::class) + * @var \PHPUnit_Framework_MockObject_MockObject $request + */ + $request = $this->getMockBuilder(\Magento\Framework\App\RequestInterface::class) ->disableOriginalConstructor() - ->getMock(); + ->setMethods(['getServer']) + ->getMockForAbstractClass(); + $request->expects($this->any()) + ->method('getServer') + ->willReturn('/var/www/html/pub'); /** * @var \PHPUnit_Framework_MockObject_MockObject $vclTemplateLocator */ @@ -160,7 +166,7 @@ protected function setUp() 120, 'X_Forwarded_Proto: https', [['regexp' => '(?i)pattern', 'value' => 'value_for_pattern']], - $directoryList + $request ) ) ); diff --git a/dev/tests/integration/testsuite/Magento/PageCache/Model/ConfigTest.php b/dev/tests/integration/testsuite/Magento/PageCache/Model/ConfigTest.php index 9db76ef9afc09..34b653510685a 100644 --- a/dev/tests/integration/testsuite/Magento/PageCache/Model/ConfigTest.php +++ b/dev/tests/integration/testsuite/Magento/PageCache/Model/ConfigTest.php @@ -3,6 +3,8 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ +declare(strict_types=1); + namespace Magento\PageCache\Model; class ConfigTest extends \PHPUnit\Framework\TestCase @@ -43,11 +45,15 @@ protected function setUp() ->will($this->returnValue(file_get_contents(__DIR__ . '/_files/test.vcl'))); /** - * @var \PHPUnit_Framework_MockObject_MockObject $directoryList + * @var \PHPUnit_Framework_MockObject_MockObject $request */ - $directoryList = $this->getMockBuilder(\Magento\Framework\App\Filesystem\DirectoryList::class) + $request = $this->getMockBuilder(\Magento\Framework\App\RequestInterface::class) ->disableOriginalConstructor() - ->getMock(); + ->setMethods(['getServer']) + ->getMockForAbstractClass(); + $request->expects($this->any()) + ->method('getServer') + ->willReturn('/var/www/html/pub'); /** * @var \PHPUnit_Framework_MockObject_MockObject $vclTemplateLocator @@ -77,7 +83,7 @@ protected function setUp() 1234, 'X-Forwarded-Proto', json_decode('{"_":{"regexp":"\/firefox\/i","value":"Magento\/blank"}}', true), - $directoryList + $request ) ) ); From c5db33228d4f7b8e33c4ae9bc0e587e3a33f6ed1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torben=20Ho=CC=88hn?= Date: Mon, 23 Mar 2020 22:36:22 +0100 Subject: [PATCH 5/6] use base url instead of request to check if application is served through pub directory --- .../PageCache/Model/Varnish/VclGenerator.php | 16 ++++++++-------- .../PageCache/Test/Unit/Model/ConfigTest.php | 10 +++++----- .../Magento/PageCache/Model/ConfigTest.php | 10 +++++----- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php b/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php index 4307901afe34c..e649638b41644 100644 --- a/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php +++ b/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php @@ -7,7 +7,7 @@ namespace Magento\PageCache\Model\Varnish; -use Magento\Framework\App\RequestInterface; +use Magento\Framework\UrlInterface; use Magento\PageCache\Model\VclGeneratorInterface; use Magento\PageCache\Model\VclTemplateLocatorInterface; @@ -52,9 +52,9 @@ class VclGenerator implements VclGeneratorInterface private $designExceptions; /** - * @var RequestInterface|null + * @var Url */ - private $request; + private $url; /** * VclGenerator constructor. @@ -66,7 +66,7 @@ class VclGenerator implements VclGeneratorInterface * @param int $gracePeriod * @param string $sslOffloadedHeader * @param array $designExceptions - * @param RequestInterface|null $request + * @param UrlInterface|null $url */ public function __construct( VclTemplateLocatorInterface $vclTemplateLocator, @@ -76,7 +76,7 @@ public function __construct( $gracePeriod, $sslOffloadedHeader, $designExceptions = [], - ?RequestInterface $request = null + UrlInterface $url = null ) { $this->backendHost = $backendHost; $this->backendPort = $backendPort; @@ -85,7 +85,7 @@ public function __construct( $this->vclTemplateLocator = $vclTemplateLocator; $this->sslOffloadedHeader = $sslOffloadedHeader; $this->designExceptions = $designExceptions; - $this->request = $request ?: \Magento\Framework\App\ObjectManager::getInstance()->get(RequestInterface::class); + $this->url = $url ?: \Magento\Framework\App\ObjectManager::getInstance()->get(UrlInterface::class); } /** @@ -245,9 +245,9 @@ private function getDesignExceptions() * * @return string */ - private function getHealthCheck() + private function getHealthCheck() : string { - if (strpos($this->request->getServer('DOCUMENT_ROOT'), 'pub') === false) { + if (strpos($this->url->getBaseUrl(), 'pub') === false) { return '/pub/health_check.php'; } diff --git a/app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php b/app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php index 39fbe8386b2d8..417816849bf53 100644 --- a/app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php +++ b/app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php @@ -131,12 +131,12 @@ protected function setUp() /** * @var \PHPUnit_Framework_MockObject_MockObject $request */ - $request = $this->getMockBuilder(\Magento\Framework\App\RequestInterface::class) + $url = $this->getMockBuilder(\Magento\Framework\UrlInterface::class) ->disableOriginalConstructor() - ->setMethods(['getServer']) + ->setMethods(['getBaseUrl']) ->getMockForAbstractClass(); - $request->expects($this->any()) - ->method('getServer') + $url->expects($this->any()) + ->method('getBaseUrl') ->willReturn('/var/www/html/pub'); /** * @var \PHPUnit_Framework_MockObject_MockObject $vclTemplateLocator @@ -166,7 +166,7 @@ protected function setUp() 120, 'X_Forwarded_Proto: https', [['regexp' => '(?i)pattern', 'value' => 'value_for_pattern']], - $request + $url ) ) ); diff --git a/dev/tests/integration/testsuite/Magento/PageCache/Model/ConfigTest.php b/dev/tests/integration/testsuite/Magento/PageCache/Model/ConfigTest.php index 34b653510685a..e1cdd0e098525 100644 --- a/dev/tests/integration/testsuite/Magento/PageCache/Model/ConfigTest.php +++ b/dev/tests/integration/testsuite/Magento/PageCache/Model/ConfigTest.php @@ -47,12 +47,12 @@ protected function setUp() /** * @var \PHPUnit_Framework_MockObject_MockObject $request */ - $request = $this->getMockBuilder(\Magento\Framework\App\RequestInterface::class) + $url = $this->getMockBuilder(\Magento\Framework\UrlInterface::class) ->disableOriginalConstructor() - ->setMethods(['getServer']) + ->setMethods(['getBaseUrl']) ->getMockForAbstractClass(); - $request->expects($this->any()) - ->method('getServer') + $url->expects($this->any()) + ->method('getBaseUrl') ->willReturn('/var/www/html/pub'); /** @@ -83,7 +83,7 @@ protected function setUp() 1234, 'X-Forwarded-Proto', json_decode('{"_":{"regexp":"\/firefox\/i","value":"Magento\/blank"}}', true), - $request + $url ) ) ); From 64905dba754d8c9d7501d7c90b71bdbe5432cc59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torben=20Ho=CC=88hn?= Date: Thu, 26 Mar 2020 19:39:16 +0100 Subject: [PATCH 6/6] check for base url --- app/code/Magento/PageCache/Model/Varnish/VclGenerator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php b/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php index e649638b41644..15dc962a11182 100644 --- a/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php +++ b/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php @@ -247,7 +247,7 @@ private function getDesignExceptions() */ private function getHealthCheck() : string { - if (strpos($this->url->getBaseUrl(), 'pub') === false) { + if (strpos($this->url->getBaseUrl(), 'pub') !== false) { return '/pub/health_check.php'; }